Linux
如何通過 /proc 獲取目前執行信號量的程序?
我想知道如何獲取目前執行信號量的程序
/proc
?我想這可能是通過 SysVIPC 子目錄。但我不知道如何使用這個命令。Ubuntu 12.10
我在處理信號量和共享記憶體方面的唯一經驗是使用命令
ipcs
。查看ipcs 手冊頁了解更多詳細資訊。此命令向您顯示哪些程序具有信號量:
$ ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x4d114854 65536 saml 600 8
有了已知的 semid,我們可以查詢有關具有信號量的 PID 的附加資訊(注意有 8 個 - nsems 列):
$ ipcs -s -i 65536 Semaphore Array semid=65536 uid=500 gid=501 cuid=500 cgid=501 mode=0600, access_perms=0600 nsems = 8 otime = Sun May 12 14:44:53 2013 ctime = Wed May 8 22:12:15 2013 semnum value ncount zcount pid 0 1 0 0 0 1 1 0 0 0 2 1 0 0 2265 3 1 0 0 2265 4 1 0 0 0 5 1 0 0 0 6 1 0 0 4390 7 1 0 0 4390
pid 列是這些程序。您可以使用
ps
或查看/proc
文件系統來查找它們,/proc/<pid>
.例如:
$ more /proc/2265/cmdline mono
POSIX 和 SystemV
基於@lgeorget 留下的評論,我深入研究了我的 PID 2265 的
/proc/2265/map
內容,並確實找到了以下/dev/shm
參考:$ grep shm /proc/2265/maps 7fa38e7f6000-7fa38ebdf000 rw-s 00000000 00:11 18517 /dev/shm/mono-shared-500-shared_fileshare-grinchy-Linux-x86_64-40-12-0 7fa38f0ca000-7fa38f0cb000 rw-s 00000000 00:11 18137 /dev/shm/mono.2265 7fa3967be000-7fa3967d3000 rw-s 00000000 00:11 18516 /dev/shm/mono-shared-500-shared_data-grinchy-Linux-x86_64-328-12-0