- ベストアンサー
cronから起動したシェルスクリプト内のtarが作動しない
シェルスクリプトの中で、フォルダを圧縮するため tar -cvzf ~ しています。このシェルをroot権限cronで毎日動かしたいのですが、試したところ、正常に圧縮されません。 名前だけは存在するのですが、ファイルサイズが20byteしかありません。 シェルスクリプトを手動で起動させた場合は正しく圧縮できます。圧縮されたファイルも1Gありました。 以前、どこかのMLにて同様の報告があり、root宛てのMailを確認するように、というアドバイスまでは乗っていたので、確認したところ、root宛てにメールが来ていませんでした。 対処方法をお教えください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
zオプションがついているという事は、gzip圧縮込みですよね。 ファイルが生成されているという事は、tar自体は動いている可能性が高いと。 そうなると、私が思いつく可能性は2つです。 1.cronの実行時のサーチpathにgzipが無い。 2.OSが分からないので、微妙ですがBSD系のOSや、Solarisなどでは、システム標準のtarがgnu tarでは無い事が多いです。 従って、件の環境変数の絡みで、gnu tarよりも先にシステム標準のtarが呼び出されているため、zオプションが無効でうまく動いていない。 と、こんな風に推測しますが、どうでしょうか?
補足
回答ありがとうございます。 私、あせってOS書いてなかったですね。 OSはRedHat6.2J改訂版です。 which gzipにて/usr/binにある(そこからリンク張られていて実体は/binにありました)とのことでしたので、crontab -eにて PATH=/sbin:/bin:/usr/sbin:/usr/bin の一行を追加してみましたが、結果は同じでした。 また、selenityさんの助言に従い、tarのパスを絶対パス(/bin/tar)で書いてみましたが、結果は変わりませんでした。 手動の場合実行できて、cronからだと実行できない原因として、ファイルの所有者が関係あるのかな?と考えてみたりしています。 しかし、root権限で実行できて、rootで設定されたcronで実行できない、ということなんてあるのでしょうか? ちなみに圧縮対象のファイルの所有者はrootではありません。