systemctl
é normalmente um comando usado para configurar e controlar systemd
.
Uma unidade systemd pode incluir instruções sobre o que fazer se um processo terminar.
Por exemplo, com o RedHat 7, a instalação padrão do rsyslogd inclui um arquivo de unidade que possui:
[Service]
....
Restart=on-failure
como parte disso.
De 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.
systemd
é relativamente novo e as pessoas podem não estar cientes de suas capacidades. Além disso, eles podem não estar cientes das unidades usuário , que permitem que os usuários façam suas próprias coisas.
supervisord
é um programa muito mais antigo, por isso as pessoas podem estar mais conscientes disso, de usá-lo há uma década e não vêem necessidade de mudar.