
我有一個腳本 ( start_probing.sh
),/etc/init.d
在啟動時成功運行,但是,當我adapter_scan.sh
從內部呼叫另一個腳本 ( ) 時,它不會運行。不過,當我手動運行時,start_probing.sh
一切都正常運行。在start_probing.sh
執行之前我等待了一段時間adapter_scan.sh
以確保wlan1
介面已準備好,但沒有效果。有什麼建議麼?
以下是兩個腳本的程式碼:
開始探測.sh:
echo $(date) >> /home/pi/reboot.txt
sleep 1m && watch -n 20 sudo /home/pi/adapter_scan.sh & PROC=$! ; sleep 120s ; KILL $PROC
適配器掃描.sh:
#!/bin/bash
fname="ap_data.txt"
save_path="/home/pi/data/$fname"
interface="wlan1"
echo "[x] $(date):" >> $save_path
sudo iwlist $interface scanning |\
egrep "Signal level|ESSID" |\
sed -e "s/\"ESSID://" |\
sed 's/^.*Signal/Signal/' |\
paste -s -d' \n' |\
sed -e 's/\(Signal\|level=\)//g' |\
sed -e 's/^[ \tESSID:]*//' |\
sort >> $save_path
echo "~" >> $save_path
cat $save_path
問題是該ap_data.txt
文件從未創建。我缺什麼?
更新
所以看來我是個傻子。這帖子讓我意識到讓我的腳本在登入時執行(而不是在啟動時執行,應該非常認真地對待)是一種更合適的方法。只需將我所追求的完全投入sh .../adapter_scan.sh
其中~/.profile
即可。
答案1
檢查以確保您在嘗試執行的腳本上設定了 X(執行)位,以獲得需要它的使用者權限。