
Já descobri isso no Windows, mas como fazer isso no Linux me escapa:
tasklist /V /NH | find "test test 123"
E então conto o número de linhas não vazias na saída. Isso é muito lento, mas funciona. Agora estou procurando o método Linux para fazer o mesmo.
Ou seja, "teste teste 123" pode ser o título completo do processo, pode começar com ele, pode terminar com ele ou apenas tê-lo no meio. Isso é importante.
Responder1
DR: usarpgrep -cf "test test 123"
O ps
programa listará todos os processos em execução. Especificamente, tente:
ps aux
Agora, você pode simplesmente filtrar essa lista usando grep
para procurar sua string:
ps aux | grep "test test 123"
Isso imprimirá linhas correspondentes. Para contá-los, use grep -c
which imprime o número de linhas correspondentes:
ps aux | grep -c "test test 123"
O problema desta abordagem é que o grep
processo acima também aparecerá nos resultados. Por exemplo, estou editando um arquivo chamado test test 123
, mas se eu executar o comando acima, verei o processo do meu editor de arquivos e o grep
próprio:
$ ps aux | grep "test test 123"
terdon 2461453 22.0 0.2 392944 79796 pts/1 Sl 15:53 0:02 emacs test test 123
terdon 2462354 0.0 0.0 8832 2292 pts/1 S+ 15:53 0:00 grep --color test test 123
Portanto, o grep -c
retornará 2
em vez de 1
:
$ ps aux | grep -c "test test 123"
2
O que nos leva à ferramenta certa para o trabalho, pgrep
. Esta é uma ferramenta projetada especificamente para encontrar processos:
$ pgrep -cf "test test 123"
1
Os -c
meios "contar as correspondências" e os -f
meios "pesquisar toda a linha de comando, não apenas o nome do processo".
O outro truque comum para pular o grep
próprio é usar uma classe de caracteres de um caractere em vez da mesma string para que a grep
linha de comando não contenha a string:
$ ps aux | grep "test test 123"
terdon 2461453 1.2 0.2 392944 79796 pts/1 Sl 15:53 0:02 emacs test test 123
terdon 2476971 0.0 0.0 8832 2236 pts/1 S+ 15:56 0:00 grep --color test test 123
$ ps aux | grep "[t]est test 123"
terdon 2461453 1.2 0.2 392944 79796 pts/1 Sl 15:53 0:02 emacs test test 123
$ ps aux | grep -c "[t]est test 123"
1
Para saber mais sobre esse truque, vejaaqui. Mas isso realmente não é necessário se o seu sistema tiver pgrep
os sistemas Linux.
Responder2
echo $(( $(ps aux | grep "test test 123" | wc -l) - 1))
deveria para o truque