Prozess-ID anhand des Prozessnamens finden
Mit pgrep(1) lässt sich die Prozess-ID eines Prozesses anhand seines Namens herausfinden:
# pgrep syslogd
22758
Mit der -l Option wird neben der Prozess-ID auch der Prozessname angezeigt:
# pgrep -l syslogd
22758 syslogd
Mit der -f Option werden nicht nur die Prozessnamen nach dem Suchbegriff durchsucht, sondern auch die Argumente, die den Prozessen übergeben worden sind:
# pgrep -lf SSL
37342 /usr/local/sbin/httpd -DSSL
37325 /usr/local/sbin/httpd -DSSL
37262 /usr/local/sbin/httpd -DSSL
36630 /usr/local/sbin/httpd -DSSL
So kann man nun die Prozess-ID eines zum Beispiel hängengebliebenen Prozesses herausfinden und dieser kann dann mit kill(1) terminiert werden. Wer ein bisschen mutiger ist, verwendet pkill(1), welcher wie pgrep funktioniert, nur dass nicht die Prozess-ID der gefunden Prozesse ausgegeben, sondern an alle gefundenen Prozesse ein Signal zur Terminierung gesendet wird.
# pgrep -lf vi 2008 vi /home/beat/chruetertee/ideen
# pkill -f vi
# pgrep -lf vi
pkill(1) und pgrep(1) sind sowohl auf FreeBSD als auch auf OpenBSD im Basissystem vorhanden.
Comments
Kool, auf OpenBSD gibts das ja auch :-) Hatte mich schon gewundert, dass da kein 'pidof' gibt. In Zukunft also kill -HUP `pgrep sendmail` ;-)