cron では無く、systemd で定期実行を定義する
Amazon Linux 2 と Amazon Linux 2023 を比較したドキュメントの Task scheduling に記載がありますが、Amazon Linux 2023 には標準で cron がありません。
The cronie package was installed by default on the AL2 AMI, providing support for the traditional crontab way of scheduling periodic tasks. In AL2023, cronie is not included by default. Therefore, support for crontab is no longer provided by default.
You can optionally install the cronie package to use classic cron jobs. We recommend that you migrate to systemd timers due to the added functionality provided by systemd.
Amazon Linux 2023 で cron を利用出来るようにする に書いた通り、cron を追加することも出来ますが、systemd を使って定期実行を実現することも可能です。
検証環境¶
以下の環境で検証しました。
対象 | バージョン |
---|---|
Amazon Linux | 2023 |
systemd による定期実行設定の流れ¶
定期実行の設定を行う場合、従来の cron であれば「一箇所に設定を行う」で完結していました。 ですが、systemd で設定する場合は以下の 2 段階に分けて設定する必要があります。
- ジョブを呼び出す .service ファイルの定義
- 定期実行処理を定義する .timer ファイルの定義
定期実行ジョブを設定してみる¶
実際に定期実行ジョブを設定してみます。 今回は job1
という名称にします。 この場合、以下の 2 ファイルを定義することになります。
No. | 種別 | ファイルパス |
---|---|---|
1 | service | /etc/systemd/system/job1.service |
2 | timer | /etc/systemd/system/job1.timer |
今回は以下の内容でふたつのファイルを新規作成しました。
/etc/systemd/system/job1.service¶
1 2 3 4 5 6 7 8 9 |
|
/etc/systemd/system/job1.timer¶
1 2 3 4 5 6 7 8 9 |
|
定期実行タスクの開始¶
service を手動で追加したときと同様、systemctl daemon-reload
を実行したあと、timer を開始します。 具体的には以下を実行します。
1 2 3 |
|
ログの確認¶
systemd から起動されている為、ログは journalctl
で一括して管理・閲覧することが出来ます。 job1
timer に限定してログを確認するには以下のように実行します。
1 |
|
tail -f
のイメージで、リアルタイムにログを確認するには以下のように実行します。
1 |
|