Há muito a melhorar sobre sua abordagem:
-
Na maioria dos sistemas (se
/procnão estiver montado comhidepid), você não precisa do privilégiorootparaps. -
Não há necessidade de duas instâncias
grepapenas 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
grepparaawk.awkpode fazer isso muito bem:awk '/wget/ {print $2}'(ou, devido aopsproblema:awk '/[w]get/ {print $2}') -
Em vez de filtrar
psoutput e piping PIDs parakill, você poderia usar apenaskillall wget -
Você chamaria
sudouma vez porawke 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}')