CentOS7:cronジョブの設定方法

CentOS7で、cronを使用して指定日時にジョブを実行するには「etc/crontab」「/etc/cron.d/以下のファイル」「各ユーザのcrontabファイル」のいずれかにジョブを設定します。

ここでは「etc/crontab」にジョブを設定する方法をご紹介します。

/etc/crontabの書き⽅

まずは、viなどのテキストエディタで「etc/crontab」を開きます。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * nginx /usr/bin/php -q /usr/share/nginx/servermemo/wordpress/wp-cron.php >/dev/null

上3行は、環境変数の設定部分です。「MAILTO」を設定するとcronの標準出⼒・標準エラー出力を、指定の宛先へメールで送ることができます。

ジョブの登録方法

新たなジョブを登録する際は、上記のように最終行に追記します。

書式:[分] [時] [⽇] [⽉] [曜⽇] [ユーザー名][コマンド]

設定項目  説明
0~59の数字で指定します。
0~23の数字で指定します。
1~31の数字で指定します。
1~12の数字で指定します。
曜日 数字で指定します。0と7が日曜日で1以降は順に月~土となります。
ユーザー名 コマンドを実行するユーザーを指定します。
コマンド フルパスで指定します。

実行周期の記述例

実行周期の記述方法は、いろいろあるので以下を参考にしてみてください。

記述  説明
* * * * * 毎分実行
0 * * * * 毎時0分に実行
*/10 * * * * 10分おきに実行
0 12 * * * 毎日12:00に実行
45 23 * * * 毎日23:45に実行
30 8 * * * 毎日8:30に実行
* 1 * * * 毎日1:00から1:59まで1分おきに実行
5 9-21/3 * * * 毎日9:05,12:05,15:05,18:05,21:05に実行
0 17 * * 1 毎週月曜の17:00に実行
0,30 15 * * 0,2,3 毎週日,火,水曜の15:00と15:30に実行
0 21 * * 1-6 毎週月曜日から土曜まで21:00に実行
0 13 1 * * 毎月1日の13:00に実行
30 5 1,15 * * 毎月1日と15日の5:30に実行
0-10 17 1 * * 毎月1日の17:00から17:10まで1分おきに実行

動作確認

/etc/crontabに新しいジョブを登録したら、指定した周期でジョブが実行されているか、ログファイル「/var/log/cron」を確認します。

まとめ

ちなみに、CentOS7ではジョブのスケジュール実行手段としてcron以外に「systemd timer」もあります。

スポンサーリンク