我知道Proc::ProcessTable
。我的问题是性能:我需要快速得到结果。使用Proc::ProcessTable
,它看起来像这样:
foreach $p (@{$t->table}) {...}
所以我必须对数千个条目进行全面扫描,只是为了通过pid查找进程并获取我感兴趣的信息。这很慢。还有更好的方法吗?
我也知道ps
命令,但我正在寻找Perl解决方案。
答案 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;