Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Überprüfen Sie unter Linux, ob der Prozess vorhanden ist

Überprüfen Sie unter Linux, ob der Prozess vorhanden ist

(*-*)浩
(*-*)浩Original
2019-12-28 12:00:525375Durchsuche

Überprüfen Sie unter Linux, ob der Prozess vorhanden ist

Dieses Problem scheint sehr einfach zu sein, einfach „ps -ef | grep xx“ und es wird erledigt! Natürlich können Sie dies tun, aber wenn wir die Leistung berücksichtigen, ist dies möglicherweise keine gute Idee.

Angenommen, wir möchten nun überwachen, ob ein Prozess aktiv ist, und ihn jede Minute überprüfen. Mit der oben genannten Methode müssen wir den Befehl ps jede Minute ausführen und eine reguläre grep-Suche durchführen.

Dieser Overhead scheint nichts auf dem Server zu sein, aber was ist, wenn wir Dutzende oder Hunderte solcher Prozesse gleichzeitig auf demselben Knoten überwachen möchten? (Empfohlenes Lernen: Linux-Tutorial)

Daher ist es für uns notwendig, einige bessere Methoden aus Leistungssicht zu erkunden.

Daemon-Prozesse verfügen normalerweise über eigene PID- oder Sperrdateien. Wir können überprüfen, ob diese Dateien vorhanden sind, um festzustellen, ob der Prozess vorhanden ist. Unter bestimmten ungewöhnlichen Umständen existiert der Prozess, in dem die PID-Datei vorhanden ist, jedoch nicht. Daher können Sie sich nicht auf die PID-Datei des Prozesses verlassen, um festzustellen, ob der Prozess aktiv ist.

Eine zuverlässige Methode ist die Verwendung von „kill -0 pid“. kill -0 sendet kein Signal an den Prozess, führt aber eine Fehlerprüfung durch. Der Befehl gibt 0 zurück, wenn der Prozess existiert, und 1, wenn er nicht existiert.

[sw@gentoo ~]$ ps
  PID TTY          TIME CMD
pts/0    00:00:00 bash
pts/0    00:00:00 ps
[sw@gentoo ~]$ kill -0 15091
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$ kill -0 15092
-bash: kill: (15092) - No such process
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$

Diese Methode kann jedoch nur von normalen Benutzern verwendet werden, um ihre eigenen Prozesse zu überprüfen, da das Senden von Signalen an die Prozesse anderer Benutzer aufgrund fehlender Berechtigungen einen Fehler verursacht und der Rückgabewert ist auch 1.

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$

Wenn Sie den Kill-Befehl als privilegierter Benutzer ausführen, gibt es natürlich kein Berechtigungsproblem.

Das obige ist der detaillierte Inhalt vonÜberprüfen Sie unter Linux, ob der Prozess vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn