cron
cronとは?
cronとは指定した時間にジョブを自動実行してくれる機能。(Windowsのタスクスケジューラみたいなもの)
ジョブが実行されなくても再実行してくれない。
crondプロセスが常駐してジョブを実行する。
設定方法がいくつかある
/etc/crontab
システム向け
root権限で実行される
編集方法はviで直接編集
「分 時 日 月 曜日 ユーザ コマンド」の形式で記入
反映にはcrondの再起動が必要
RedHat系では非推奨な模様
/etc/cron.d/*
サービス向け
root権限がないとディレクトリにファイルを作成できない
フォルダにファイルを配置する(もしくはファイルをviで直接編集)
「分 時 日 月 曜日 ユーザ コマンド」の形式で記入
各ユーザーのcrontabファイル(/var/spool/cron/**** ※****はユーザ名。rootユーザーならroot)
ユーザー向け
ユーザーごとに作成されるので誰でも使える。
編集方法はcrontab [-u user] -e
または crontab [-u user] ファイル名 ※上書きされるので注意
「分 時 日 月 曜日 コマンド」形式で記入
自動的に反映される
「分 時 日 月 曜日 コマンド」形式
分 :0-59
時間:0-23
日 :1-31
月 :1-12 または jan-dec
曜日:0-7 (日曜日が0と7)または sun-sat
指定方法
固定指定
0 15 * * * echo "foo"
間隔指定
*/5 * * * * echo "foo"
複数指定
0,30 15 * * * echo "foo"
範囲指定 2時5分、3時5分...5時5分
5 2-5 * * * echo "foo."
複合パターンも可能
例
1,2-3
1-10/2 1-10の範囲で2ごと
MAILTOについて
cron実行時にメールを送信する機能
cronで実行するジョブがstdout、stderrを出力しなければメール送信されない
設定方法
メール送信されないように設定する場合
MAILTO=""
メール送信されるように設定する場合 ※複数指定の場合は「,」で区切って設定。
MAILTO="tatsuhi10@example.com,tethuhi10@example.com"
ファイルで設定する場合 #TODO 要確認
/etc/sysconfig/crond
CRONDARGS="-m off"
再起動が必要
その他
cronで実行されるコマンドは、実行ユーザーのホームディレクトリで実行される
参考
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html
http://multix.jp/rootmail-overflow/
https://qiita.com/takahashi-kazuki/items/77d669d4414c6ec185f9
https://qiita.com/croissant1028/items/87f4f7a79c94534cbef8
http://www.reqtc.com/column/anacron1.html
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html
#Linuxコマンド