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の使用を参照してください。