CentOS 7:cronジョブの設定方法

CentOS 7:cronジョブの設定方法

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

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

Linux環境でcronでのコマンド実行結果を分かりやすくメール通知する方法
ここでは、Linux環境でcronでのコマンド実行結果を、mailコマンドを使って分かりやすくメール通知する方法を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

# cat /etc/redhat-release
CentOS Linux release 7.4.1708

/etc/crontabの書き⽅

まずは、viなどのテキストエディタで「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」を確認します。

あとがき

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