systemdで30分ごとにスクリプトを実行する


19

システムを起動してから30分ごとにスクリプトを実行したいと思います。cronを使用できることは知っていますが、この機能を頻繁に使用する予定はないので、systemdで試してみたいと思います。

これまでのところ、何かを一度だけ実行できる単調なタイマーのみを見つけました(少なくともそう思う)。どうだろうfoo.timerfoo@user.service見た場合のように、私は30分ごとに起動/システム起動から何かを実行したいですか?

foo@user.service

[Unit]
Description=run foo
Wants=foo.timer

[Service]
User=%I
Type=simple
ExecStart=/bin/bash /home/user/script.sh

foo.timer

[Unit]
Description=run foo

[Timer]
where I am stuck... ???

回答:


26

2つのファイルを作成する必要があります。1つはサービス用、もう1つは同じ名前のタイマー用です。

例:

/etc/systemd/system/test.service

[Unit]
Description=test job

[Service]
Type=oneshot
ExecStart=/bin/bash /tmp/1.sh

/etc/systemd/system/test.timer

[Unit]
Description=test

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s

[Install]
WantedBy=timers.target

その後、コマンドsystemctl daemon-reloadを使用してsystemdをリロードし、でタイマーを開始するsystemctl start test.timerか、デフォルトで有効にします。

テスト内容 1.sh

#!/bin/bash
echo `date` >> /tmp/2

そして、利用可能なすべてのタイマーをチェックするコマンド: systemctl list-timers --all

プロジェクトページの詳細情報とArchLinuxページの


systemdには、スクリプトを受け入れ、それがリストされている、しかし、何も起こりません
TomTomの

どれ?2つのスクリプト、1つのタイマーと別のサービスが必要です。それらが実行された時には、コマンド、発生する可能性のあるエラーがで確認することができ、リスト、タイマーによって確認することができsystemctl status test.timer及びsystemctl status test.servicecomamand
Reishin

1
systemctl list-timers --allコマンドを使用して出力を確認してください。彼はこのようである必要があります。ユニット、左、および渡された列を見てください。タイマーが存在する場合は、タイマーが正常に機能しているため、サービスファイルを調べてバグを確認してください。
レイシン

1
いいえ、cozの主な質問は「notify-send」については何も尋ねません 。そのようなトピックが既に存在する場合、2つの異なることを混ぜてはいけないと思います。あなたの場合、export DISPLAY=:0.0スクリプトに追加してみてください。
レイシン

1
ps:man systemd.timerによると、Persistent = trueはOnCalendar(wallclock)の設定にのみ影響します
snyh

11

タイマーを使用しない別のオプションを次に示します。タイミングが非常に重要でなく、スクリプトが長時間実行されていない場合は、単純なことで問題ありません。

[Unit]
Description=Run foo

[Service]
User=%I
Restart=always
RestartSec=1800s
ExecStart=/bin/bash /home/user/script.sh

2
私はこの解決策が好きです。唯一の大きな欠点は、頻繁に(つまり30秒ごとに)再起動すると、システムログが「Starting <service X>」ログであふれることです。その時点で、systemdからサービスを何度も再起動する代わりに、デーモンとしてサービスを実行する方が良い場合があります。
ジャージー豆

それは本当だ。迅速かつ簡単なもののために動作します。しかし、タイマーまたは長時間実行されるスクリプトがより良い解決策になります。
マットH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.