特定の時間にsystemd.serviceを開始および停止したい。おそらく私は.timerユニットを使用してジョブを開始しますが、特定の期間後、または特定の時間にジョブを停止する方法が組み込まれていstop
ますか?
ありがとう
特定の時間にsystemd.serviceを開始および停止したい。おそらく私は.timerユニットを使用してジョブを開始しますが、特定の期間後、または特定の時間にジョブを停止する方法が組み込まれていstop
ますか?
ありがとう
回答:
タイマーでサービスAを停止するoneshot
には、競合するタイプのサービスBを作成し、タイマーを使用してサービスBを開始します。
ユニットに別のユニットのConflicts =設定がある場合、前者を開始すると後者が停止し、逆の場合も同様です。(ソース)
サービス:
[Unit]
Conflicts=B.service
...
B.service:
[Unit]
Description=B service description
[Service]
Type=oneshot
ExecStart=/bin/echo ''
B.タイマー:
[Timer]
AccuracySec=1
OnActiveSec=10
[Install]
WantedBy=timers.target
以下は、10秒後にサービスAを停止します。
systemctl start A.service
systemctl start B.timer
実際、.service
ファイルで特定のランタイムを構成した後にサービスを停止する別の方法があります。
RuntimeMaxSec=...
サービスが失敗したと見なされるという事実は気に入らないかもしれませんが、それは多かれ少なかれ長時間実行されているサービスを強制終了した論理的な結果です。
より良い回答を得るには、このような異常な機能を使用する理由を説明してください。サービスは一般に、一定の時間だけでなく、永久に、または明示的に停止されるまで実行されることを意図しています。
いくつかのcronジョブを使用できます。
#┌──────────────分(0-59) #│┌───────────────時間(0〜23) #││┌───────────────日(1-31) #│││┌────────────────月(1-12) #││││┌─────────────────曜日(0-6) #│││││ #│││││ * * * * * systemctl start $ SERVICE.service * * * * * systemctl stop $ SERVICE.service
cronの詳細:https://en.wikipedia.org/wiki/Cron、https://wiki.archlinux.org/index.php/Cron
.timer
OPがすでに知っているsystemd ユニットに比べて、cronジョブはどのように改善されますか?
systemctl
、cron、systemdタイマーなどを使用して実行しても問題はありません。私の意見では、この答えは他の答えと同じくらい有効です。