GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengunci File Teks di Linux Menggunakan Perintah kawanan

Sebelum kita menjelajahi teknik/pendekatan mengunci file teks di lingkungan sistem operasi Linux, kita harus terlebih dahulu memahami logika di balik mekanisme penguncian file Linux.

Mekanisme penguncian file Linux membatasi/mengontrol akses file di antara banyak proses. Ketika file teks berhasil dikunci, hanya satu proses yang dapat mengaksesnya pada jadwal waktu tertentu.

Sebelum melanjutkan ke artikel ini, harap dipahami bahwa penguncian file sangat berbeda dengan enkripsi file atau kontrol akses file yang memerlukan frasa sandi atau sandi untuk mengontrol akses pengguna ke file Anda.

Saat file dikunci di lingkungan sistem operasi Linux, peristiwa pengecualian bersama dibuat di mana hanya satu proses yang dapat mengaksesnya pada satu waktu.

Pernyataan Masalah

Sistem operasi Linux akan secara otomatis memblokir upaya tindakan tulis apa pun yang diarahkan ke file terbuka yang sedang ditulis oleh proses lain. Namun, bagaimana jika Anda ingin mencabut izin baca dan/atau tulis yang telah dipanggil oleh proses pertama yang membuka file Anda dan dalam mode tulis? Apakah ada solusi untuk masalah ini?

Selain itu, kami mungkin juga ingin mengunci file kami sehingga tidak ada proses lain yang mengganggu atau mencoba mengganggu status mode tulis yang sudah dimulai. Artikel ini akan memandu kita melalui solusi yang layak untuk mengunci file teks di Linux.

Contoh File Referensi

Agar tutorial ini lebih menarik dan bermanfaat, kita harus memiliki beberapa file teks referensi. Kami akan berkonsentrasi pada file teks di dalam direktori berikut:

Misalnya, mari kita buka file output.txt dan mulai menulis di atasnya.

$ sudo nano output.txt 

Selagi file ini masih terbuka, mari kita coba membukanya dari tab baris perintah lain.

$ sudo nano output.txt 

Anda akan mendapatkan respons berikut:

Tangkapan layar di atas menyampaikan PID (133110 ) dari proses pengerjaan file teks dengan opsi untuk membuka file saat masih dalam mode tulis proses tersebut.

Dengan memasukkan Y dari keyboard kami, kami akan membuka file teks ini dan menyerahkannya ke proses yang berbeda dengan akses mode tulis eksklusif.

Oleh karena itu, modifikasi file oleh pengguna 1 akan mengarah ke perintah berikut pada pengguna 2 saat mencoba menyimpan file.

Instance ini adalah representasi sempurna dari dua pengguna berbeda di jaringan yang bekerja pada satu file.

Mengunci File Teks Menggunakan Utilitas kawanan Linux

Untuk mengatasi masalah ini, kami membutuhkan bantuan flock Linux Linux kegunaan. Sejak util-linux paket host kawanan perintah, itu harus tersedia di hampir semua distribusi OS Linux. Perintah ini mengelola kunci file/direktori tertentu melalui lingkungan baris perintah Linux.

Untuk mengunci file teks di Linux, kami akan merujuk sintaks berikut:

$ flock -x PATH_TO_FILE_TO_LOCK -c COMMAND 

-x pilihannya adalah untuk mendapatkan kunci tulis ke file yang ditargetkan. Mari kita coba mengunci sampel output.txt berkas teks. -c opsi akan memungkinkan kita untuk melewati satu perintah yang didukung Linux mis. perintah kucing .

$ flock -x /home/dnyce/LinuxShellTips_Files/output.txt -c cat

Contoh terminal di atas akan tetap aktif untuk menandakan bahwa file teks telah dikunci.

Jika kita membuka terminal lain (saat terminal instance ini masih berjalan) dan mengeksekusi flock . yang lain perintah pada file yang sama ini, kita harus ditolak aksesnya.

$ flock -w .007 /home/dnyce/LinuxShellTips_Files/output.txt -c echo; /bin/echo $?

1

-w opsi digunakan untuk menyampaikan waktu tunggu .007 detik sebelum kunci ditempatkan pada file teks. Kami kemudian mengeksekusi echo $? untuk menampilkan status keluar dari perintah ini.

Status keluar 0 menyiratkan bahwa perintah berhasil dieksekusi dan status keluar 1 menyiratkan perintah tidak dapat dijalankan karena kesalahan. Dalam hal ini, file teks dikunci oleh proses lain.

Untuk mengonfirmasi lebih lanjut bahwa file teks dikunci, kita dapat menggunakan lslocks perintah untuk mendaftar semua kunci sistem lokal yang aktif.

$ lslocks

Seperti yang Anda lihat, file kami ada.

Membuka Kunci File Teks di Linux

Membatalkan kawanan initial awal perintah (Ctrl+c) atau menutup file teks harus melepaskan kunci sehingga memungkinkan untuk berhasil menjalankan perintah berikut pada terminal sekunder.

$ flock -w .007 /home/dnyce/LinuxShellTips_Files/output.txt -c echo; /bin/echo $?

Status keluar dari 0 menyiratkan bahwa kunci tidak lagi berlaku untuk file teks.

Kami telah mempelajari cara mengunci file teks di Linux sehingga hanya satu proses yang dapat menggunakannya (mode tulis) pada satu waktu. Implementasi artikel ini sangat berguna ketika pengguna yang berbeda di jaringan mengakses satu file.

Selengkapnya tentang kawanan perintah dapat ditemukan di halaman manualnya.

$ man flock

Linux
  1. Cara Menambahkan Teks ke Akhir File di Linux

  2. Cara Menyimpan Output Perintah ke File di Linux

  3. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  1. Cara Menulis Teks Pada Gambar menggunakan Perintah Linux

  2. Cara Reboot Linux Menggunakan Command Line

  3. Buat file dengan menggunakan baris perintah di Linux

  1. Cara Menghitung CRC Checksum di Linux menggunakan Perintah Cksum

  2. Cara membagi iso atau file menggunakan perintah 'split' di Linux

  3. Cara membuat file sparse di Linux menggunakan perintah 'dd'