Linux

【Linux】Cronの設定方法について・リファレンス

     
       

cronの設定方法についてよく失念するため、備忘録して記事にしておきます。自分のメモ用に残すため、わかりにくい部分などはご容赦ください。

またcrontabの設定例についてはこちらから参照できますのでよかったらコピペで流用してください。

Cronとは?

cronはバッチ処理などと呼称されているプログラムのことで、UNIX系OSで標準で備わっていることが多いデーモン(常駐プログラム)の一種です。Macでも利用することができます。

設定したプログラムを動かすシステム時間に応じて定期的に実行をかけてくれるプログラムになってます。

cronを設定するにはcrontab(cron tableの略)に実行したいファイル名やコマンドを記述しておくと定期的にcrond(cron daemonの略)が実行してくれる算段になってます。詳しくは下記サイトを参照してください。

参照元:http://e-words.jp/w/cron.html

下記では主にcrontabにどのような記述をすれば定期実行されるのかを詳しく紹介していきます。

crontabの設定方法について

crontabの実行コマンド(オプション)

crontabを参照、追加する場合はUNIX系OS環境のターミナル(CLI)で下記のコマンドを実行していきます。

# crontabの編集
crontab -e

# crontabに設定されている内容の参照
crontab -l

# crontabの設定全削除
crontab -r

# ユーザ指定オプション
crontab [-u root] -e

基本は-e-lしか利用しないです。また-rは全削除になるため、一部を削除する場合は-eを使います。

crontabファイルの記述方法

crontab -eを実行したあとのMacの何も記述されていない状態は下記のキャプチャです。

この中に実行する内容を記述してきます。

#凡例 分 時 日 月 曜日 コマンドもしくはスクリプト

# 例:1分ごとに実行する場合
*/1 * * * * /home/test.sh 

# 例:1時間ごとに実行する場合
* */1 * * * /home/test.sh 

このように記述すれば定期実行が可能になります。また複数の定期実行を記述する場合は改行をして記述してきます。

各項目の上限は以下の表のようになります。

曜日
数値上限0~590~231~311~120~7(0と7が日曜日)
もしくは sun~sat

毎分、毎時・・・実施したい場合はアスタリスク(*)で埋めることで設定できます。

またcrontabではリストと範囲、共存、間隔値が指定できます。

設定例説明
リスト1,10,12 分で記載した場合は1分・10分・
12分おきに実行されます。
月で記載した場合だと
1月・10月・12月に実行されます。
範囲1-3     分で記載した場合1分・2分・3分の
ときに実行されます。
共存2,4-7リストと範囲を共存させた場合の設定
曜日で設定した場合、火曜・木曜・
金曜・土曜・日曜で実行されます。
間隔値1-5/2範囲の中でも一定間隔で実行可能です。
時で記載した場合、1時・3時・5時
で実行されます。
設定例だと1-5の中で2ごとの間隔で
実行するという意味合いになります。

crontabの記載例

下記にコメントで解説を交えつつ記載してきます。

# 毎日11:30に実行
30 11 * * * /home/test.sh

# 毎週木曜日23:15に実行
15 23 * * 4 /home/test.sh

# 毎日13:59,15:59,19:59に実行
59 13,15,19 * * * /home/test.sh

# 毎月1日から10日の13:10に実行
10 13 1-10 * * /home/test.sh

# 奇数の月の13:10に実行
10 13 * */2 * /home/test.sh

# 毎日0:45、2:45、4:45、6:45、8:45、10:45に実行
45 0-10/2 * * * /home/test.sh

crontab記述後の反映・動作確認

設定反映

crontabはvimで開かれると思われるので、escキーを押し、:wqで保存をしてください。※vimの入ってない環境等どんな挙動をするか知らないので間違っていたら申し訳ございません。

その後下記のコマンドでcrondを再起動してcrontabの設定を反映してください。

# crondのデーモン再起動
service crond restart

# 上記コマンドが実行できない場合
/etc/rc.d/init.d/crond restart 

# 上記コマンドが実行できない場合
/etc/init.d/cron restart

動作確認

crondが起動しているかは下記コマンドで確認が可能です。

# crondのデーモン起動状況確認
service crond status

# 上記コマンドが実行できない場合
/etc/rc.d/init.d/crond status

# 上記コマンドが実行できない場合
/etc/init.d/cron status

下記のディレクトリにログが吐き出されているか確認をおこないます。

# 全ログ表示
cat /var/log/cron

# 特定設定の抽出
grep [検索文字] /var/log/cron

# リアルタイムに待ち構えて確認する場合
tail -f /var/log/cron

まとめ

定期実行プログラムに関してcronが一番メジャーだと思いますが、そのほかにcrontabの管理ライブラリなどもあったりしますのでいつかその記事もかけたらと思ってます。

crontabの記述で迷った方、失念してしまった方などに本記事がお役立てできたら幸いです。

参照元

クーロン(cron)をさわってみるお

cronの設定ガイド

【Linux】Crontab設定

 

 

 

 

 

 

スポンサードリンク