linux ps 显示进程从哪里运行

linux ps 显示进程从哪里运行

是否可以使用来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 辅助

这为您提供了流程的层次结构。

相关内容