Nur ein Teil des Skripts wird beim Start ausgeführt


0

Ich habe ein Skript ( start_probing.sh), in /etc/init.ddem 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.shIch warte einige Zeit vor der Ausführung, adapter_scan.shum sicherzustellen, dass die wlan1Schnittstelle 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.txtDatei 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.shin meine ~/.profilegeleistete genau das, was ich wollte.


Gibt /home/pi/data/es Wird /homezum Zeitpunkt der Skriptausführung gemountet? Muss /home/pi/entschlüsselt werden? Sind Skripte /etc/init.dsollen werden durch laufensystemd , oder was?
Kamil Maciorowski

@KamilMaciorowski das /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 nach start_probing.shinnen erstellt habe /etc/init.d/rc3.d. Könnte sich dies auf das Skript auswirken?
BBJug

Antworten:


0

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.


Das Skript hatte tatsächlich die Ausführungsberechtigung. Als ich stderr umleitete, stellte ich fest, dass mein Problem darin bestand, dass ich das Skript während des Startvorgangs aufrief, als wahrscheinlich kein Bash-Prozess verfügbar war. Danke für deine Antwort, @Ddirk!
BBJug
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.