При запуске выполняется только часть скрипта.

При запуске выполняется только часть скрипта.

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

Связанный контент