我在我的linux服务器上有一个争论点。 其中一个进程会访问单个文件,并在相当长的时间(> 60秒)内随机locking文件,从而导致其他问题失败。
有没有办法来检测一个文件被locking了多长时间,并通过哪个过程?
我想你正在寻找的是文件/proc/locks
。 它显示系统中当前的文件locking。 这并不显示文件被locking了多长时间 ,而是显示了哪个进程 。 也许你可以检测到什么时候锁在这个文件中注册并测量经过的时间。 一个例子是这样的:
cat /proc/locks 1: POSIX ADVISORY WRITE 2245 08:06:1182714 1073741824 1073741824 2: POSIX ADVISORY WRITE 2245 08:06:1182714 1073741826 1073742335 3: POSIX ADVISORY WRITE 3058 08:06:10752740 0 0 4: POSIX ADVISORY WRITE 3058 08:06:10752739 0 0 5: POSIX ADVISORY WRITE 2421 08:06:10752766 0 EOF 6: POSIX ADVISORY WRITE 2421 08:06:11142048 0 EOF 7: POSIX ADVISORY WRITE 2421 08:06:9964366 1073741824 1073742335 8: POSIX ADVISORY WRITE 2421 08:06:11142040 0 EOF
哪些列是:
fcntl
创build的, FLOCK
是用flock
创build的。 :
表示locking的文件。 您可以通过查看创build时间戳的方式来告诉locking文件的年龄。 同样的,如果你使用“cat logfile.name”,它经常会拥有创build它的进程ID。