O Systemctl pode reiniciar processos que morreram ou é onde o Supervisor entra?

6

Da minha pesquisa, parece que o Supervisor e Systemctl não são intercambiáveis, no entanto, eles têm funções sobrepostas; notavelmente, ambos podem ser usados para iniciar outros processos. No entanto, o Supervisor é capaz de reiniciar um aplicativo que morreu por qualquer motivo. Não consigo encontrar nada que sugira que o systemctl seja capaz disso.

O Systemctl pode ser usado para reiniciar um processo que morreu?

Além disso, parece-me que a maioria das pessoas irá, por exemplo, adicionar Postgres e Nginx ou Apache ao Systemctl, mas adicionará sua aplicação ao supervisor. Por que é isso? Eles não deveriam adicionar tudo isso ao Supervisor, para que o Supervisor possa reiniciá-los se eles morressem?

    
por Matthew Moisen 18.09.2016 / 22:14

1 resposta

12

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.

    
por 18.09.2016 / 22:28