在Linux中,如何查找哪些正在运行的程序的可执行文件已被删除?

在Linux中,如何查找哪些正在运行的程序的可执行文件已被删除?

在我的服务器上,我在生成的列表中看到了一个正在运行的进程ps aux。使用这些选项ps可以显示完整的命令。

检查命令得知可执行文件已被删除。

有没有简单的方法来找到所有这些过程?

答案1

如果你的find支持-ls,并且有一些已删除的可执行文件正在运行,那么这个命令

sudo find /proc -name exe ! -path "*/task/*" -ls 2>/dev/null | grep ' (deleted)$'

可能会生成如下结尾的一行:

… /proc/9956/exe -> /path/to/executable\ (deleted)

这意味着具有 PID 的进程9956正在执行/path/to/executable,现已被删除。

笔记:

  • -lsPOSIX 不要求这样做。您find可能不支持它,或者它可能支持它,但会以不同的格式生成输出。
  • 名为“正在运行的现有可执行文件”的条目anything (deleted)将产生误报。

相关内容