如何列出正在运行的进程的绝对path?

我最近遇到了一个问题,perl脚本正在消耗服务器资源。 我发现这是一个Perl脚本通过使用“顶”。 但它没有给脚本的path。 也没有“PS”。

是否有可能得到当前运行perl脚本的path? 如果是这样,怎么样?

澄清:我不需要perl二进制文件的path我需要二进制文件正在执行的perl脚本的path

首先从ps auxps -ef (这是第二列)获取pid。 假设是42.然后(以root身份):

 ls -l /proc/42/exe 

要自动获取列表,你可以使用这样的东西:

 for pid in `ps auxwww | grep perl | grep -v grep | awk '{print $2}'`; do ls -l /proc/$pid/exe; done 

您可以随时尝试在文件系统上findPL文件(使用findlocate等)。 如果你有多个同名的PL文件,你就得深入挖掘:如果你的发行版可用,那么dstat就是一个不错的select。