June 26, 2005

シェルスクリプトを使ってcronを一括実行

第7回

前回、cronが5つまでしか設定できないので
cronの命令をずらずら後ろに並べてまとめることで複数のcronを1回に実行できるという話をしました。
ただ、この方法だと、1行に書くのでとても見にくいです。
そこでシェルスクリプトを使ってcronをまとめて実行する方法を掲載いたします。

シェルスクリプトとは、複数の処理をまとめて行なう(バッチ処理)ときに使われるのですが
起動するコマンドを集めてテキストファイルに保存し
そのファイルに実行権を与えることによって、順次指定したコマンドを起動することができます。

さくらインターネットは、シェルスクリプトもサポートしています。

では、シェルスクリプトはどういうふうにしたらよいのでしょう。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /home/midilin/www/MT/
./tools/run-periodic-tasks

というテキストファイルを作ります。
これで1行目はシェルスクリプトを使うための宣言(お約束とでも思ってください)
次の2行目のPATH、これも同じお約束で、さくらインターネットでシェルスクリプトを実行する為に
読み込む関数みたいなものです。
3行目、4行目は
MovableTypeでcronを実行するときに指定したもの
「cd /home/midilin/www/MT/; ./tools/run-periodic-tasks」
を2行に分けて書きました。

上記のファイルを、テキストファイルとして保存します。
ファイル名は何でもよいですが、cronというフォルダを作成して、cron1.shに保存したとします。

で、cronの設定では
「cd /home/midilin/www/MT/; ./tools/run-periodic-tasks」
と今まで指定していたところを
このテキストファイルを指定してあげます。

/home/midilin/www/cron/cron.sh

こうすると、cronフォルダにあるcron.shを実行してくれるので
同じMovableTypeを自動実行してくれます。


これを応用して、MovableTypeのcronの設定と他のcronの設定をまとめて書いてしまえばよいわけです。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cronA
cronB
cronC
cronD
cronE
cronF
cd /home/midilin/www/MT/
./tools/run-periodic-tasks


これをcron.shというファイルで保存して、
1つのcronを実行させてあげれば、一気に実行させることができます。

ただし、あまり負荷のかかるプログラムの実行をcronで行うのは辞めましょう。
cronは他の方も使われている共通のところで行われるため、あまり負荷がかかるものを使用すると
強制削除される可能性もあります。
常識の範囲で使われることをお勧めします。

また、cronの設定は1時間に2個以上の場合強制削除される可能性もあると
さくらインターネットに記述してあるので、1時間に一回あたりの設定がよいと思います。

投稿者 midilin : 12:10 AM | コメント (6)