私はシステムの起動中に常に実行されるサービスが欲しい。ユーザーがサービスを停止するには(セキュリティ上の理由から)、再起動する必要があります。それ以外の場合は実行を続けます。
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