A classificação da saída de ps não funciona

3

Quero classificar a saída do seguinte comando com base em pcpu :

ps -p 29492 -L -o pid,tid,psr,pcpu

Eu tentei o seguinte:

ps -p 29492 -L -o pid,tid,psr,pcpu --sort=pcpu

Mas parece que não funciona. Como posso consertar isso?

    
por Meysam 14.12.2015 / 09:46

1 resposta

6

É provável que, na sua implementação de ps , a classificação se aplique apenas a processos, não a threads (consulte fancy_spew() em procps ' display.c ). Tanto quanto eu posso dizer, se você quiser classificar tópicos você precisa pós-processar a saída; por exemplo,

ps -p 29492 -L -o pid,tid,psr,pcpu | sort -n -k4,4

mas a linha do cabeçalho é misturada na saída. Se você quiser manter a linha de cabeçalho, pode retirá-la e imprimi-la separadamente:

ps -p 29492 -L -o pid,tid,psr,pcpu | sed -e1\!b -e'w /dev/fd/2' -ed | sort -n -k4,4

Você também pode simplesmente descartar a linha de cabeçalho especificando valores de cabeçalho em branco para todos os seletores de saída:

ps -p 29492 -L -o pid=,tid=,psr=,pcpu= | sort -n -k4,4

Em todos esses casos, você pode inverter a classificação adicionando -r aos parâmetros sort . A ordem de classificação pode ser afetada por LC_NUMERIC ou LC_ALL ; definir LC_ALL=C classificará os valores com um ponto decimal . corretamente.

    
por 14.12.2015 / 10:14

Tags