我如何获取我只知道 PID 的 perl 脚本的路径?

我如何获取我只知道 PID 的 perl 脚本的路径?

我最近遇到了一个问题,一个 perl 脚本消耗了服务器资源。我使用“top”发现它是一个 perl 脚本。但它没有给出脚本的路径。也没有ps。此外,ps -ef 显示具有该 pid 的进程是/usr/bin/httpd(apache),所以我猜一定是 apache 在提供一些 perl 页面。

如果我只知道正在运行该脚本的 perl 进程的进程 PID,是否可以获取当前正在运行的 perl 脚本的路径?如果可以,怎么做?

澄清一下:我不需要 perl 二进制文件的路径,我需要二进制文件当前正在执行的 perl 脚本的路径。

答案1

您可以执行ps -p $p -o command,其中使用进程的 PID 代替 $p。这将提供完整的命令行。

答案2

在 /proc 中查看进程的 PID。其中有一个文件cmdline

其中包含用于运行脚本的命令。

例如:

$ cat /proc/19433/cmdline
perl/path/to/myscript

实际上,“perl”和“/path...”之间有 \000 (chr(0) / NULL),但 cat 没有显示它。

相关内容