我正在尝试列出Linux中从磁盘上不再存在的可执行文件运行的所有正在运行的进程。
从我看过的内容来看,/ proc文件系统包含/ proc / [pid] / exe符号链接。但这只有在可执行文件存在时才会出现。
有没有办法做到这一点?
答案 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