У меня есть скрипт (start_probing.sh) в /etc/init.d который успешно запускается при запуске, однако при вызове другого скрипта (adapter_scan.sh) изнутри он не запускается. Хотя, когда я вручную запускаю start_probing.sh все работает нормально. В start_probing.sh я подожду некоторое время, прежде чем выполнить adapter_scan.sh чтобы убедиться, что интерфейс wlan1 готов, хотя безрезультатно. Какие-либо предложения?

Вот коды для обоих скриптов:

start_probing.sh:

echo $(date) >> /home/pi/reboot.txt  
sleep 1m && watch -n 20 sudo /home/pi/adapter_scan.sh & PROC=$! ; sleep 120s ; KILL $PROC

adapter_scan.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 ответ1

0

Убедитесь, что у вас установлен бит X (execute) в сценарии, который вы пытаетесь запустить, для привилегии пользователя, которая в этом нуждается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .