Contar o número de processos com ps -Af

2

Eu tenho que contar o número de processos do emacs na máquina que estou usando remotamente, usando o comando ps -Af. Onde eu começo mesmo?

    
por user2259082 08.05.2013 / 11:23

4 respostas

4

ps -Af não é a melhor abordagem.

A opção f é supérflua e pode desencadear resultados falso-positivos se processos que não sejam do emacs usarem o emacs ou uma cadeia que os contenha como um de seus parâmetros, sem mencionar o caso (improvável) de um usuário chamado emacs.

Sugiro usar este comando mais simples:

pgrep emacs | wc -l
    
por 08.05.2013 / 13:15
2

Como Hennes disse que você pode usar um " ps -AF | grep emacs | wc -l " para fazer isso. Mas você terá o próprio comando lá também. Para se livrar deste (s) comando (s) você pode usar um " grep -v " (ou --inverted-match ) para filtrar os comandos que você não deseja contar. Então ficaria assim: ps -AF | grep emacs | grep -v grep | wc -l

    
por 08.05.2013 / 11:43
2

você pode fazer ps -C emacs --no-heading | wc -l

ps -C command output processa por nome de comando

EDIT: ps --help é muito interessante

    
por 08.05.2013 / 11:55
0

Comece com os primeiros princípios.

Comece definindo o que exatamente o comando que você foi solicitado a usar faz e como as opções especificadas ( -Af ) funcionam. Para fazer isso, leia man ps :

-A Select all processes.
-f Do full-format listing. This option can be combined with many other UNIX-style options to add additional columns.

Portanto, seu ponto de partida é a saída de todos os processos em execução para o usuário, listados em formato completo. Execute o comando para ver a saída completa antes de tentar realizar qualquer processamento:

ps -Af

Para contar os processos emacs , você precisará canalizar a saída por meio de uma ferramenta de preenchimento para processar a saída e / ou contar as respectivas correspondências. grep é uma boa opção, mas para eficiência e simplicidade, usaria awk :

ps -Af | awk '/emacs/ && !/awk/ { a++ } END { print a }'

Isso pesquisa o padrão /emacs/ , exclui o padrão da própria pesquisa, !/awk/ , incrementa as correspondências { a++ } e imprime o total { print a } .

Isso requer apenas um único canal e lida elegantemente com a questão de não retornar o processo de pesquisa em sua contagem.

    
por 08.05.2013 / 20:29

Tags