• ベストアンサー

cronから起動したシェルスクリプト内のtarが作動しない

シェルスクリプトの中で、フォルダを圧縮するため tar -cvzf ~ しています。このシェルをroot権限cronで毎日動かしたいのですが、試したところ、正常に圧縮されません。 名前だけは存在するのですが、ファイルサイズが20byteしかありません。 シェルスクリプトを手動で起動させた場合は正しく圧縮できます。圧縮されたファイルも1Gありました。 以前、どこかのMLにて同様の報告があり、root宛てのMailを確認するように、というアドバイスまでは乗っていたので、確認したところ、root宛てにメールが来ていませんでした。 対処方法をお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • you-m
  • ベストアンサー率58% (190/327)
回答No.2

zオプションがついているという事は、gzip圧縮込みですよね。 ファイルが生成されているという事は、tar自体は動いている可能性が高いと。 そうなると、私が思いつく可能性は2つです。 1.cronの実行時のサーチpathにgzipが無い。 2.OSが分からないので、微妙ですがBSD系のOSや、Solarisなどでは、システム標準のtarがgnu tarでは無い事が多いです。 従って、件の環境変数の絡みで、gnu tarよりも先にシステム標準のtarが呼び出されているため、zオプションが無効でうまく動いていない。 と、こんな風に推測しますが、どうでしょうか?

L_Seraph
質問者

補足

回答ありがとうございます。 私、あせって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ではありません。

その他の回答 (2)

  • you-m
  • ベストアンサー率58% (190/327)
回答No.3

シェルスクリプト内のtarの記述を tar -cvzf ~ > log.txt 2>&1 のようにして、実行時のメッセージを拾って見ては如何でしょう。 何が起こっているのかの手がかりくらいは掴めるとおもいますけど。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

多分cronから実行される際の環境変数の不足が原因でしょう。 シェルスクリプト内の「tar ~」の記述で、tarコマンドをフルパスで記述すれば動きませんか?

関連するQ&A