Aqui estão alguns exemplos para encontrar pids de processos chamados "apache2". Existem pequenas diferenças (novas linhas na saída) entre estas e pidof
, mas deveriam funcionar da mesma maneira, em pipelines, etc.
Usando pidof
:
$ pidof apache2
31751 31750 31749 31748 31747 31489 31488 31487 31486 31485 1500
Nova linha separada:
$ ps aux | grep apache2 | grep -v grep | awk -n '{print $2}'
1500
31485
31486
31487
31488
31489
31747
31748
31749
31750
31751
Espaço separado:
$ ps aux | grep apache2 | grep -v grep | awk -n '{printf $2" "}'
1500 31485 31486 31487 31488 31489 31747 31748 31749 31750 31751
Eu fiz alguns timings idiotas dos comandos acima.
$ date +%T:%N; pidof apache2 ; date +%T:%N
17:06:05:627088798
31751 31750 31749 31748 31747 31489 31488 31487 31486 31485 1500
17:06:05:634500908
$ date +%T:%N; ps aux | grep apache2 | grep -v grep | awk -n '{printf $2" "}' ; date +%T:%N
17:06:29:887314682
1500 31485 31486 31487 31488 31489 31747 31748 31749 31750 31751
17:06:29:903997288
pidof: 7,412,110 nanossegundos
ps | grep | awk: 16.682.606 nanossegundos
Na minha máquina, pidof
é carregado mais rápido (conforme esperado).
A saída de pidof
parece ser ordenada de forma inversa, por isso seria a minha alternativa alternativa preferida:
$ ps aux | grep apache2 | grep -v grep | awk -n '{print $2}' | sort -rn
31751
31750
31749
31748
31747
31489
31488
31487
31486
31485
1500