systemd Timersで定期タスクを管理する

systemd Timersで定期タスクを管理する Linuxシステムでは、定期タスクはcronと関連付けられることが多いです。cronはシンプルで広く利用可能であり、今日でも有用です。しかし、systemdを使用する最近のLinuxディストリビューションには、別の強力な選択肢があります:systemd timers。 systemd timerは、特定の時刻、起動後、または定期的な間隔でサービスを実行できます。従来のcronジョブと比較して、systemd timersはシステムサービスマネージャーとの統合が良く、ログ機能が優秀で、スケジューリングの柔軟性も高くなります。 この記事では、systemd timersの仕組みと設定方法を説明します。 systemd Timerとは? systemd timerは、別のsystemdユニットをいつアクティブ化するかを制御するユニットファイルです。多くの場合、timerは.serviceユニットをアクティブ化します。 典型的な定期タスクには2つのファイルが必要です: /etc/systemd/system/example-task.service /etc/systemd/system/example-task.timer .serviceファイルは実行内容を定義します。.timerファイルは実行時刻を定義します。この分離により、systemd timersは整理されやすく管理も簡単です。 簡単な例:日次バックアップ 毎日バックアップスクリプトを実行する場合を考えます。 まずスクリプトを作成します: sudo nano /usr/local/bin/daily-backup.sh 例: #!/bin/bash echo "Backup started at Thu Jun 11 11:24:12 2026" >> /var/log/daily-backup.log tar -czf /tmp/etc-backup.tar.gz /etc echo "Backup finished at Thu Jun 11 11:24:12 2026" >> /var/log/daily-backup.log 実行権限を設定します: sudo chmod +x /usr/local/bin/daily-backup.sh Serviceユニットの作成 サービスファイルを作成します: sudo nano /etc/systemd/system/daily-backup.service 内容: [Unit] Description=Daily backup task [Service] Type=oneshot ExecStart=/usr/local/bin/daily-backup.sh Type=oneshotは、サービスがコマンドを実行して終了することを意味します。バックアップ、クリーンアップ、レポートなどの一次性タスクに適しています。 ...

2026年6月11日 · 1 分