OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 暇なときにでも
  • 質問No.245814
  • 閲覧数781
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 0% (0/4)

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

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

対処方法をお教えください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル11

ベストアンサー率 58% (190/327)

zオプションがついているという事は、gzip圧縮込みですよね。

ファイルが生成されているという事は、tar自体は動いている可能性が高いと。

そうなると、私が思いつく可能性は2つです。

1.cronの実行時のサーチpathにgzipが無い。
2.OSが分からないので、微妙ですがBSD系のOSや、Solarisなどでは、システム標準のtarがgnu tarでは無い事が多いです。
従って、件の環境変数の絡みで、gnu tarよりも先にシステム標準のtarが呼び出されているため、zオプションが無効でうまく動いていない。

と、こんな風に推測しますが、どうでしょうか?
補足コメント
L_Seraph

お礼率 0% (0/4)

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

その他の回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 41% (324/772)

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


  • 回答No.3
レベル11

ベストアンサー率 58% (190/327)

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

何が起こっているのかの手がかりくらいは掴めるとおもいますけど。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ