【Linux】タイマーUnit

 Linuxシステムにおいて、定期的なジョブの実行はシステム管理の重要な一部です。通常、cronを使用してジョブをスケジュールしますが、systemdのタイマーUnitを使用することで、さらに高度なスケジューリングを行うことができます。

タイマーUnitの概要

 systemdのタイマーUnitを使用すると、cronの代わりに定期的にジョブを実行できます。タイマーは名前が .timer で終わる systemd のユニットファイルであり、 .service ファイルやイベントを制御します。これにより、cron の代わりとしてタイマーを使用することができます。

タイマーUnitを用いたスケジューリング

 タイマーUnitを用いたスケジューリングには、「/etc/systemd/system」ディレクトリ配下に以下のファイルを配置します。

ファイル説明
スケジュール名.service実行内容を記載する。
スケジュール名.timer同名の .service ファイルの動作設定を記載する。
タイマーUnitを定義するファイル

タイマーのタイプ

タイマータイプ説明
モノトニックタイマー開始点(イベント)を動的なものにしたいときに利用。 イベントから一定時間経過した後に実行され、それ以降は定期的に実行される。
リアルタイムタイマーカレンダー形式(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同様)を利用したいときに利用。 現実のカレンダー時間に基づいてタイマーを設定します。
まとめ