- - PR -
findを用いたファイル削除がcronで実行できない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-01 13:59
vixie-cronには変な仕様とかバグとかも結構あるですからねえ。
| ||||
|
投稿日時: 2007-09-04 18:41
みなさんありがとうございます。
cronは…、動いています。 省略しましたが、cronには他にも設定してあります。 cronでバックアップサーバのバックアップファイルを作成しています。 その設定は問題なく動いています。 とりあえず 「-exec rm {}」を「-exec rm -rf {}」にして 様子を見てみます。 ちなみにfindでの削除対象ファイルサイズが3G近いことは 関係ないですよね・・・? | ||||
|
投稿日時: 2007-09-04 19:45
こんばんは。
登録したジョブが実行されるかどうかが焦点なので、コマンドの中身よりも、ジョブの登録・実行確認をもう少し突き詰める方が優先だと思います。 一つありがちな話としては、crontabファイルの最後にジョブを追加したつもりで、そのジョブの行 ( ファイルの最終行 ) に改行がないと、そのジョブが認識されない、というのもありませんでしたっけ。 | ||||
|
投稿日時: 2007-09-12 13:30
お世話になってます。
あまりうれしくないことが分かりました。 [root@bkpsv root]# crontab -l #0 6 * * * find /data01/A -name \*.tar.gz -atime +4 -exec rm {} \; 0 6 * * * find /data01/A -name \*.tar.bz2 -atime +3 -exec rm {} \; 0 0 * * 1 /backup/script/sql_php_bak.sh 0 1 * * 1 find /backup/data/ -name \*.tar.gz -mtime +29 -exec rm {} \; #0 6 * * * find /data01/C -name \*.tar.gz -atime +8 -exec rm {} \; 0 7 * * * find /data01/C -name \*.tar.bz2 -atime +7 -exec rm {} \; 今回問題があるのは二行目です。 しかしほぼ同じ設定の最後の行のジョブは、問題なく稼動しています。 Cサーバからも、冒頭に上げたものとほぼ同じシェルで、 Bサーバにバックアップしています。 バックアップファイルの作成方法と転送方法が同じで、 サーバ上の保存先ディレクトリが異なるだけなのに、 ほぼ同じcronのジョブが動かないとはこれまたどういうことでしょうか??? ![]() どうかよろしくお願いします。 [ メッセージ編集済み 編集者: octpusyo 編集日時 2007-09-12 13:31 ] | ||||
|
投稿日時: 2007-09-12 16:07
問題の切り分けをするために、以下のように登録して、正しくcronが実行されているか
確認してはいかがでしょう?
・シスログに正しく start -> success が出力されているなら、find コマンドの実行実績と 戻り値に整合性がとれてないことがわかります。 ・シスログに start しか出力されていないなら、find -> rm の過程でコケているわけです。 ・シスログに start すら出力されないなら cron のバグを疑うことができますよね? | ||||
|
投稿日時: 2007-09-12 16:42
温州蜜柑さんありがとうございます。
そんな方法があるとは知りませんでした。 ただ…検証機が無いので、すぐには試せそうもありません。 さすがにいきなり本番機で試すわけにもいきませんので…。 でも勉強になりました! ありがとうございます。 こちらもまた時間があるときに試すしかなさそうです。 | ||||
|
投稿日時: 2007-09-14 09:31
未記入さんのcronログ調べました。
きちんと稼動ログが残ってました。 温州蜜柑さん案には、「検証機で…」と申し上げましたが、 Java僧案のシェル化をこっそりやってみました。 うまくいきました! シェルで動かすと、きちんと意図したとおりに期限切れファイルが削除されます。 とりあえずこれで様子を見るとして… 原因はどう追究していけばいいのでしょうか。 もはや解決といえば解決なんですが、後学のため、 できれば根本的な原因を突き止めたいと思っています。 どうかまだまだ、よろしくお願いします。 |