Conte o número de processos com ps -Af

Conte o número de processos com ps -Af

Tenho que contar o número de processos emacs na máquina que estou usando remotamente, usando o comando ps -Af. Por onde eu começo?

Responder1

ps -Afnão é a melhor abordagem.

A fopção é supérflua e pode disparar falso positivo se processos não emacs usarem emacs ou uma string contendo-o como um de seus parâmetros, sem mencionar o caso (improvável) de um usuário chamado emacs.

Eu sugeriria usar este comando mais simples:

pgrep emacs | wc -l

Responder2

você pode fazerps -C emacs --no-heading | wc -l

ps -C commandprocessos de saída por nome de comando

EDITAR: ps --helpé muito interessante

Responder3

Como Hennes disse, você pode usar um " ps -AF | grep emacs | wc -l" para fazer isso. Mas você também terá o próprio comando. Para se livrar desse(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

Responder4

Comece com os primeiros princípios.

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

-A Selecione todos os processos.
-f Faça a listagem em formato completo. Esta opção pode ser combinada com muitas outras opções no estilo UNIX para adicionar colunas adicionais.

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

ps -Af

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

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

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

Isso requer apenas um único canal e lida com elegância com o problema de não retornar o processo de pesquisa em sua contagem.

informação relacionada