나는 시스템이 부팅되는 동안 항상 실행되는 서비스를 원합니다. 사용자가 서비스를 중지하려면 (보안상의 이유로) 다시 시작해야 합니다. 그렇지 않으면 계속 실행됩니다.
systemd에 이 옵션이 있나요? 나는 모든 곳을 수색했지만 아무것도 찾지 못했습니다.
편집: 사용자가 수행하는 모든 작업에 관계없이 시스템이 실행되는 동안 서비스가 실행되기를 원합니다. 서비스가 중지되면 시스템도 종료될 수 있나요? 실행하지 않을 수 없게 만드는 것이 포인트이며, 실행이 중지되면 시스템 전체가 종료되어야 합니다.
답변1
man systemd.unit
보는 것부터 Requires=
그리고BindsTo=
"시스템"이라고 하면 을 의미한다고 가정 하지만 이를 , , multi-user.target
로 바꿀 수도 있습니다 .basic.target
default.target
graphical.target
매뉴얼 페이지를 고려하면 multi-user.target
Requires= 라고 말할 수 있습니다 your.service
. 그러면 매뉴얼 페이지에 다음이 표시됩니다.
Requires=
multi-user.target gets activated, your.service will be activated as well.
If your.service fails to activate, and an ordering dependency After= on
your.service is set, multi-user.target will not be started.
multi-user.target
BindsTo= 라고 말하면 your.service
더 나은 결과를 얻을 수 있습니다.
BindsTo=
In addition to the effect of Requires= it declares that if
your.service is stopped, multi-user.target will be stopped too.
When used in conjunction with After= on the same unit the
behaviour of BindsTo= is even stronger. In this case,
your.service has to be in active state for multi-user.target
to also be in active state.
관계를 추가하는 Requires=
것은 쉽지 않습니다. 에서 your.service
다음을 추가합니다.
[Install]
RequiredBy=multi-user.target
합산이 BindsTo=
더 어렵습니다 . 에 "삽입"을 추가해야 합니다 multi-user.target
.
$ systemctl edit multi-user.target
[Unit]
BindsTo=your.service