こんにちは、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
で可能です。
結構使えるので、定期的にログをとりたい時などにお試しください。
アメリエフでは、バイオデータ解析やそのシステム・インフラ環境の開発に興味のあるエンジニア・リーダー候補を募集しています。
www.wantedly.com