Ich habe ein Skript ( start_probing.sh
), in /etc/init.d
dem beim Start erfolgreich ausgeführt wird, wenn ich jedoch ein anderes Skript ( adapter_scan.sh
) aufrufe, das nicht ausgeführt wird. Wenn ich manuell laufe start_probing.sh
, läuft alles normal. In start_probing.sh
Ich warte einige Zeit vor der Ausführung, adapter_scan.sh
um sicherzustellen, dass die wlan1
Schnittstelle bereit ist, jedoch ohne Erfolg. Irgendwelche Vorschläge?
Hier sind die Codes für beide Skripte:
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
Das Problem ist, dass die ap_data.txt
Datei nie erstellt wird. Was vermisse ich?
Update
Ich bin also ein Idiot. Durch diesen Beitrag wurde mir klar, dass die Ausführung meines Skripts beim Anmelden (und nicht beim Starten, was sehr ernst genommen werden sollte) ein weitaus angemessenerer Ansatz ist. Einfach sh .../adapter_scan.sh
in meine ~/.profile
geleistete genau das, was ich wollte.
/home/pi/data/
es Wird/home
zum Zeitpunkt der Skriptausführung gemountet? Muss/home/pi/
entschlüsselt werden? Sind Skripte/etc/init.d
sollen werden durch laufensystemd
, oder was?/home/pi/
Verzeichnis scheint nicht das Problem zu sein, da die reboot.txt-Datei das richtige $ (Datum) enthält. Eine Sache, die ich jedoch nicht erwähnt habe, ist, dass ich den Softlink nachstart_probing.sh
innen erstellt habe/etc/init.d/rc3.d
. Könnte sich dies auf das Skript auswirken?Antworten:
Stellen Sie sicher, dass Sie das X-Bit (Ausführen) in dem Skript gesetzt haben, das Sie für die Benutzerberechtigung ausführen möchten, die es benötigt.
quelle