while 루프에서 Python 스크립트를 실행하는 서비스를 만들고 있습니다. 하지만 mongod가 실행된 후에만 시작하려면 스크립트가 필요합니다. 모두가 WantedBy에 multi-user.target을 넣는 것을 보았지만 mongod 파일과 그의 WantedBy가 multi-user.target으로 설정되어 있는 것을 보았습니다. 그렇다면 스크립트의 WantedBy를 mongod.service로 설정하는 것만으로도 충분합니까, 아니면 WantedBy를 multi-user.target으로 설정하고 After를 mongod.service로 설정해야 합니까?
감사해요
답변1
원하는 것은 서비스에 대한 시스템 단위 파일을 만드는 것입니다. 이 파일에서 지정합니다 After=mongod.service
(서비스 파일 이름은 배포판에 따라 다를 수 있음).
Requires=multi-user.target
다중 사용자 런타임에 도달한 후에만 서비스가 시작되는지 확인하세요. 서비스가 시작되는 순서는 정의되지 않으므로 서비스는 다른 장치 구성에 따라 mongod
이전 systemctl start myservice
과 다음 이후에 시작될 수 있습니다.mongod
Requires=mongod.service
당신이 원하는 것도 아닙니다:
이 종속성 유형은 이 장치가 실행 중일 때 다른 장치가 항상 활성화되어야 한다는 의미는 아닙니다. 특히: 실패한 조건 검사(예: ConditionPathExists=, ConditionPathIsSymbolicLink=, ... — 아래 참조)는 Requires= 종속성이 있는 장치에 대한 시작 작업이 실패하도록 하지 않습니다. 또한 일부 장치 유형은 자체적으로 비활성화될 수 있습니다(예: 서비스 프로세스가 완전히 종료되도록 결정하거나 사용자가 장치의 플러그를 뽑을 수 있음). 이는 Requires= 종속성을 가진 장치에 전파되지 않습니다. After=와 함께 BindsTo= 종속성 유형을 사용하면 특정 다른 유닛도 활성화되지 않으면 해당 유닛이 활성화되지 않도록 할 수 있습니다(아래 참조).
https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html