【Linux】タイマーUnit
Linuxシステムにおいて、定期的なジョブの実行はシステム管理の重要な一部です。通常、cronを使用してジョブをスケジュールしますが、systemdのタイマーUnitを使用することで、さらに高度なスケジューリングを行うことができます。
タイマーUnitの概要
systemdのタイマーUnitを使用すると、cronの代わりに定期的にジョブを実行できます。タイマーは名前が .timer
で終わる systemd のユニットファイルであり、 .service
ファイルやイベントを制御します。これにより、cron の代わりとしてタイマーを使用することができます。
タイマーUnitを用いたスケジューリング
タイマーUnitを用いたスケジューリングには、「/etc/systemd/system」ディレクトリ配下に以下のファイルを配置します。
ファイル | 説明 |
---|---|
スケジュール名.service | 実行内容を記載する。 |
スケジュール名.timer | 同名の .service ファイルの動作設定を記載する。 |
タイマーのタイプ
タイマータイプ | 説明 |
---|---|
モノトニックタイマー | 開始点(イベント)を動的なものにしたいときに利用。 イベントから一定時間経過した後に実行され、それ以降は定期的に実行される。 |
リアルタイムタイマー | カレンダー形式(Cron同様)を利用したいときに利用。 現実のカレンダー時間に基づいてタイマーを設定します。 |
ファイルの記述内容
以下に、具体的な例として、バックアップジョブを毎日午前2時に実行するタイマーの設定を示します。
バックアップサービスファイル:example-backup.service
[Unit]
Description=Daily Backup Service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
バックアップタイマーファイル:example-backup.timer
[Unit]
Description=Runs daily backup at 2am
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
セクション | 設定項目 | 説明 |
---|---|---|
[Unit] | Description | タイマーやサービスの説明。 |
[Service] | Type | サービスのタイプを指定。oneshot は一度だけ実行することを意味します。 |
[Service] | ExecStart | 実行するコマンドを指定。ここでは /usr/local/bin/backup.sh を実行します。 |
[Timer] | OnCalendar | タイマーの実行スケジュール。ここでは毎日午前2時に実行されるように設定されています。 |
[Timer] | Persistent | システムが再起動された場合でも、タイマーの実行が失われないようにするオプション。 |
[Install] | WantedBy | タイマーが有効化されたときに timers.target によって起動されることを指定。 |
まとめ
systemdのタイマーUnitは、cronの代わりに定期的なジョブのスケジューリングを行う強力なツールです。タイマーUnitは、より高度なスケジューリングオプションを提供し、システムの再起動後も正確にジョブを実行できます。タイマーUnitを正しく設定することで、システム管理の効率を向上させることができます。
タイマータイプ | 説明 |
---|---|
モノトニックタイマー | 開始点(イベント)を動的なものにしたいときに利用。 システムの起動時間や実行時間に基づいてタイマーを設定します。 |
リアルタイムタイマー | カレンダー形式(Cron同様)を利用したいときに利用。 現実のカレンダー時間に基づいてタイマーを設定します。 |