別のスクリプトを使用してsystemdをスクリプトする方法

別のスクリプトを使用してsystemdをスクリプトする方法

activate.shここでsystemdを初めて使用しました。デフォルトでは、toggle.shおよび3つの異なるスクリプトがありますdeactivate.sh。以下を実行するためにシステムサービスとタイマーを使用したいと思います。

  • サービスが初めて起動したら、次のコマンドを実行します。activate.sh 一度
  • タイマーを使って次回まで実行したいと思いますtoggle.sh
  • サービスが停止しました。この場合に実行されます。deactivate.sh

ExecStart私は他の、、、、ExecStartPreなどExecStopを試しましたが、RemainAfterExit成功しませんでした。誰もが正しい方向に私を指すことができますか?

答え1

次のように3つの新しいユニットファイルを作成する必要があります(テストされていません)。

mything.service:

[Unit]
Description=My custom thingy

[Service]
Type=service
ExecStart=/path/to/activate.sh
ExecStop=/path/to/deactivate.sh

[Install]
WantedBy=multi-user.target
Wants=togglemything.timer

togglemything.timer:

[Unit]
Description=My custom timer thingy

[Timer]
OnCalendar=hourly

togglemything.service:

[Unit]
Description=Toggle my custom thing

[Service]
Type=oneshot
ExecStart=/path/to/toggle.sh

最後の2つは、そのポイントの前に同じ名前を持つ必要があります。それ以外の場合、タイマーは何もしません。

あなたがしなければならsystemctl start mythingないことは、仕事を動作させることだけです。

関連情報