Files
如何列出程序鎖定文件?
使用
flock
,多個程序可以同時擁有一個共享鎖,或者等待獲取寫鎖。如何獲得這些程序的列表?也就是說,對於給定的文件 X,理想情況下要找到每個程序的程序 ID,該程序 id 持有或等待該文件的鎖定。這將是一個非常好的開始,儘管只是為了計算等待鎖的程序數。
lslocks
,來自util-linux 包,正是這樣做的。在該
MODE
列中,等待鎖定的程序將用 標記*
。
兩種可能性:(
lsof
我的偏好)或lslk
(特別是文件鎖):[root@policyServer ~]# lslk | grep "master.lock" SRC PID DEV INUM SZ TY M ST WH END LEN NAME master 1650 253,0 12423 33 w 0 0 0 0 0 /var/lib/postfix/master.lock [root@policyServer ~]# lsof | grep "master.lock" master 1650 root 10uW REG 253,0 33 12423 /var/lib/postfix/master.lock
lslk 的輸出是不言自明的,但
lsof
將鎖描述放在“FD”列(在10uW
上面)中。從手冊頁:The mode character is followed by one of these lock characters, describing the type of lock applied to the file: N for a Solaris NFS lock of unknown type; r for read lock on part of the file; R for a read lock on the entire file; w for a write lock on part of the file; W for a write lock on the entire file; u for a read and write lock of any length; U for a lock of unknown type; x for an SCO OpenServer Xenix lock on part of the file; X for an SCO OpenServer Xenix lock on the entire file; space if there is no lock.
所以上面的“FD”列
lsof
分解為:
10
此打開文件的文字描述符。與什麼相關聯/proc/1650/fd/10
u
文件已打開以供讀寫
W
程序對文件有寫鎖。