#crontabとは
設定した時間に設定したコマンドを実行する管理コマンドです。
以下wikiより抜粋
Unix系OSにおいて、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。
一般にcrontabコマンドで編集されたスケジュール内容は、crondデーモンにより実行される。
crondはバックグラウンドで稼動し、毎分ごとに実行すべきスケジュールがないか確認し、もし実行すべきジョブがあれば、それを実行する
#crontabのコマンド
crontabのオプションと意味
crontab [ -u user ] { -l | -r | -e }
-u: cronを設定するユーザーを指定
-l: cronを一覧で表示
-r: cronの設定を全消去
-e: cronを設定するエディタを起動する
以下コマンドでログインしているユーザーで設定ができます。
crontab -e
編集時の書式は以下となります。
分 時 日 月 曜日 <実行コマンド>
分 0-59
時 0-23
月内日 1-31
月 1-12
曜日 0-7 (0 と 7 は日曜日)
※「*」は全てが対象となります。
##・基本指定
毎月1日の14時15分にhoge.shを実行する設定
15 14 1 * * /bin/sh /home/hoge.sh
毎日動かす場合は下記となります。
15 14 * * * /bin/sh /home/hoge.sh
##・複数指定(,)
15分、20分に動かす場合は下記となります。
15,20 14 * * * /bin/sh /home/hoge.sh
##・間隔指定(/)
15分毎に動かす場合は下記となります。
*/15 * * * * /bin/sh /home/hoge.sh
##・範囲指定(-)
14時から20時の15分の時に動作します。一日7回。
15 14-20 * * * /bin/sh /home/hoge.sh
#設定ファイルの読み込み
crontabコマンドで直接編集する方法でも良いのですが、
オプションのe(編集)とr(削除)が隣にあり誤って削除する可能性もあり、
別ファイルで管理して読み込んだ方が良いそうです。
下記コマンドで反映できます。
crontab [ -u user ] file
誤って削除した場合も、元のファイルがある為、修正が可能です。
#備考
・cronの実行コマンドは、実行ユーザーのホームディレクトリで実行されます。
実行パスはフルパスで記載すれば、特に気にしなくて大丈夫です。
・実行権限は実行ユーザーとなります。(ファイル・フォルダ操作をする処理の場合は意識する必要がある)
・cronの標準出力、標準出力エラーは、mailコマンドを経由して実行ユーザーのメールボックスに送信されます。
内部でエラー処理を行ってる場合は出力の必要が無いので、下記のように捨ててしまうのも。
※ここでは「>/dev/null 2>&1」は出力を捨てるとだけ覚えて居れば
15 14 1 * * /bin/sh /home/hoge.sh
以上crontabの備忘録。