是否可以使用来ps
确定进程从哪里运行?
我有两个应用程序,它们完全相同,并且同时在目录中运行,例如/app1/start.sh
和/app2/start.sh
。如果我运行ps -ef
,我无法区分两者
使用ps
(或替代),我如何知道 PID 123 属于 app1?
答案1
一些例子:
当前进程列表以树状层次结构和宽输出呈现(显示完整的命令行参数并且不在 X 个字符后切断它们)ps -auxwwwf
命令pstree
,显示所有进程及其进程 ID:pstree -ap
或者,如果您只对 PID 感兴趣:pgrep -f app1
将列出app1
与名称、命令行参数或路径中的某处匹配模式的所有进程的 PID。
答案2
还要查看/proc/
文件系统。在/proc/*pid*
其中有:
exe
这是可执行二进制文件的符号链接。对于脚本,这是解释器 (/bin/bash),而不是脚本。cwd
这是指向进程当前目录的符号链接cmdline
这是命令行的 NUL 分隔表示
您还拥有当前文件描述符的列表。我发现它/proc/*pid*/fd/255
在 bash 脚本中很有用 - 它是脚本本身的符号链接。
ps 查看 /proc/ 来查找信息,因此可能有一些神奇的标志符可以显示其中的一些信息 - 查看ps -o
答案3
尝试
ps 辅助
这为您提供了流程的层次结构。