unix系OSでは定期的にコマンドを実行するためにcronと呼ばれるデーモンプロセスがあります。決まった時間にログを集計してメールで送るなどの使い方ができて非常に便利です。ここではクーロンの設定方法についてメモを残しておきます。
#1.設定方法
cronの設定ファイルはcrontab -e
で編集できます。次のような書式で実行するタイミングとコマンドを設定します。
分 時 日 月 曜日 コマンド
* * * * * some_command
指定できる値は下記のようになります。
指定対象 | 指定範囲 |
---|---|
分 | 0〜59 |
時 | 0〜23 |
日 | 1〜31 |
月 | 1〜12 または jan〜dec |
曜日 | 0〜7 または sun〜sat |
cronはユーザごとに設定できます。crontab -e
で上記のようにcronを設定すると、設定した時のユーザが実行ユーザになります。当たり前ですが、使用するファイルやスクリプトの権限によっては実行できないことがあるので注意しましょう。
またcronは指定がなければ、実行ユーザのホームディレクトリでコマンドを実行します。スクリプトの作りによっては事前にディレクトリを移動しておく必要があるかも知れないので注意しましょう。
* * * * * cd some_directory; some_command
#2.実行例
例えば、毎日6時30分にディスクの容量がどれだけ使用されているか知りたいときには次のように記入します。
30 6 * * * df -h
この例では毎曜日、毎月、毎日、6時、30分にdf -h
を実行する、という設定になります。*は分に指定すると1分毎、時間に設定すると1時間毎という風に、各単位毎に実行するという意味になります。
10分毎にコマンドを実行したい場合には次のように指定します。
*/10 * * * * df -h
*/xxとすることで毎xxの単位で実行するという意味になります。
#3.その他
##3.1.メールについて
デフォルトではcronでコマンドが実行される毎に、実行したユーザにコマンド実行時の標準出力、標準エラー出力がメールされます。出力結果をメールしてほしくない場合には環境変数MAILTO
を次のように設定します。
MAILTO=''
30 6 * * * df -h
標準出力に出力された結果を別のメールアドレスで受け取り場合には次のように指定します。
MAILTO='someone@somedomain'
30 6 * * * df -h