2013-06-11 20 views
10

Chcę zabić wszystkie działające procesy instrumentów. Używam tego:Zabij proces, jeśli istnieje

sudo killall instruments

używam tego w skrypcie, a czasami proces nie jest uruchomiony i zatrzymuje mój skrypt mówiąc nie istnieją procesy o tej samej nazwie, które są uruchomione.

Jak mogę sprawdzić, czy dany proces jest uruchomiony? Instrumenty w moim przypadku.

+2

'ps -ax | instrumenty grep | grep -v grep | wc -l' byłoby nie- zero, jeśli w nazwie występuje proces z 'instrumentami'. –

Odpowiedz

8
sudo killall instruments 2>/dev/null 

to za mało?

+0

"killall" bardzo przydatne =) – IvanM

6

Można użyć pgrep <proc> aby wyszukać proces o nazwie <proc>

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

Jeśli używasz 'pgrep', równie dobrze możesz użyć' pkill' –

+0

@glennjackman oczywiście, dziękuję! Właśnie pokazałem, w jaki sposób można poszukiwać procesu, aby zabić proces jego imienia "killall" powinien wystarczyć i OP o tym wie. – giordano

19

Jeśli skrypt jest zakończenie, masz najprawdopodobniej włączone set -e, aby wyjść, gdy komenda nie powiedzie się.

Jeśli nie dbają o statusie, można po prostu dołączyć || true do polecenia:

sudo killall instruments || true