Systemd는 서비스를 자동으로 다시 시작하며 중지되면 작동하지 않습니다.

Systemd는 서비스를 자동으로 다시 시작하며 중지되면 작동하지 않습니다.

서비스를 자동으로 시작하는 기능을 프로젝트에 추가하고 싶습니다.

내 서비스 파일에는 다음이 포함됩니다.

[Unit]
Description=example Server
After=network.target

[Service]
Type=idle
ExecStart=/opt/xxx/xxx/sample.sh   
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

내가 따라온 단계는 다음과 같습니다.

  1. 데몬을 다시 로드합니다.systemctl daemon-reload

  2. 서비스 활성화:systemctl enable sample

  3. 서비스를 시작합니다:systemctl start sample

  4. 상태 확인: service sample status, 내 서비스가 실행 중임을 나타냅니다...

서비스가 충돌하거나 중지되면 자동으로 서비스를 시작하고 싶습니다.

중지 서비스를 사용하면 systemctl stop sample자동으로 시작되지 않습니다. 이것을 달성하는 방법에 대한 아이디어가 있습니까?

답변1

이것은 설정 Restart이 작동하는 방식이 아닙니다.수동,

시스템 작업(예: 서비스 중지 또는 다시 시작)으로 인해 프로세스가 종료되면 서비스가 다시 시작되지 않습니다.

systemctl서비스가 원하는 상태를 지정할 수 있습니다. 즉, systemctl start서비스가 실행되어야 함을 지정하거나, systemctl stop실행되지 않아야 함을 지정합니다. 그런 다음 Systemd는 요청한 상태와 일치하는 시스템 상태를 가져오기 위해 필요한 조치를 취합니다.

그 목적 Restart은 요청된 시스템 상태를 유지하는 것이지 모든 상황에서 서비스를 계속 실행하는 것이 아닙니다.

서비스가 종료된 경우 systemd가 서비스를 다시 시작하는지 확인하려면 다음이 필요합니다.서비스 메인 프로세스를 직접 종료합니다., systemd에 중지를 요청하지 않고 다음을 수행합니다.

systemctl kill sample

관련 정보