続いて3度目の備忘録。
cronの設定はサーバごとに使える使えないの違いはあれど、設定できる場合の設定方法は基本同じだと思います。
■準備するもの
・テスト用の環境
home直下で行ってもいいですが、何かあっても嫌なのでテスト用のディレクトリを作成。
mkdir -p ~/test
・動かしたいスクリプトファイル
用意したのはこんなファイル(
test01.sh)。置くのは上で作成したtestディレクトリ。中身はこんな感じ。
echo "`date` : executed automatically." >> $HOME/test/crontest.txt
echo "`date` : 1 hours check." >> $HOME/test/crontest.txt
スクリプト実行時には
$HOME/testディレクトリ下の
crontest.txtというファイルに、cron起動時にログが残ります。
また、スクリプトファイルのパーミッション設定を変更して、スクリプトを実行可能にするのを忘れずに。
今回はテストなので700で問題ないですね。
chmod 700 ~/test/test01.sh
これで設定が変更されたはずです。実行権が付与されていたら、シェルスクリプトとして実行できるはずなので試してください。
~/test/test01.sh
・実行結果の確認
スクリプト実行後、同ディレクトリ内に
crontest.txtというファイルが作成されており、中身がこのようになっていればスクリプトはOKです。
Tue Oct 13 05:39:49 JST 2009 : executed automatically.
Tue Oct 13 05:39:49 JST 2009 : 1 hours check.
■cronの設定(GUI編)
ということで、まずはGUIからの設定。設定の流れは以下の通り。
- さくらインターネットのサーバコントロールパネル >> cron設定ファイルの編集 を開きます。
- 「新規項目の追加」をクリック。
- 「実行コマンド」に“/home/**********/test/test01.sh”と記述。(※**********は自分に割り当てられたディレクトリ名です)
- 「実行させる日時」に実行タイミングを設定。今回は“月=*, 日=*, 時間=*, 分=*/10, 曜日指定なし”にします。
- 送信ボタンを押下。これでOKです。
設定が完了しているか、確認のために、コマンドラインから、作成されるファイルであるcrontest.txtを確認します。
cat ~/test/crontest.txt
上で試した実行ログに続いて、cronによる実行時の記載が増えていればOKです。
Tue Oct 13 05:39:49 JST 2009 : executed automatically.
Tue Oct 13 05:39:49 JST 2009 : 1 hours check.
Tue Oct 13 05:50:01 JST 2009 : executed automatically.
Tue Oct 13 05:50:01 JST 2009 : 1 hours check.
■cronの設定(CUI編)
続いてコマンドラインから設定する方法。
恐らくGUIからの設定だと、5件以上のcronの登録ができないはずです。5件以上登録する場合はこちらを使ってください。
まずはコマンドラインから、現在設定されているcron設定を確認します。
crontab -l
上のGUIからの設定のみしている場合は、恐らく1件表示されるはずです。
ではcronの設定を変更します。
crontab -e
あとはviで記載を変更するだけです。
■日時の設定方法
これまで編集してきたcronの設定ファイルは、次のような構成になっています。
分 時間 日 月 週 パス
0 */1 * * * /home/**********/test/test01.sh
*は毎時(毎日)実行を意味し、
数字は時間指定になります。一定時間間隔での繰り返し実行は
“*/数字”を指定します。
またcronの日時設定には入力の規則がありますので、以下の内容を参考に必要な設定を行ってください。
フィールド
|
指定できる値 |
分 |
0-59, * |
時間 |
0-23, * |
日 |
0-12, * |
月 |
0-12, * |
曜日 |
0-7, * |
設定内容 |
入力例 |
分 |
時 |
日 |
月 |
曜日 |
毎時 0 分に実行する |
0 |
* |
* |
* |
* |
2 時間おきに実行する |
* |
*/2 |
* |
* |
* |
0 時と12 時に実行する |
* |
0,12 |
* |
* |
* |
0 時から 12 時までの毎時 15 分に実行する |
15 |
0-12 |
* |
* |
* |
毎月 1 日の 0 時 0 分に実行する |
0 |
0 |
1 |
* |
* |
毎月 1 日または毎週金曜日の 23 時 59 分に実行する |
59 |
23 |
1 |
* |
5 |
例えば、下の例の場合、毎日毎時15分にhogehoge01.shが実行されます。
15 * * * * /home/**********/test/hogehoge01.sh
下の例の場合、水曜日と土曜日の12時にhogehoge02.shが実行されます。
0 12 * * 3,7 /home/**********/test/hogehoge01.sh
■勘違いしてほしくないこと
それはcronの設定について。
さくらの設定画面にもこう書かれています。
CRON機能は【上級者向け】です。
CRONの設定を誤った場合、思わぬ負荷をサーバに与えることになります。
必要がなければ変更しないでください。
たまにこういう技術を少しだけかじった程度の知識で使う人を見ます。
例えばGUI上で設定できるようになって、設定した後、GUIが使えなくなったらどうやってcronを止めますか?
もしそれがとても重大な問題だったら?
何か問題があったときに「CUIは使えないから」では済まされないかもしれません。
知識を膨らますために技術を試すのは良いことかもしれません。でもその前に、何か問題が起こったときの対処法を理解しておくのは最低限必要なマナーです。
使うのであれば100%理解した上で使うこと。それだけは守ってください。
■関連記事
さくらインターネットのレンタルサーバでbashを使う方法
さくらインターネットのレンタルサーバでのbashの起動時設定 PR