![systemctl을 사용하지 않고 bash 스크립트 시작/중지를 비활성화하는 방법을 찾고 있습니다.](https://linux55.com/image/171719/systemctl%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%8B%9C%EC%9E%91%2F%EC%A4%91%EC%A7%80%EB%A5%BC%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%84%20%EC%B0%BE%EA%B3%A0%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
"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 ...