【Linux 入門】 cron (コマンドを定期実行)

cron とはcron とは、指定したコマンドを定期的に実行するプログラムです。

なお、最近は cron の代わりに systemd タイマーを利用します。

crontab -e
39 * * * * touch /tmp/test.txt
関連記事:Linux の基本機能
学習ロードマップ
スポンサーリンク

cron の設定

cron は crontab コマンドで設定します。

cronie (crontab) をインストール

crontab は cronie パッケージに含まれるので、cronie をインストールします。

sudo dnf install cronie -y

設定ファイルの編集 -e

crontab -e で設定ファイルを編集できます。

crontab -e
39 * * * * touch /tmp/test.txt

フィールドは前から順番に以下の意味を表します。

フィールド
0-59
0-23
1-31
1-12
曜日0-7 (0 または 7 が日曜)
コマンド任意のコマンド
* はどんな値でも一致

設定の反映・再起動について

設定の反映に再起動は不要です。cron が自動で最新の設定をロードします。

なんらかの理由で再起動したい場合は、systemctl で再起動できます。

sudo systemctl restart crond

cron の動作確認

$ ls -l /tmp/test.txt
-rw-r--r-- 1 ec2-user ec2-user 0  6月 26 10:39 /tmp/test.txt

cron により、39 分に自動で touch /tmp/test.txt コマンドでファイルが作成されました。

cron のログを確認

cron のログの場所は /var/log/cron です。

sudo less /var/log/cron
Jun 26 10:39:01 ip-192-0-2-1 CROND[10000]: (user) CMD (touch /tmp/test.txt)

設定の確認 -l

crontab -l で cron の設定ファイルを確認可能です。

crontab -l
39 * * * * touch /tmp/test.txt

設定ファイルのパス

設定ファイルの実体は /var/spool/cron/<ユーザー名> に存在します。

設定の削除 -r

crontab -r で cron の設定ファイルを削除可能です。

crontab -r
sudo ls /var/spool/cron/
スポンサーリンク

anacron

anacron とはanacron とは、cron とは、指定したコマンドを定期的に実行するプログラムです。

anacron と cron の違い

anacron と cron の主な違いは以下です。

  • 電源が切れている等でスケジュールが未実行であれば、起動時に実行
  • 指定した時間にランダムな幅を持たせられる (同時にスケジュールが集中することを避ける)

これらの特徴は systemd タイマーにも取り込まれているので、RHEL 9 以降は systemd タイマーを使いましょう。

スポンサーリンク

関連情報

学習ロードマップ
関連記事:Linux の基本機能
Linux カーネルの機能
ネットワークのコマンド
関連記事:サーバー