如果我看到一个正在使用ps运行的进程,如何找到可执行文件?


11

如果可以看到正在使用运行的进程ps -e,如何找到启动它的文件?


2
这是什么操作系统?Linux,BSD,Solaris ...
Patrick

linux ...但欢迎使用跨unix解决方案。
interstar

Answers:


15

在Linux上:如果您知道PID,则可以为该文件指定cmdline文件。例如:

cat /proc/PID/cmdline

如果在程序启动后移动了二进制文件,则可能会失败。

而且当然:

lsof -n | grep PID | grep ' txt '

和:

ls -la /proc/PID/exe

这是指向可执行文件的符号链接。


1
请注意,/proc/PID/cmdline该字符没有换行符,因此您可能需要执行cat /proc/PID/cmdline ; echo ''
基思·汤普森

实际上,它使用NUL字符分隔参数,因此您可能需要更详细的说明,例如tr '\0' ' ' < /proc/PID/cmdline ; echo ''
Keith Thompson


0

方法(无lslsofcat在其他答案)为我工作。如果我做:

$ nano test.txt

这是我的赢家:

$ pgrep -f -l test
3074 nano test.txt

或者,为了仅获取PID以便在编程中使用它:

$ pgrep -f test
3074

在Kali Linux v1.0.6(基于Debian)上进行了测试。
与简单方法相比ls,我必须承认它不是一种可移植的解决方案,但至少它可以工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.