0

cronを介したBASHスクリプトの実行(crontab -eを介して呼び出される)に関連する奇妙な問題があります。

スクリプトは次のとおりです。

#!/bin/bash

SIG1="$(iwconfig wlan0 | awk '/Quality=/ { print $2} ' | cut -c 9-10)"
SIG2="$(iwconfig wlan0 | awk '/Quality=/ { print $2} ' | cut -c 12-13)"

echo "$SIG1:$SIG2" >> test.txt
exit

コマンドラインから実行すると、期待される出力が45:70テキストファイルの最後にエコーされます。ただし、cronを介して(crontab -eを使用して)スクリプトを実行すると、次のエントリが表示されます。

* * * * * bash /home/rupert/test.sh

コロン(:)がテキストファイルにエコーされ、SIG1とSIG2の値が作成されないため、理由がわかりません。cron経由で実行するとスクリプトが台無しになるのはなぜですか?

FWIW、追加処理なしのiwconfigwlan0の出力は次のとおりです。

wlan0     IEEE 802.11abgn  ESSID:"plumternet"
          Mode:Managed  Frequency:2.452 GHz  Access Point: 00:18:84:2A:68:AD
          Bit Rate=54 Mb/s   Tx-Power=15 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=46/70  Signal level=-64 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

WiFiリンク品質の値「46/70」をLCD画面に表示したいので、これをすべて実行しています。使用するプログラムは、テキストファイルを読み取ってこれを実行します。ただし、cronを介して実行すると、値が失われます... ???

「/」がスクリプトで問題を引き起こしている可能性があると考えていたため、cut-c9-10とcut-c12-13を使用していますが、cut-c9-13を使用できれば幸いです。問題が解決するかもしれないと思ったが、解決しなかった。

ヘルプ!!

かっこいい、皆さんのおかげで、私はそれがPATHの問題であることに気づき、iwconfig(/ sbin / iwconfig)へのフルパスを与えるだけで修正されました。これがLCD画面の写真で、正しい情報がすべて表示されています。

http://img835.imageshack.us/img835/4175/20100825122413.jpg

4

3 に答える 3

2

cron 経由で実行されるすべてのコマンドへのフル パスを指定する必要があります。cron は、任意の端末から切り離されたコマンドを実行します。つまり、環境を正しく設定する必要があります。cut はおそらく利用可能ですが、iwconfig と awk への絶対パスを指定してください

于 2010-08-25T11:09:06.857 に答える
0

このファイルのパーミッションを 777 に変更します

chmod 777 /home/rupert/test.sh

多分これが役立つでしょう。

于 2010-08-25T11:09:01.683 に答える
0

これが(きれいな方法で)起こらないようにするための正確な手順はわかりません(私はLinuxの専門家ではありません)が、これは私には許可の問題のように見えます。cron ジョブを実行するユーザーは、実行を許可しているコマンドの 1 つを実行することを許可されていません。

権限を修正すれば、問題なく動作すると思います。

于 2010-08-25T11:09:21.877 に答える