Monitorando processos do linux

3

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.

    
por mgs 08.02.2010 / 23:35

4 respostas

6

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.

    
por 09.02.2010 / 00:00
2

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"'
    
por 09.02.2010 / 00:32
0

Você sempre pode fazer "top | grep python", mas eu estou supondo que você quer algo mais dinâmico

    
por 08.02.2010 / 23:42
0

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.

    
por 09.02.2010 / 01:21

Tags