web-dev-qa-db-ja.com

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

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

これまでのところ、何かを1回実行できるようにする単調タイマーのみを見つけました(少なくとも私はそう思います)。 foo.timerおよび[email protected]ブート/システムの開始から30分ごとに何かを実行したい場合のように見えますか?

[email protected]

[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... ???
22
TomTom

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ページ の例

27
Reishin

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

[Unit]
Description=Run foo

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