Kann Systemctl abgelaufene Prozesse neu starten, oder kommt hier Supervisor ins Spiel?

9

Aus meiner Forschung geht hervor, dass Supervisor und Systemctl nicht austauschbar sind, jedoch überlappende Funktionen haben. Insbesondere können beide verwendet werden, um andere Prozesse zu starten. Supervisor kann jedoch eine Anwendung neu starten, die aus irgendeinem Grund gestorben ist. Ich kann nichts finden, was darauf hindeutet, dass systemctl dazu in der Lage ist.

Kann Systemctl verwendet werden, um einen abgestorbenen Prozess neu zu starten?

Darüber hinaus scheint es mir, dass die meisten Leute zum Beispiel Postgres und Nginx oder Apache zu Systemctl hinzufügen, aber ihre Anwendung zum Supervisor hinzufügen werden. Warum ist das? Sollten sie nicht alle diese Elemente stattdessen zu Supervisor hinzufügen, damit Supervisor sie neu starten kann, wenn sie gestorben sind?

Matthew Moisen
quelle

Antworten:

14

systemctlist normalerweise ein Befehl zum Konfigurieren und Steuern systemd.

Eine systemd- Einheit kann Anweisungen enthalten, was zu tun ist, wenn ein Prozess beendet wird.

Bei RedHat 7 enthält die Standardinstallation von rsyslogd beispielsweise eine Einheitendatei mit folgenden Elementen:

[Service]
....
Restart=on-failure

als Teil davon.

Von man systemd.service:

   Restart=
       Configures whether the service shall be restarted when the service
       process exits, is killed, or a timeout is reached. The service
       process may be the main service process, but it may also be one of
       the processes specified with ExecStartPre=, ExecStartPost=,
       ExecStop=, ExecStopPost=, or ExecReload=. When the death of the
       process is a result of systemd operation (e.g. service stop or
       restart), the service will not be restarted. Timeouts include
       missing the watchdog "keep-alive ping" deadline and a service
       start, reload, and stop operation timeouts.

       Takes one of no, on-success, on-failure, on-abnormal, on-watchdog,
       on-abort, or always. If set to no (the default), the service will
       not be restarted. 

systemdist relativ neu und die Menschen sind sich möglicherweise seiner Fähigkeiten nicht bewusst. Außerdem sind ihnen möglicherweise keine Benutzereinheiten bekannt , mit denen Benutzer ihre eigenen Aufgaben ausführen können.

supervisord ist ein viel viel älteres Programm, daher sind sich die Leute dessen vielleicht bewusster, verwenden es seit einem Jahrzehnt und sehen keinen Änderungsbedarf.

Stephen Harris
quelle