在 Linux 上查找进程启动的位置

在 Linux 上查找进程启动的位置

如果我有类似下面的 ps 输出,有什么方法可以确定“blah”在文件系统上的位置吗?对于我的特定情况,-p 指定应用程序应在哪个端口上运行。

user 22913 22470  0 09:58 ?        00:00:06 ./blah -p 12345

我的问题基本上是,是否可以根据应用程序的 PID 或端口找到可执行文件的位置。使用的发行版是 Redhat。

答案1

这些能提供任何信息吗?

ps-ef

ps-eLf

ps 轴

或者可能

ps -o cmd=-p $PID

这可能更有用:

读链接-f /proc/$PID/exe

答案2

正如 Bart 所建议的,

readlink -f /proc/$PID/exe

应该给你答案。

答案3

要构建 readlink 内容,另一种方法可能是readlink -f /proc/$PID/cwd。这将显示进程的当前工作目录,如果您执行了 bash 脚本,这将非常方便,因为 exe 链接是 /bin/bash,带有 ./blah 参数。

还有更多随机信息,您可以直接 cd 到 /proc/$PID。如上所述,将有 cwd 和 exe 的符号链接,以及进程根目录的位置(如果 chrooted 则很有用) ls -l将显示它们指向的位置,这实际上是 readlink 正在做的事情。

答案4

sudo /usr/sbin/lsof -p 22913

相关内容