systemd 서비스를 다시 시작하는 방법에 대한 혼란

systemd 서비스를 다시 시작하는 방법에 대한 혼란

나는 systemd 서비스가 활성화되어 있는지, 프로세스가 여전히 실행 중인지, 실행 중이 아닌지 등에 대해 여전히 혼란스러워합니다.

my_script.sh라는 다음과 같은 기본 쉘 스크립트가 있다고 가정해 보겠습니다.

#!/bin/sh
touch /my_dir/my_file.txt
echo "Hello from my_script.sh" >> /my_dir/my_file.txt

다음과 같이 my_script.sh를 호출하는 my_service.service라는 시스템 서비스가 있습니다.

[Unit]
Description=my service 

[Service]
Type=simple
ExecStart=sh /my_dir/my_script.sh
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

실제로 Restart=always이는 쉘 스크립트 실행이 완료되면 계속해서 실행되어 파일에 지속적으로 기록되어야 함을 의미합니까?

내 이해는 을 사용하면 Restart=always새로 종료하더라도 서비스가 다시 시작된다는 것입니다. 나는 이 말을 잘 이해하지 못한다. my_script.sh가 실행 후 완전히 종료됩니까?

이제 RemainAfterExit=yes제 경우에는 이 줄을 정의하거나 정의하지 않으면 어떤 영향을 미치나요?

궁금증을 풀어주셔서 미리 감사드립니다.

답변1

이 줄은 스크립트가 성공적인 종료 코드로 끝나면 RemainAfterExit=yes서비스가 활성 상태로 표시됨을 의미합니다.ExecStart

이 줄은 Restart=always다음 이벤트가 발생할 때마다 다시 시작함을 의미합니다.

  • 종료 코드 또는 신호 지우기
  • 불결한 종료 코드
  • 신호가 깨끗하지 않습니다.
  • 정지시키다
  • 지키는 개

특정 종료 코드에서 서비스를 다시 시작할 필요가 없으면 이 옵션을 선택하십시오. RestartPreventExitStatus=

systemd.service에 대한 자세한 내용은 다음과 같습니다.

관련 정보