システムを起動してから30分ごとにスクリプトを実行したいと思います。私はあなたがcronを使用できることを知っていますが、私はこの機能を頻繁に使用する予定はないので、systemdで試してみたいと思います。
これまでのところ、何かを1回実行できるようにする単調タイマーのみを見つけました(少なくとも私はそう思います)。 foo.timer
および[email protected]
ブート/システムの開始から30分ごとに何かを実行したい場合のように見えますか?
[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... ???
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ページ の例
タイマーを使用しない別のオプションを次に示します。タイミングがそれほど重要ではなく、スクリプトが長く実行されていない場合は、単純なことで問題ありません。
[Unit]
Description=Run foo
[Service]
User=%I
Restart=always
RestartSec=1800s
ExecStart=/bin/bash /home/user/script.sh