• ベストアンサー

cronでifconfigコマンドを使用するスクリプトを実行すると値が

cronでifconfigコマンドを使用するスクリプトを実行すると値が取れないのですが、 なぜなんでしょうか?どうすれば値が取れるようになるのでしょうか? OSはubuntu10.04を使っています。 直接実行した場合はファイル出力されるのですが、 cronで実行した場合は日付しか出力されません。 どなたかよろしくお願いします。 -----test.sh----- date >> test.log ifconfig >> test.log -----------------

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

  • ベストアンサー
回答No.3

あ(^^; 脊髄反射で書いてしまった。。。 「/bin」は corn(8) の持っている $PATH に含まれていますね。 失礼しました。 すると、grep はちゃんと動いており出力が空なのには別の原因があるのでしょう。 (本題から外れそうなので踏み込むのはやめときます) crontab に設定を施すよりはいちいちフルパスで書く方が簡単だったりしませんか? 「/sbin/」の6文字を書きたくない理由が思いつきません。

hurikake
質問者

お礼

ありがとうございます。 cronで実行されたifconfigを見るとハードウェアアドレスじゃなくてHWaddrになっていたため grepされていませんでした。 man 5 crontab の5ってどうゆう意味ですか?

その他の回答 (2)

回答No.2

いや、だから。 「/sbin/ifconfig」と書かなきゃ「ifconfig」だけでは動かないのだから 「grep」だけはで動かず「/bin/grep」と書く必要がある事に気付きましょうよ。 どうしてそうなのか(コマンドをフルパスで指定する事)は考えてもわからないかも知れませんが 逆に『通常はコマンドのパスは書かなくても実行できる』のはなぜだかわかりますか? cron は bashrc などを読みません。$PATH などの変数は corn の中に(独自に)持っているものを使います。 しかしこれは設定ファイル適宜記述すればオーバーライドできます。 man 5 crontab を読んでください。 やってしまいがちな正しくない記述法がばっちり書かれています。

  • 774danger
  • ベストアンサー率53% (1010/1877)
回答No.1

ifconfigをフルパスで書いたらどうなりますか? Ubuntuではifconfigがどこにあるかわからないんですが、/sbin/ifconfig あたりだとしたら、 /sbin/ifconfig >> test.log に変更

hurikake
質問者

お礼

ありがとうございます。 /sbin/ifconfig >> test.log にしたら出力されるようになりました。 /sbin/を書かなくても出力されるようにするにはどうしたら いいですか?

hurikake
質問者

補足

すいません。下記をcronで実行すると値が出力されません。 grepしなければちゃんと出力されるんだが・・・ date > test.log /sbin/ifconfig | grep ハードウェアアドレス >> aaa.log

関連するQ&A