systemctl을 사용하지 않고 bash 스크립트 시작/중지를 비활성화하는 방법을 찾고 있습니다.

systemctl을 사용하지 않고 bash 스크립트 시작/중지를 비활성화하는 방법을 찾고 있습니다.

"systemctl 시작/중지 서비스"를 사용하지 않고 bash 시작/중지 스크립트를 직접 사용하는 것을 방지하고 싶습니다.

이것을 스크립트에 삽입하는 bash 방법이 있습니까?

답변1

SystemD에서 호출했는지 여부를 스크립트에서 확인할 수 있습니다. 예를 들어 그렇지 않은 경우 오류 메시지와 함께 중단하거나 systemctl.

부모를 결정하는 방법에는 다음과 같은 여러 가지가 있습니다.

  1. 매우 간단하지만 100% 확실하지는 않습니다. PPID가 1인지 확인하세요.

    grep -q '^PPid: *1$' /proc/$$/status
    
  2. systemctl status $$ >/dev/null 2>&1(SystemD 프로세스의 종료 코드는 0입니다.)
  3. SystemD 유닛 파일에 고유한 환경 변수를 설정하고 확인하십시오.

    if [ 'yes' != "$STARTED_BY_SYSTEMD" ]; then ...
    

관련 정보