systemdタイマーとは?

—

by

in

systemdタイマーとは

systemdはLinuxの起動・サービス管理システムですが、タイマー機能を使うことでcronに代わるスケジュール実行が可能です。タイマーは.timerユニットとして定義され、対応する.serviceユニットを指定した時刻や間隔で起動します。

主な特徴

  • systemdと統合:サービスと同じ設定ファイル形式で管理できます。
  • 高精度:秒単位のスケジュールや起動後の遅延も設定可能です。
  • 永続化:システムが再起動しても、失われた実行を自動的に補完できます。

基本的な構成

systemdタイマーは2つのユニットで構成されます。

  • .timerユニット:実行タイミングを定義。
  • .serviceユニット:実際に実行するコマンドやスクリプトを定義。

例:簡単なタイマーの作成

以下は、毎時0分にメッセージを表示するタイマーとサービスの例です。

[Unit]
Description=毎時メッセージ表示サービス

[Service]
Type=oneshot
ExecStart=/usr/bin/echo "Hello, world!"
[Unit]
Description=毎時メッセージ表示タイマー
Requires=hello.service

[Timer]
OnCalendar=*-*-* *:00:00
Persistent=true

[Install]
WantedBy=timers.target

このファイルをそれぞれ/etc/systemd/system/hello.serviceと/etc/systemd/system/hello.timerに保存し、以下のコマンドで有効化します。

systemctl daemon-reload
systemctl enable --now hello.timer

有効化すると、systemctl list-timersで次回実行時刻を確認できます。

よく使われる設定項目

  • OnCalendar=:cron形式に近い日時指定。
  • OnActiveSec=:ユニットが有効化された時点からの秒数。
  • OnBootSec=:システム起動後の秒数。
  • Persistent=true:システムが停止していた間に失われた実行を補完。

まとめ

systemdタイマーは、cronに比べて管理が一元化され、systemdの恩恵(ログ統合、依存関係管理、永続化)を活かしたスケジュール実行が可能です。サービスユニットと組み合わせて、サーバーのメンテナンスや定期タスクをシンプルに実装しましょう。