Como contar o número de instâncias do processo com o bash?

3

Escrevendo

ps aux | awk '{print }'

Me dá todas as instâncias do processo, mas como eu as contava, existe um comando que faz isso?

    
por adadaae12313412 02.06.2017 / 10:53

3 respostas

4

Como ps aux imprime informações sobre um processo por linha (incluindo um título, que pode ser desativado com a opção --no-heading ).

Portanto, você pode contar facilmente os processos simplesmente contando as linhas dessa saída, usando wc :

ps aux --no-heading | wc -l
    
por Byte Commander 02.06.2017 / 11:02
1

Outras respostas já mencionaram que ps aux adiciona um cabeçalho, então você precisa da opção --no-heading também. O que mais podemos fazer é usar o comando pgrep para obter PIDs de processo e, em seguida, contá-los.

Basicamente, podemos fazer

pgrep '^.*$' | awk 'END{print NR}'

O truque aqui é que END{} bloco de código é sempre executado após o processamento do arquivo, stdin ou pipeline e NR permanece inalterado, que é o "número de registros" ou o número de linhas se for apenas um arquivo ou gasoduto. Quanto a pgrep , estamos apenas combinando qualquer processo com ^.*$ expressão regular, obtendo assim uma lista de todos os PIDs.

E para a contagem de linhas, você pode usar literalmente qualquer método de Como faço para contar linhas de texto? pergunta, não t só tem que ser awk .

    
por Sergiy Kolodyazhnyy 02.06.2017 / 21:14
1

Se você quiser usar awk :

ps aux --no-heading | awk 'END {print NR}'

e se você quiser contar um processo de usuário específico:

ps -u ravexina -f --no-header | wc -l

Como alternativa, você pode verificar o sistema de arquivos /proc :

ls /proc | grep ^[1-9] -c

ou

ls -d /proc/[1-9]* | wc -l
    
por Ravexina 02.06.2017 / 11:09