起動時にスクリプトの一部のみが実行される

起動時にスクリプトの一部のみが実行される

起動時に正常に実行されるスクリプト ( start_probing.sh)があります/etc/init.dが、adapter_scan.shそのスクリプト内から別のスクリプト ( ) を呼び出すと、スクリプトは実行されません。ただし、手動で実行すると、start_probing.shすべて正常に実行されます。 では、インターフェイスの準備ができていることを確認するために、start_probing.sh実行する前にしばらく待機しますが、効果がありません。何か提案はありますか?adapter_scan.shwlan1

両方のスクリプトのコードは次のとおりです。

開始_プローブ.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 (実行) ビットが設定されていることを確認します。

関連情報