- - PR -
cron設定について
1
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-27 21:57
現在YYYYMMDDの日付文字列をパラメータとするDBバックアップスクリプトを使用し、必要なときに手動でバックアップしておりました。今回、cronにて自動で起動したいと思い次のような設定を行ったのですが、date の箇所の記述でうまく動作しません。
0 5 1 * * /home/db_backup.sh `/bin/date "+%Y%m%d"` > /dev/null 2>&1 どこが誤りなのかわからない状態です。どなたかご教授いただけますでしょうか。 | ||||||||||||||||||||
|
投稿日時: 2005-01-27 22:08
という状態なら、まずなにより /dev/null にリダイレクトせずに、ログファイルにリダイレクトしてその内容を 確認すべきだと思うんですが、やったんでしょうか? 動作確認取れてない状態でも魔法の言葉のように "> /dev/null"を書く人は 結構見かけるわけだけど・・・ また、最終的に動かしたいのは
なのは分かるんですが、
というシェルスクリプトをcronで動かして結果を見てみたり、 さらにはその先頭行を
や
に変えてみることで、bashコマンドラインのプレース展開の様子などの 確認も出来ます。 | ||||||||||||||||||||
|
投稿日時: 2005-01-28 06:14
もちろん、スクリプトは妥当なもので、そのかなでログ出力等も行っておりコマンドラインで
/home/db_backup.sh `/bin/date "+%Y%m%d"` をキックすれば期待通りの結果が得られます。 また、ご指摘のとおり #!/bin/bash /home/db_backup.sh `/bin/date "+%Y%m%d"` なるシェルをcronで動かした場合も期待する結果が得られます。 シェルに渡すパラメータを生成している`/bin/date "+%Y%m%d"`の代わりに "20050125"を設定した場合も正常な動作をします。 `/bin/date "+%Y%m%d"`が原因かとは思うのですが、このようなパラメータの設定は cronでは行えないものなのでしょうか? | ||||||||||||||||||||
|
投稿日時: 2005-01-28 06:48
で、冒頭のcronの記述から > /dev/null 部分を外した場合は
意図した通りの結果になるんですか?ならないんですか? そして、意図してない日付文字列が渡された際に backup.shはどのようなログを残すんですか? # backup.shではその辺のエラー処理を行っているんでしょうか? また、 echo `/bin/date "+%Y%m%d"` > /tmp/temp.$$ などとしてみた際の結果は? cronと言っても、登録したコマンドラインを登録したユーザの空間で 特定の時間に実行してるだけに過ぎないんだから、 ・どのようなコマンドラインが渡されたか ・コマンドラインをどのように解釈したのか、が問題です。 クォーティングを含んだコマンドラインだと、渡された時点でクォートが外れてて 意図した通りにならなかった、っていうのは十分ありえます。 そういう意味では、 また、ご指摘のとおり
という動きにしてしまうのがもっとも無難でしょう。 [ メッセージ編集済み 編集者: Mattun 編集日時 2005-01-28 07:11 ] | ||||||||||||||||||||
|
投稿日時: 2005-01-28 12:45
括弧でくくってみてはいかがでしょうか。以前、crontab において、上手く動作しないコマンドがあった際に、括弧でくくったら動作した記憶があります。
0 5 1 * * ( /home/db_backup.sh `/bin/date "+%Y%m%d"` ) > /dev/null 2>&1 参考まで。 | ||||||||||||||||||||
|
投稿日時: 2005-02-13 15:28
アドバイスありがとうございます。
残念ながら、括弧でくくってみましたが実行されませんでした。 結局、パラメータなしのシェルをcronでキックし、そのシェルで 日付文字列をパラメータとしてdb_backup.sh することに妥協しました。 ありがとうございました。 |
1