Devo cercare un determinato processo e uccidere quel processo. Ho scritto un comando come questo:
ps -e | grep dmn | awk '{print $1}' | kill
Dove il nome del processo è dmn
. Ma non sta funzionando. Come posso trovare i processi per nome e kill
loro.
kill $(ps -e | grep dmn | awk '{print $1}')
Nel caso in cui ci siano più processi che si desidera rimuovere, è possibile utilizzare questo:
ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill
Nota: è necessario rimuovere il processo grep stesso dall'output, per questo viene utilizzato grep -v grep
.
Aggiungo solo ad altri, ma mi piace usare la capacità delle caratteristiche regex di awk:
kill $(ps | awk '/dmn/{print $1}')
Se hai il comando pidof
sul tuo sistema (so che shell come ZSH vengono con questo di default, a meno che non mi sbagli), potresti fare qualcosa del genere.
kill -9 $(pidof dmn)
Puoi anche usare killall :
killall dmn
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done
ciao amici .. possiamo farlo usando per ciclo.
"Some search" è qui qualsiasi nome di processo che si desidera cercare, ad esempio "Java", quindi diciamo che il conteggio del processo Java è 200+ quindi uccidere uno ad uno sarà troppo tipico.
quindi puoi usare il comando precedente.
Grazie.
Potresti non aver bisogno di pipe
per questo, se hai il comando pidof
e conosci il nome dell'immagine, l'ho fatto in questo modo:
kill $(pidof synergyc)
$()
Lo capisco perché converte quell'output in una variabile che kill può usare, essenzialmente come farebbe pipe. Più breve e più facile da capire rispetto ad alcune altre opzioni, ma forse anche meno flessibile e più diretto.