서비스가 종료 시 실행 중이더라도 시작 시 서비스가 _시작되지 않도록_ 하세요.

서비스가 종료 시 실행 중이더라도 시작 시 서비스가 _시작되지 않도록_ 하세요.

다음을 사용하여 systemd서비스를 구성하려면 어떻게 해야 합니까?아니요최근에 종료했을 때 실행 중이었는데 시작 시 시작됩니까? 나도 할 수 있다는 걸 알아장애를 입히다서비스지만 만약 내가시작그런 다음 서비스가 다시 시작되고 계속 실행됩니다. 나는 이것을 원한다:

  1. 지금 서비스를 시작해보세요.
  2. 재시작.
  3. 서비스는아니요활동/실행.

온라인에서 답변을 검색했지만 사람들이 서비스 시작/중지 및 활성화/비활성화에 대해 묻고 대답하는 소음이 너무 많은 것을 발견했습니다. 제가 아는 한, 시작 시 서비스를 명시적으로 비활성화하고 싶은 것 같습니다. 저는 Linux의 고급 초보자입니다. 부팅 순서의 적절한 위치에서 발생하도록 하려면 이 명령을 어디에 넣어야 합니까?

아니면 이를 수행하는 다른 합리적이고 신뢰할 수 있는 방법이 있습니까?

업데이트: 마침내 서비스로 설치해서는 안 된다고 결정했습니다. 돌이켜보면 이는 분명한 것 같습니다.

답변1

서비스 foo스타터(여기서필요홍보하다)는 주어진 파일이 존재하는지 테스트하는 것일 수 있습니다. 예를 들어 /var/tmp/dont_start_foo_service파일이 존재하는 경우 exit즉시 아무것도 수행하지 마십시오.

C 코드에서 다음을 사용하십시오.방문(2)파일이 존재하는지 테스트합니다.

쉘 스크립트에서 다음을 사용하십시오.테스트(1)이를 위해 예를 들어[ -f /var/tmp/dont_start_foo_service ];

당신은 또한 볼 수 있습니다슈페리어(7)파일 이름 규칙에 대해 /etc/nologin문서화되어 있습니다.로그인되지 않음(5)기존 기술 그대로.

(이전 종료 또는 재시작 전에 /var/tmp/dont_start_foo_service)터치(1)(또는만들기(2)C 코드에서).

강제적이고 명시적으로 삭제합니다(예:방(1)또는삭제(3)...) /var/tmp/dont_start_foo_service 실제로 시작하기 전에.systemctl startfoo

일부를 사용하고 싶을 수도 있습니다.SQLite데이터베이스 또는JSON/var/tmp/dont_start_foo_service어떤 방식으로든 파일을 저장하는 대신 파일시작하지 마세요배너.

또한 고려해 보시기 바랍니다예약된 작업(5)@reboot시간 제한이 있는 과제 at또는 batch과제(참조이것).

관련 정보