6 systemdタイマーの使用
systemd
のタイマー・ユニット・ファイルを使用して、同じ目的でcrontab
およびその他のcron
ジョブを使用するcron
ユーティリティと同様の方法でタスクをスケジュールします。
特定のサービスを使用してシステム内で機能するパッケージには、独自のsystemd
タイマー・ユニット・ファイルが含まれます。 これらのパッケージがOracle Linux 8にインストールされると、タイマー・ユニット・ファイルが自動的に含まれます。 アクティブなタイマー・ユニット・ファイルを表示するには、次のコマンドを実行します:
systemctl list-unit-files --type=timer
ノート:
タイマー・ファイルのリストは、Oracle Cloud Infrastructureインスタンスや物理システムなど、Oracle Linux 8が実行されている場所によって異なります。
各タイマー・ユニット・ファイルには、タスクのスケジュールを管理するパラメータ設定が含まれています。 たとえば、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 8システムの使用の詳細は、「Oracle Linux 8: systemdを使用したシステムの管理」を参照してください。