Quando você deseja informações sobre processos, a resposta é sempre ps
É simples e ainda assim tem um número ridículo de opções.
Tente este:
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
Deve dar a você o top 10, pelo uso da CPU.
Existe uma opção para o comando linux top
onde eu posso filtrar processos pelo nome?
Por exemplo, eu só quero monitorar processos python (existem vários deles), e eu gostaria de fazer algo como top -option "python"
ou algo assim.
Isso aproxima a saída de top
:
watch 'ps axo pid,user,pri,nice,vsz,rsz,size,s,pcpu,pmem,time,cmd|grep "[p]ython\|PID USER"'
Você sempre pode fazer "top | grep python", mas eu estou supondo que você quer algo mais dinâmico
Minhas habilidades em Perl são básicas, mas para obter um Top real filtrado por nome, salve este código em um arquivo chamado 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");
Uso: topn.pl -n FOO c 2
onde FOO é o nome do processo a ser grep. O restante dos argumentos são passados para o topo.
Top aceita no máximo 20 PID como argumentos.