5 タイマーの操作

タイマー・ユニット・ファイルは、systemctlユーティリティでタスクのスケジューリングに使用されるsystemdファイルの一種です。このユーティリティはcronユーティリティに似ており、cronユーティリティでは、同じ目的のためにcrontabおよびその他のcronジョブが使用されます。cronデーモンはsystemd内のサービスとして実行されるため、タイマー・ユニットは追加された処理のレイヤーを削除し、cronサービスで使用可能なものよりもはるかに多くのユーティリティおよびより詳細な構成を提供するため、優先されます。

一般に、パッケージでシステムで機能する特定のサービスが使用される場合、そのパッケージには、それ固有のsystemdタイマー・ユニット・ファイルが含まれています。そのため、このようなパッケージがOracle Linuxとともにインストールされるときには、そのタイマー・ユニット・ファイルが自動的に含まれます。次のコマンドを使用すると、システム内のタイマー・ファイルを表示できます。

systemctl list-unit-files --type=timer

ノート:

タイマー・ファイルのリストは、Oracle Linuxが実行されている場所(Oracle Cloud Infrastructureにあるインスタンス、物理システムなど)によって異なる場合があります。

各タイマー・ユニット・ファイルには、タスクのスケジュールを管理するパラメータ設定が含まれています。たとえば、dnf-makecache.serviceを実行するスケジュールは、dnf-makecache.timerファイル内で設定されます。このファイルには、次のような設定が含まれています。

systemctl cat dnf-makecache.timer
# /usr/lib/systemd/system/dnf-makecache.timer
[Unit]
Description=dnf makecache --timer
ConditionKernelCommandLine=!rd.live.image
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target

[Timer]
OnBootSec=10min
OnUnitInactiveSec=1h
RandomizedDelaySec=60m
Unit=dnf-makecache.service

[Install]
WantedBy=timers.target

スケジュール情報は、[Timer]セクションで指定します。この構成例では、dnf-makecache.serviceサービスが、システムがブートされた10分後に自動実行されるように設定されています。このサービスは、その後、OnUnitInactiveSecパラメータで指定されているとおり、1時間の間、アイドル・モードになります。この時間が終了すると、このサービスが再度実行されます。このサイクルは無期限に続き、1時間ごとに起こります。

RandomizedDelaySec設定では、実行をそのスケジュールよりどのくらい遅らせることができるかの上限値を指定します。この例では、このサービスの実行は、遅くともそのスケジュールの1分後まで許可されています。このパラメータは、指定したスケジュールで同時に開始されるジョブが多くなりすぎないようにするために役立ちます。そのようにしないと、リソースが過負荷になる可能性があります。

OnCalendarも、タスク・スケジューリングのための有用なパラメータです。このパラメータが次のように設定されているとします。

OnCalendar=*:00/10

*:00により毎正時を表し、/10という設定により10分を表しています。したがって、このジョブは、毎正時の10分後に、1時間ごとに実行されるように設定されます。

ジョブのスケジューリングのためのsystemdタイマー・ユニット・ファイルのパラメータをすべて示すリストは、systemd.timer(5)のマニュアル・ページを参照してください。

ヒント:

systemdタイマー・ユニット・ファイルの構成方法など、Oracle Linuxでのsystemdの使用方法に関するチュートリアルは、Oracle Linuxでのsystemdの使用を参照してください。