1. 編集方法
crontabコマンドでcron設定を行います。
crontab [ -u ユーザ名 ] {-l | -r | -e }
optionは以下です。
-u:cronを設定するユーザーを指定
-l:cronを一覧で表示
-r:cronの設定を全消去
-e:cronを設定するエディタを起動する
コマンド実行ユーザー毎に設定が可能。
ユーザー指定なしではrootの設定を参照、編集することになる。
2. cron設定方法
2.1 cron設定エディタの起動
-u
で指定ユーザーのcron設定を編集するエディタを起動する (-uオプションはroot のみ使用可)
rootのcron設定変更時は、-uオプションは不要。
crontab -u root -e
2.2 cron設定の記述方法
分 時 日 月 曜日 <実行コマンド>
指定方法 |
記述例 |
説明 |
固定指定 |
0 15 * * * echo "hello" |
15時になる度にechoの文字列を表示 |
間隔指定 |
*/5 * * * * echo "hello" |
5分ごとに実行 |
複数指定 |
5,10 2 * * * echo "hello" |
2時5分と2時10分に実行 |
範囲指定 |
5 2-4 * * * echo "hello" |
2時5分と3時5分と4時5分に実行 |
様々な書き方の例を記載しておきます。
43 23 * * * 23:43に実行
12 05 * * * 05:12に実行
0 17 * * * 17:00に実行
0 17 * * 1 毎週月曜の 17:00に実行
0,10 17 * * 0,2,3 毎週日,火,水曜の 17:00と 17:10に実行
0-10 17 1 * * 毎月 1日の 17:00から17:10まで 1分毎に実行
0 0 1,15 * 1 毎月 1日と 15日と 月曜日の 0:00に実行
42 4 1 * * 毎月 1日の 4:42分に実行
0 21 * * 1-6 月曜日から土曜まで 21:00に実行
0,10,20,30,40,50 * * * * 10分おきに実行
*/10 * * * * 10分おきに実行
* 1 * * * 1:00から 1:59まで 1分おきに実行
0 1 * * * 1:00に実行
0 */1 * * * 毎時 0分に 1時間おきに実行
0 * * * * 毎時 0分に 1時間おきに実行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02に実行
* 0,8-23 * * * 0時、8時~23時において1分毎に実行
30 5 1,15 * * 1日と 15日の 5:30に実行
分が「*」の場合、1分おきの実行となります。
複数形式と範囲形式を混ぜて記載することも可能。
Cron動作確認
# crond ログの確認
tail -f /var/log/cron
# crond が動いているかどうか
service crond status
/var/log/cron以下にログを出力していない場合、mail実行ログに実行結果が出ている場合があります。
こちらも合わせて確認すると、現状のcron実行状況を確認することができます。
$less /var/mail/user_name
From user@xxx.local Sun Aug 5 09:22:11 2018
Return-Path: <user@xxx.local>
X-Original-To: user
Delivered-To: user@xxx.local
Received: by xxx.local (Postfix, from userid 501)
id 30758FA554; Sun, 5 Aug 2018 09:22:01 +0900 (JST)
From: user@xxx.local (Cron Daemon)
To: user@xxx.local
Subject: Cron <user@xxx> echo "helo"
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
X-Cron-Env: <USER=user>
X-Cron-Env: <HOME=/Users/user>
Message-Id: <20180805002201.30758FA554@xxx.local>
Date: Sun, 5 Aug 2018 09:22:01 +0900 (JST)
helo
設定ファイルの読み込み
cron設定を記述したファイルを読み込むことで、cron設定できます。
echo '*/5 * * * * echo "hello"' > cron.conf
crontab cron.conf
crontabで-rオプションをつけて設定を全削除してしまう場合があります。
そのような場合に、設定ファイルを出力しておき、読み込むことで、すぐに復旧が可能です。
設定ファイルの実体の場所
バックアップする場合、以下のユーザー毎の設定を保存しておくと良いです。
/var/spool/cron/【ユーザー名】
カレントディレクトリにファイル属性をそのままで/var/spool/cron/以下をすべてコピー
sudo cp -pr /var/spool/cron/ .
cron実行でパス通ってなくてエラーになる場合
シェル内で実行するツールは、フルパス指定で記載するのが、望ましい。
他にもいろんな対処方法があるようですが、
一番シンプルなのは、crontab内でPATH定義する案。
必要なものだけ書いておくのが望ましいです。
PATH=/usr/local/bin:/usr/bin:/bin:
* * * * * echo "hello"