systemdタイマーユニット
cronジョブの現代的な代替としてsystemdタイマーを作成します。OnCalendar構文、永続タイマー、タイマーとoneshotサービスの組み合わせについて学びます。
Advanced Configurations
詳細な説明
systemdタイマーでcronを置き換える
systemdタイマーは、より良いログ、依存関係管理、信頼性を提供するcronの現代的な代替です。タイマーは2つのファイルで構成されます:.timerユニットと対応する.serviceユニット。
サービスユニット(実際のタスクを実行)
[Unit]
Description=Daily Database Backup
[Service]
Type=oneshot
ExecStart=/opt/scripts/backup-database.sh
User=backup
Group=backup
StandardOutput=journal
StandardError=journal
タイマーユニット(実行時期をスケジュール)
[Unit]
Description=Run Database Backup Daily at 2 AM
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
永続タイマー
Persistent=trueは信頼性にとって重要です。タイマーが発火するはずだった時にシステムが電源オフだった場合、systemdは次回起動時にすぐにタスクを実行します。
cronに対する利点
| 機能 | Cron | systemdタイマー |
|---|---|---|
| ログ | カスタム(ファイルにリダイレクト) | 自動(journal) |
| 見逃した実行 | 失われる | Persistent=trueでキャッチアップ |
| 依存関係 | なし | After=、Requires= |
| リソース制限 | なし | MemoryMax=、CPUQuota= |
| 監視 | crontabを確認 | systemctl list-timers |
ユースケース
スケジュールされたデータベースバックアップ、ログローテーション、キャッシュクリーンアップ、または永続実行、ログ、依存関係管理の恩恵を受ける定期タスクのために、cronジョブをsystemdタイマーに置き換える場合に使用します。