特定の時間にsystemd.serviceを開始/停止する


14

特定の時間にsystemd.serviceを開始および停止したい。おそらく私は.timerユニットを使用してジョブを開始しますが、特定の期間後、または特定の時間にジョブ停止する方法が組み込まれていstopますか?

ありがとう

回答:


6

タイマーでサービス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

2

実際、.serviceファイルで特定のランタイムを構成した後にサービスを停止する別の方法があります。

RuntimeMaxSec=...

サービスが失敗したと見なされるという事実は気に入らないかもしれませんが、それは多かれ少なかれ長時間実行されているサービスを強制終了した論理的な結果です。

より良い回答を得るには、このような異常な機能を使用する理由を説明してください。サービスは一般に、一定の時間だけでなく、永久に、または明示的に停止されるまで実行されることを意図しています。


1
はい、メーリングリストでこれとその制限について説明しました。lists.freedesktop.org
ジェイミーキットソン

1
珍しくありません。サーバーのトラフィックが最も少ない夜間にのみ、リソースを要求するサービス(おそらくSETI)を実行するのはどうでしょうか。また、私が働いている場所には、サーバーで例外が発生したときに電話でサポートチームを呼び起こすように設計されたアラートデーモンがあります。私たちは、実際に起きているときに迷惑なことを実行したくありません。これらのサーバーには、ピーク使用時に左右に問題があるからです。
ジェームズM.レイ

0

いくつかの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/Cronhttps://wiki.archlinux.org/index.php/Cron


8
.timerOPがすでに知っているsystemd ユニットに比べて、cronジョブはどのように改善されますか?
パベルシメルダ

はい、できますが、私の質問はsystemdでこれを正しく行う方法です。特定の時間または特定の時間後にジョブを停止するための標準的な方法が必要だと思います。
ジェイミーキットソン

@JamieKitson正直に言うと、cronタイマーとsystemdタイマーを超えてこのような機能が実際に必要になるとは思いません。ほとんどのsystemdインストールではこのような機能は使用されずsystemctl、cron、systemdタイマーなどを使用して実行しても問題はありません。私の意見では、この答えは他の答えと同じくらい有効です。
パベルシメルダ

たとえば、www-dataにsystemctl start&stopを実行させるにはどうすればよいですか?
-alvaropgl

@alvaropglあなたのコメントは、ユーザー(www-data)と、ユーザーがプロセスを実行/実行しないために制限するアクセス(systemctl)とは関係ありません。これはトピックです。新しいトピックを開始してください。ヒント:おそらく、www-dataユーザーでより多くの責任と範囲を有効にするという現在のアプローチではなく、必要なことを行うためのAPIの作成を検討する必要があります。
スコットプライヴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.