Acho que está contando o processo wc
, que não será exibido quando a saída de ps
estiver sendo canalizada para um arquivo.
Tente isto:
ps -fu root | egrep -v 'wc|bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' | wc -l
Quando eu uso o comando 'ps', 'egrep' e 'wc' para contar o número de processos, isso me dá um valor incorreto. Estou executando o comando na máquina 'Solaris 9' . Por favor, ajude a entender o problema.
MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND'
UID PID PPID C STIME TTY TIME CMD
root 16267 16171 0 Jan 28 ? 0:18 xyz
root 16269 16171 0 Jan 28 ? 0:07 abc
root 16268 16171 0 Jan 28 ? 0:07 ghi
MyServer $
Somente 4 linhas (3 processos + cabeçalho) exibidas na saída. Mas quando eu uso o comando abaixo, ele retorna a saída como 5
MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' | wc -l
5
Por outro lado, quando faço eco da saída para um arquivo e contamos o número de linhas, isso funciona perfeitamente normal.
MyServer $ ps -fu root | egrep -v 'bash|ksh|ssh|ef|mailx|nohup|defunct|ps|sh|FND' >temp && cat temp | wc -l
4
Tags command-line bash solaris unix