
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 -Af
não é a melhor abordagem.
A f
opçã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 command
processos 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 emacs
processos, 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.