在 linux 上查找进程开始的位置

bca*_*asp 4 linux process

如果我从 ps 得到如下输出,有没有办法确定“blah”在文件系统上的位置?对于我的特殊情况, -p 指定应用程序应该运行的端口。

user 22913 22470  0 09:58 ?        00:00:06 ./blah -p 12345
Run Code Online (Sandbox Code Playgroud)

我的问题基本上是在给定应用程序的 PID 或端口的情况下是否可以找到可执行文件的位置。使用的发行版是 Redhat。

Bar*_*rim 6

这些是否提供信息?

ps -ef

ps -eLf

ps轴

或者可能

ps -o cmd= -p $PID

这可能更有用:

readlink -f /proc/$PID/exe

?


rap*_*ink 5

就像巴特建议的那样,

readlink -f /proc/$PID/exe
Run Code Online (Sandbox Code Playgroud)

应该给你你的答案。


Chr*_*rel 5

要建立在 readlink 的东西上,另一种方法可能是readlink -f /proc/$PID/cwd. 这将显示进程的当前工作目录,如果您执行了 bash 脚本,这会很方便,因为 exe 链接是 /bin/bash,参数为 ./blah。

作为更多随机信息,您可以直接 cd 到 /proc/$PID。如前所述,将有 cwd 和 exe 的符号链接,以及该进程根目录的位置(如果 chroot 很有用) ls -l将显示它们指向的位置,这本质上是 readlink 所做的。