Linux:列出从磁盘上不再存在的可执行文件运行的所有正在运行的进程?

时间:2015-05-25 11:40:24

标签: linux linux-kernel procfs

我正在尝试列出Linux中从磁盘上不再存在的可执行文件运行的所有正在运行的进程。

从我看过的内容来看,/ proc文件系统包含/ proc / [pid] / exe符号链接。但这只有在可执行文件存在时才会出现。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

取决于内核(或OS? - 我的是3.16.7-21-desktop / OpenSUSE 13.2),它可能非常简单,因为当删除原始exe时链接源会自动重命名 - '(删除了'后缀附加到它:

$ ls -ld /proc/16415/exe
lrwxrwxrwx 1 dancorn at 0 May 25 10:48 /proc/16415/exe -> /tmp/sleep (deleted)

对于没有重命名符号链接的旧版本,如果它也没有删除(它不一定是),它只是一个破损的符号链接,也相对容易检查:

$ python
>>> import os
>>> os.path.realpath('/proc/16415/exe')
'/tmp/sleep (deleted)'
>>> os.path.exists(os.path.realpath('/proc/16415/exe'))
False