PID

grep -v

Written by  on Oktober 29, 2015

Wie sucht man ob ein Prozess läuft?

# ps aux | grep smb
root       699  0.0  0.4  28800  4036 ?        Ss   Oct22   0:43 smbd -F
root       768  0.0  0.1  28800  1604 ?        S    Oct22   0:04 smbd -F
root     21411  0.0  0.0   4680   772 pts/0    S+   18:06   0:00 grep --color=auto smb

Das ist zuviel Output, weil auch der grep-Prozess selber angezeigt wird. Dafür gibt es eine einfältige Lösung:

# ps aux | grep smb | grep -v grep
root       699  0.0  0.4  28800  4036 ?        Ss   Oct22   0:43 smbd -F
root       768  0.0  0.1  28800  1604 ?        S    Oct22   0:05 smbd -F

Aber wie geht es besser?

ps aux | grep [s]mb
root       699  0.0  0.4  28800  4036 ?        Ss   Oct22   0:43 smbd -F
root       768  0.0  0.1  28800  1604 ?        S    Oct22   0:05 smbd -F

Warum funktioniert das? Ganz einfach, weil in der Prozessliste jetzt der String „smb“ nicht mehr vorkommt beim grep-Befehl, sondern der String „[s]mb“. Gesucht wird von dem Befehl aber trotzdem nach „smb“.
Braucht man nur die PID vom Prozess geht es aber einfacher:

# pgrep smb
699
768

Soll das ganze nur zum Beenden der Prozesse genutzt werden, braucht man gar keinen grep mehr.

# killall smbd