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時間に一回あたりの設定がよいと思います。