サービスを初めて実行して再起動したときに動作が異なるサービスが必要です。 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ファイルを作成します。このファイルは定期的に実行されます。