Há muito a melhorar sobre sua abordagem:
-
Na maioria dos sistemas (se
/proc
não estiver montado comhidepid
), você não precisa do privilégioroot
paraps
. -
Não há necessidade de duas instâncias
grep
apenas para se livrar da primeira na lista de processos. Em vez disso, faça isso:grep '[w]get'
-
Não há uso na entrada de filtragem
grep
paraawk
.awk
pode fazer isso muito bem:awk '/wget/ {print $2}'
(ou, devido aops
problema:awk '/[w]get/ {print $2}'
) -
Em vez de filtrar
ps
output e piping PIDs parakill
, você poderia usar apenaskillall wget
-
Você chamaria
sudo
uma vez porawk
e não uma vez por linha de entrada.
O principal problema em seu primeiro pipeline é o comando awk
: awk '{print $2;sudo kill -STOP $2}'
. Você pode executar comandos externos a partir de awk
, mas não dessa maneira. Você precisa desta função awk
: system(cmd-line)
Se você quiser usar ps
e kill
, faça desta maneira:
kill -STOP $(ps -ef | awk '/[w]get/ {print $2}')