Systemctl이 죽은 프로세스를 다시 시작할 수 있나요? 아니면 감독관이 개입하나요?

Systemctl이 죽은 프로세스를 다시 시작할 수 있나요? 아니면 감독관이 개입하나요?

내 연구에 따르면 Supervisor와 Systemctl은 상호 교환 가능한 것으로 보이지 않지만 특히 기능이 겹치며 둘 다 다른 프로세스를 시작하는 데 사용할 수 있습니다. 그러나 Supervisor는 어떤 이유로든 종료된 애플리케이션을 다시 시작할 수 있습니다. systemctl이 이 작업을 수행할 수 있음을 나타내는 항목을 찾을 수 없습니다.

Systemctl을 사용하여 죽은 프로세스를 다시 시작할 수 있습니까?

또한 대부분의 사람들은 Systemctl에 Postgres와 Nginx 또는 Apache를 추가하고 Supervisor에 애플리케이션을 추가하는 것 같습니다. 왜 이런거야? 감독자가 죽으면 다시 시작할 수 있도록 이 모든 것을 감독자에 추가해야 하지 않나요?

답변1

systemctl일반적으로 구성 및 제어에 사용되는 명령입니다 systemd.

시스템단위프로세스가 종료될 때 수행할 작업에 대한 지침을 포함할 수 있습니다.

예를 들어 RedHat 7의 경우 기본 rsyslogd 설치에는 다음을 포함하는 단위 파일이 포함됩니다.

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

그것의 일부로.

에서 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비교적 새로운 기능이므로 사람들은 그 기능을 인식하지 못할 수도 있습니다. 게다가 그들은 모를 수도 있다사용자사용자가 스스로 작업을 수행할 수 있도록 하는 단위입니다.

supervisord오래된 프로그램이므로 사람들이 이에 대해 더 잘 알고 있고 10년 동안 사용해 왔으며 어떤 변경도 필요하지 않다고 생각합니다.

관련 정보