有没有办法获取 Linux 上可执行文件所有正在运行实例的 PID?
答案1
有几种方法可以做到这一点;您可以列出所有进程并找到与您感兴趣的可执行文件名称匹配的进程;或者,您可以列出已打开该特定可执行文件的所有正在运行的进程。
例如:
# list all processes, grep by filename
$ ps -ef | grep firefox
...(lots of output, need to cut/filter)...
# more specific, e.g., maybe there's also /opt/bin/firefox
$ ps -ef | grep /usr/lib/firefox/firefox
....
(注意:在上面的例子中,您需要添加grep -v grep
脚本。添加此示例仅用于基本的探索性分析。)
基本上,内置的做同样事情的示例:
$ pidof firefox
5915 5892 5851 5809 5753 5509
# more specific
$ pidof /usr/lib/firefox/firefox
5915 5892 5851 5809 5753 5509
这也可能无意中列出具有相同名称的不同可执行文件,因此需要谨慎。但它确实有一个非常好的简洁输出,非常适合脚本编写。
最后,一个非常强大的选项是列出打开的文件(lsof {program}
),并找到打开它们的相应进程(可执行文件{program}
在运行时“打开以供读取”):
# note: sudo not always necessary, but might be
$ lsof /usr/lib/firefox/firefox
...