$ cat /proc/locks 1:POSIX 建议写 458 03:07:133880 0 EOF 2:FLOCK ADVISORY WRITE 404 03:07:133879 0 EOF
这些字段是:序号(1)、类型(2)、模式(3)、类型(4)、pid(5)、maj:min:inode(6) start(7) end(8)。
问题:如何找到被锁定的对应文件?
sudo find -L /proc/458/fd -maxdepth 1 -inum 133880 -print -exec readlink {} \;
Run Code Online (Sandbox Code Playgroud)
要获得所有这些:
while IFS=': ' read x x x x p x x i x; do
sudo find -L "/proc/$p/fd" -maxdepth 1 -inum "$i" -exec readlink {} \; -quit
done < /proc/locks
Run Code Online (Sandbox Code Playgroud)
有时,pid
被引用的进程/proc/lock
会死掉。您可以将"/proc/$p/fd"
以上更改/proc/*/fd
为在所有进程 fds 中查找它们。
(请注意,这是一个近似值,因为我们只检查 inode 编号,而不是设备编号,但我们选择错误文件(不同 fs 上的相同 inum)的可能性非常小)。