linux ps显示进程从哪里运行

分享于 

2分钟阅读

电脑

 

问题:

是否可能使用 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 将列出与它的名称。命令行 参数或者路径在某处匹配 Pattern app1的进程的所有 pid。


回答 2:

还可以查看 /proc/ 文件系统。 在 /proc/*pid* 中,你有:

  • exe,它是可以执行二进制文件的符号符号。 脚本的情况下,这是解释器 (/bin/bash) 而不是脚本。
  • cwd,它是进程当前目录的符号符号
  • cmdline,它是 命令行的一个NUL分离表示

你还拥有当前文件描述符的列表。 我发现 /proc/*pid*/fd/255 在bash脚本中很有用- 它是脚本本身的符号符号。

ps查看/proc/查找信息,因此可能有一些魔术符号显示其中一些- 看 ps -o


回答 3:

try

ps auxf

这将给出流程的层次结构。



PROC  显示