アメリエフのブログ

Amelieff Staff Blog

cronを用いたコマンドの定期実行

こんにちは、hr-kです。今回はcronを用いたコマンドの定期実行について書いていきます。

「毎週このサーバの容量のログをとりたい」、「10分置きにこのコマンドを実行したい」ということがよくあります。 こんなとき、よく使われるのがcronと言うシステムです。 cronはコマンドを定期実行してくれるシステムで、crontabと言うコマンドを通して設定可能です。

では実際に使い方を見ていきましょう。

実行するコマンドの準備

まず、実行したいコマンドたちをひとまとめのシェル(cmd.sh)にしておきます。

#!/bin/sh

cd /home/hoge/fuga
date >> list.txt
ls -lh >> list.txt

実行権限も付加しておきましょう。

chmod 775 cmd.sh

このスクリプトではhome/hoge/fugaに移動して、その中で日時をみるコマンドdateとディレクトリ内のファイルなどを表示するコマンドls -lhを行い、結果をlist.txtに保存します。

定期実行の設定

cronに登録するためにcron用の設定ファイル(cron.conf)を書いておきます。 このファイルは以下の順で書き

分 時 日 月 曜日 実行したいコマンド

例えば以下のように書くと

* 3 * * * /path/to/cmd.sh

毎日午前3時に/path/toにあるcmd.shを実行する、と言う意味になります。 /,なども意味を持ち、

*/10 3 * * 0,6 /path/to/cmd.sh

とすると毎週日曜日(0)と土曜日(6)の午前3時台に10分間隔でcmd.shを実行と言う意味になります。 (参考ページ)

実装

ここまで準備ができたらあとは簡単。作ったcron.confを登録するだけ。以下のコマンドで登録してしまいましょう。

$ crontab cron.conf

登録できたか確認するには

$ crontab -l
*/10 3 * * 0,6 /path/to/cmd.sh

などで、cron.confに書いた内容が表示されれば正常に動作しています。 登録した内容の削除は

$ crontab -r

編集は

$ crontab -e

で可能です。

結構使えるので、定期的にログをとりたい時などにお試しください。