
Tengo un script ( start_probing.sh
) /etc/init.d
que se ejecuta correctamente al inicio, sin embargo, cuando llamo a otro script ( adapter_scan.sh
) desde dentro, no se ejecuta. Sin embargo, cuando ejecuto manualmente start_probing.sh
todo funciona normalmente. Espero start_probing.sh
un tiempo antes de ejecutar adapter_scan.sh
para asegurarme de que la wlan1
interfaz esté lista, aunque fue en vano. ¿Alguna sugerencia?
Aquí están los códigos para ambos scripts:
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
adaptador_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
El problema es que el ap_data.txt
archivo nunca se crea. ¿Qué me estoy perdiendo?
Actualizar
Entonces parece que soy un tonto.EsteLa publicación me hizo darme cuenta de que ejecutar mi script al iniciar sesión (en lugar de al iniciar, lo que debería tomarse muy en serio) es un enfoque mucho más apropiado. Simplemente colocando sh .../adapter_scan.sh
en mi ~/.profile
logré exactamente lo que buscaba.
Respuesta1
Verifique que tenga el bit X (ejecución) configurado en el script que está intentando ejecutar para el privilegio de usuario que lo necesita.