내 연구에 따르면 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년 동안 사용해 왔으며 어떤 변경도 필요하지 않다고 생각합니다.