it-swarm.com.de

Das Systemd-Drop-In kann keine PID-Datei erstellen

Ich habe ein Drop-In für systemd-bearbeitet am Pfad /etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf. wenn ich laufe systemctl status systemd-machined Ich sehe die Zeilen

Drop-In: /etc/systemd/system/systemd-machined.service.d
       └─10-machined-pid-file.conf

Ich sehe jedoch keine PID-Datei in/var/run /. Was basierend auf meinem Drop-In:

[Serivce]
PIDFile=/var/run/machined.pid

Ich glaube, es sollte kein Problem beim Erstellen dieser PID-Datei geben. Fehlt mir etwas?

11

Das PIDFile= Einstellung erstellt keine PID-Datei. Das ist immer noch Sache des Dienstes selbst, genau wie in den letzten 40 Jahren. Diese Option teilt systemd vielmehr mit, wo sich eine vorhandene PID-Datei befindet (falls vorhanden). In den meisten Fällen ist dies überhaupt nicht erforderlich, da systemd die Dienste in ihren eigenen Gruppen behält und keine PID-Datei benötigt, um sie zu verfolgen. Systemd löscht jedoch eine PID-Datei, wenn der Dienst beendet wird, wenn der Dienst nach sich selbst nicht bereinigt werden kann.

Aus der Dokumentation :

Nimmt einen absoluten Dateinamen, der auf die PID-Datei dieses Dämons verweist. Die Verwendung dieser Option wird für Dienste empfohlen, bei denen Type= ist auf forking gesetzt. systemd liest nach dem Start des Dienstes die PID des Hauptprozesses des Dämons. systemd schreibt nicht in die hier konfigurierte Datei, entfernt die Datei jedoch nach dem Herunterfahren des Dienstes, falls sie noch vorhanden ist.

19
Michael Hampton

Leider erstellt systemd keine PID-Datei für einen nicht gegabelten Dienst, selbst wenn Sie in der Einheitendatei des Dienstes eine Zeile PIDFile= Angeben. Möglicherweise können Sie jedoch mit einer ExecStartPost= - Zeile schummeln, z.

ExecStartPost=/bin/sh -c 'umask 022; pgrep YOURSERVICE > /var/run/YOURSERVICE.pid'
10
Mike Gleason