如果我有类似下面的 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