
У меня есть скрипт ( 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
адаптер_скан.ш:
#!/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 (выполнение) для пользователя, которому он необходим.