Alles mit der PPID 1 ist größtenteils wahrscheinlich ein Daemon. Es kann jedoch Situationen geben, in denen Prozesse zu Kindern von 1 werden können, die technisch gesehen keine Dämonen sind. Die Methoden, die ich unten diskutiere, sollen zeigen, wie Sie feststellen, ob eine PID 1 gehört, und nicht unbedingt, dass es sich um einen tatsächlichen Daemon handelt.
Zum Beispiel
$ ps -xj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
8420 1211 1211 8420 pts/4 1211 S+ 1000 0:01 ssh dufresne
1 2276 2275 2275 ? -1 Sl 1000 0:48 /usr/bin/gnome-keyring-daemon --daemonize --login
2196 2278 2278 2278 ? -1 Ssl 1000 0:39 gnome-session
1 2288 2278 2278 ? -1 S 1000 0:00 dbus-launch --sh-syntax --exit-with-session
1 2289 2289 2289 ? -1 Ssl 1000 6:00 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
1 2358 2289 2289 ? -1 Sl 1000 0:01 /usr/libexec/gvfsd
Der Auszug aus Wikipedia kann auch etwas Licht in die Dinge bringen, lässt aber auch ein wenig vage, wie man tatsächlich feststellt, ob ein Prozess ein Dämon ist oder nicht.
Auszug aus Wikipedia
In einer Unix-Umgebung ist der übergeordnete Prozess eines Daemons häufig, aber nicht immer, der Init-Prozess. Ein Daemon wird normalerweise entweder durch einen Prozess erstellt, der einen untergeordneten Prozess verzweigt und dann sofort beendet, wodurch init den untergeordneten Prozess übernimmt, oder durch den init-Prozess, der den Daemon direkt startet. Darüber hinaus muss ein Daemon, der durch Forken und Beenden gestartet wird, normalerweise andere Vorgänge ausführen, z. B. das Trennen des Prozesses von einem steuernden Terminal (tty). Solche Prozeduren werden häufig in verschiedenen Komfortroutinen wie Daemon (3) in Unix implementiert.
HINWEIS: Auf Systemen, die SystemD verwenden (Red Hat-Distributionen wie Fedora), gibt es normalerweise keinen init
Prozess, sondern Folgendes :
$ ps -j -1
PID PGID SID TTY STAT TIME COMMAND
1 1 1 ? Ss 0:42 /usr/lib/systemd/systemd --switched-root --system --deserialize 20
Das ist der Prozess mit der PID 1.
Auf Debian / Ubuntu-Systemen haben sie noch einen Prozess mit dem Namen init
:
$ ps -j -1
PID PGID SID TTY STAT TIME COMMAND
1 1 1 ? Ss 0:02 /sbin/init
Was ist ein Daemon?
Und hier ist der Grund, warum es schwierig sein kann festzustellen, ob etwas ein Daemon ist oder nicht, wenn seine PPID 1 ist:
Ein Prozess kann ein Kind des Init - Prozesses wird, ( Hinweis: das init
Verfahren ist PID 1), wenn ihre Eltern wird sie getötet oder Ablehnungen sind diese Verfahren nicht notwendigerweise Daemons, sondern zeigen sich nach wie vor als mit ihrer PPID gleich 1 .
Um festzustellen, ob es sich bei einem Daemon um einen Daemon handelt oder nicht, ist wahrscheinlich eine Reihe von Tests erforderlich, und es muss nicht nur geprüft werden, ob die PPID 1 ist.
Wo bleibt uns das?
Um festzustellen, ob es sich bei einem Daemon um einen Daemon handelt, müssen Sie wahrscheinlich auf verschiedene Tests zurückgreifen, z.
- PPID 1?
- Hat TTY angehängt?
- Ist es ein Service?
sudo service ...
?
- Wird es von Systemd, Upstart oder SysV verwaltet?
- Hört es auf einem Port?
- Schreibt es in eine Protokolldatei? Syslog?
Wir müssen also auf "Ententippen" zurückgreifen, wenn es quakt und schwimmt. Es ist wahrscheinlich eine Ente, aber selbst die oben genannten Eigenschaften können Sie täuschen.
Verweise
Es gibt keine Möglichkeit, einen regulären Prozess von einem Daemon-Prozess zu unterscheiden. Ein Daemon kann von überall gestartet werden, nicht nur von init. Es ist nicht erforderlich, die Verzweigung zu verdoppeln und vom Terminal zu trennen, um als Daemon betrachtet zu werden.
Auf GNOME-Systemen behält der gnome-settings-daemon sein übergeordnetes Element bei, meldet sich beim übergeordneten Terminal an und hat nicht die PID1 als übergeordnete PID, wird jedoch weiterhin als Daemon betrachtet.
Ein Daemon ist einfach ein kontinuierlich laufender Prozess. Sie können sich daher nicht mit einem Befehl identifizieren.
Wenn Sie nun wissen möchten, ob Ihr bestimmter Daemon ausgeführt wird, können Sie den
pgrep
Befehl genauer betrachten .Ändern Sie auch den Namen Ihres Daemons. Es gibt bereits einen Befehl namens Daemon, mit dem Sie möglicherweise in Konflikt geraten.
quelle