나는 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=