リアルタイム・タイマー・ユニットの構成

リアルタイム・タイマーは、crontabのイベントと同様に、カレンダ・イベントでアクティブ化します。オプションOnCalendarは、タイマーがサービスを実行する日時を指定します。

  • 必要に応じて、タイマー・ユニットによってトリガーされるサービスを定義する.serviceファイルを作成します。次の手順では、サンプル・サービスは、更新スクリプトを実行するサービス・ユニットである/etc/systemd/system/update.serviceです。

    サービス・ユニットの作成の詳細は、「ユーザーベースのsystemdサービスの作成」を参照してください。

  • サービスを実行する時間と頻度を決定します。この手順では、タイマーは月曜日から金曜日まで2時間ごとにサービスを実行するように構成されています。

このタスクでは、カレンダ・イベントに基づいて実行するサービスをトリガーするシステム・タイマーを作成する方法を示します。カレンダ・イベントの定義は、cronジョブに入れるエントリと似ています。

  1. 次の内容で/etc/systemd/system/update.timerを作成します:
    [Unit]
    Description="Run the update.service every two hours from Mon to Fri."
    
    [Timer]
    OnCalendar=Mon..Fri 00/2 
    Unit=update.service
    
    [Install]
    WantedBy=multi-user.target

    OnCalendarの定義は、より詳細なOnCalendar=weekly定義などの単純な設定とは異なります。ただし、設定を定義する形式は、次のように一定です:

    DayofWeek Year-Month-Day Hour:Minute:Second

    次の定義は、"毎月最初の4日間の正午で、月曜日または火曜日"を意味します。

    OnCalendar=Mon,Tue *-*-01..04 12:00:00

    OnCalendarを定義するその他の方法、およびシステム・タイマー・ファイルで構成できるその他のタイマー・オプションについては、systemd.timer(5)およびsystemd.time(7)のマニュアル・ページを参照してください。

  2. このタイマーに関連するすべてのファイルが正しく構成されていることを確認します。
    systemd-analyze verify /etc/systemd/system/update.*

    検出されたエラーは画面に報告されます。

  3. タイマーを開始します。
    sudo systemctl start update.timer

    このコマンドは、現在のセッションのみのタイマーを開始します。

  4. システムのブート時にタイマーが開始されていることを確認します。
    sudo systemctl enable update.timer