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

答え2

以下を使用して、別の.serviceファイルで最初の実行を定義できます。

[Service]
Type=oneshot

次に、そのファイルに依存する別の.serviceファイルを作成します。このファイルは定期的に実行されます。

関連情報