在Unix中获取进程命令行的最佳方法

时间:2015-12-01 22:54:26

标签: perl unix

我知道Proc::ProcessTable。我的问题是性能:我需要快速得到结果。使用Proc::ProcessTable,它看起来像这样:

foreach $p (@{$t->table}) {...}

所以我必须对数千个条目进行全面扫描,只是为了通过pid查找进程并获取我感兴趣的信息。这很慢。还有更好的方法吗?

我也知道ps命令,但我正在寻找Perl解决方案。

1 个答案:

答案 0 :(得分:1)

在Linux上,我喜欢阅读/proc/<pid>/cmdline虚拟文件。

$pid = 1234;
open my $fh, '<', "/proc/$pid/cmdline";
my $cmdline = <$fh>;   # rare to see \n in cmdline. Unset $/ if ur paranoid
close $fh;
@cmd = split /\0+/,$cmdline;