最新閲覧日:

シェルスクリプトの中で、フォルダを圧縮するため
tar -cvzf ~
しています。このシェルをroot権限cronで毎日動かしたいのですが、試したところ、正常に圧縮されません。
名前だけは存在するのですが、ファイルサイズが20byteしかありません。
シェルスクリプトを手動で起動させた場合は正しく圧縮できます。圧縮されたファイルも1Gありました。

以前、どこかのMLにて同様の報告があり、root宛てのMailを確認するように、というアドバイスまでは乗っていたので、確認したところ、root宛てにメールが来ていませんでした。

対処方法をお教えください。

A 回答 (3件)

シェルスクリプト内のtarの記述を


tar -cvzf ~ > log.txt 2>&1
のようにして、実行時のメッセージを拾って見ては如何でしょう。

何が起こっているのかの手がかりくらいは掴めるとおもいますけど。
    • good
    • 0

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ではありません。

補足日時:2002/04/04 14:02
    • good
    • 0

多分cronから実行される際の環境変数の不足が原因でしょう。


シェルスクリプト内の「tar ~」の記述で、tarコマンドをフルパスで記述すれば動きませんか?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報