
"systemctl 시작/중지 서비스"를 사용하지 않고 bash 시작/중지 스크립트를 직접 사용하는 것을 방지하고 싶습니다.
이것을 스크립트에 삽입하는 bash 방법이 있습니까?
답변1
SystemD에서 호출했는지 여부를 스크립트에서 확인할 수 있습니다. 예를 들어 그렇지 않은 경우 오류 메시지와 함께 중단하거나 systemctl
.
부모를 결정하는 방법에는 다음과 같은 여러 가지가 있습니다.
매우 간단하지만 100% 확실하지는 않습니다. PPID가 1인지 확인하세요.
grep -q '^PPid: *1$' /proc/$$/status
systemctl status $$ >/dev/null 2>&1
(SystemD 프로세스의 종료 코드는 0입니다.)SystemD 유닛 파일에 고유한 환경 변수를 설정하고 확인하십시오.
if [ 'yes' != "$STARTED_BY_SYSTEMD" ]; then ...