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タイマーに置き換える場合に使用します。

試してみる — Systemd Unit File Generator

フルツールを開く