2013-06-11 16 views
10

Voglio terminare tutti i processi degli strumenti in esecuzione. Sto usando questo:Elimina un processo se esiste

sudo killall instruments

Sto usando questo in uno script e, talvolta, il processo non è in esecuzione e si ferma il mio script da dire non ci sono processi con quel nome che eseguono.

Come posso verificare se un determinato processo è in esecuzione? Strumenti nel mio caso.

+2

'ps ax | grep strumenti | grep -v grep | wc -l' sarebbe non- zero se c'è un processo con 'instruments' nel nome. –

risposta

8
sudo killall instruments 2>/dev/null 

non è sufficiente?

+0

"killall" molto utile =) – IvanM

6

È possibile utilizzare pgrep <proc> per la ricerca di un processo chiamato <proc>

if pgrep instruments &> /dev/null ; then sudo killall instruments ; fi
+4

Se stai usando 'pgrep', potrebbe anche usare' pkill' –

+0

@glennjackman, ovviamente, grazie! Ho appena mostrato come si può cercare un processo, uccidere un processo con il suo nome "killall" dovrebbe essere sufficiente e l'OP lo sa. – giordano

19

Se lo script è terminato, è stato molto probabilmente abilitato set -e, per uscire quando un comando non riesce.

Se non vi interessa circa lo stato, si può solo aggiungere || true al comando:

sudo killall instruments || true 
Problemi correlati