Linux 命令中是否有一个选项top
可以让我按名称过滤进程?
例如,我只想监控 python 进程(有几个),并且我想做类似的事情top -option "python"
或类似的事情。
答案1
当你需要有关流程的信息时,答案总是ps
它很简单,但却拥有多得令人难以置信选项。
尝试一下这个:
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
应该会根据 CPU 使用率给你排名前 10 位。
答案2
这近似于的输出top
:
watch 'ps axo pid,user,pri,nice,vsz,rsz,size,s,pcpu,pmem,time,cmd|grep "[p]ython\|PID USER"'
答案3
你可以随时执行“top | grep python”,但我假设你想要一些更动态的东西
答案4
我的 Perl 技能很基础,但为了获得按名称过滤的真正 Top,请将此代码保存到名为 topn.pl 的文件中:
#!/usr/bin/perl
shift @ARGV;
$name = shift @ARGV;
@pids = `/bin/ps -eo pid,user,args | /bin/grep $name | /bin/grep -v grep | /usr/bin/tr -s " " `;
$arg = "";
foreach (@pids) {
$_ =~ /^\s([0-9]+)\s/;
$pid = $1;
$arg .= " p $pid " if $pid != "";
}
exec("/usr/bin/top $arg @ARGV");
用法:topn.pl -n FOO c 2
其中 FOO 是要 grep 的进程名称。其余参数传递给 top。
Top 最多接受 20 个 PID 作为参数。