Dengan menggunakan flock
, beberapa proses dapat memiliki kunci bersama pada saat yang sama, atau menunggu untuk mendapatkan kunci tulis. Bagaimana cara saya mendapatkan daftar proses ini?
Yaitu, untuk file X yang diberikan, idealnya untuk menemukan id proses dari setiap proses yang menahan, atau sedang menunggu, kunci pada file tersebut. Ini akan menjadi awal yang sangat baik meskipun hanya untuk mendapatkan jumlah proses menunggu kunci.
lsof
pendekatan yang disarankan Joel Davis.lslocks
membaca/proc/locks
, dalam keadaan darurat Anda dapat membacanya secara langsung sendiri, dengan peringatan bahwa file diidentifikasi oleh perangkat dan inode daripada nama. Karena Anda tahu file itu, seharusnya tidak menjadi masalah. Entri yang diblokir memiliki->
awalan sebelum kolom jenis kunci (sehingga menambahkan kolom ke baris itu).Dua kemungkinan:
lsof
(preferensi saya) ataulslk
(khusus untuk kunci file):Output lslk adalah self-expanatory tetapi
lsof
menempatkan deskripsi kunci di kolom "FD" (yang di10uW
atas). Dari halaman manual:Jadi kolom "FD" di
lsof
atas terurai menjadi:10
Deskriptor literal dari file terbuka ini. Apa yang ditautkan oleh/proc/1650/fd/10
u
File terbuka untuk membaca dan menulisW
Program memiliki kunci tulis pada file.sumber
flock
! = mutex. Grep Anda akan kehilangan kunci seperti yang ada di pos (belum lagi bidang pertama adalah nama program ...)Ia dapat membantu melihat daftar file. di sini adalah cara untuk melihat file yang terkunci.
sumber
dalam kasus
lsof
itu sendiri hilang pada sistem,ls /proc/*/fd/* | grep LOCK_FILE_NAME
harus memberikan informasi yang sama.sumber