【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 とは、指定したコマンドを決まった時間に定期的に実行するプログラムです。

anacron と cron の違い

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

  • パソコンの電源が切れているなどで今日の分が未実行であれば、遅れてでも実行
  • 周期が最短1日 (cron は分単位)
  • 指定した時間にランダムな幅を持たせられる (同時にリクエストが集中するのを避けたり)
スポンサーリンク

関連情報

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