Systemd - サービスは最初の実行と再実行をどのように決定しますか?

Systemd - サービスは最初の実行と再実行をどのように決定しますか?

サービスを初めて実行して再起動したときに動作が異なるサービスが必要です。 systemdを使用してこれを達成できますか? (私は組み込みオペレーティングシステムでsystemdを使用しています)。

ExecReloadとExecStartを試しましたが、 "systemctl restart"コマンドを使用した場合にのみExecReloadが実行されます。一方、ExecStartはサービスが再起動された後に実行されます(Restart = on-failureとRestartSec = 5)。

ベストアンサー1

これを使用して、systemctl set-environment将来のサービスの実行にいくつかの値をプッシュできます。たとえば、単位の場合:

[Unit]
Description=testing
[Service]
Type=oneshot
ExecStart=/my/command myarg1 ${MYDONE}
ExecStart=/usr/bin/systemctl set-environment MYDONE=1
[Install]

systemctl start <unit>渡された最初と最後の引数は/my/command環境にあり、環境にはありません''MYDONE後で実行すると、最後のパラメータは環境1にあります。MYDONE=1

おすすめ記事