2017-04-25 5 views
0

Ich habe das folgende Skript:Bash ruft zwei Bash-Skripte

#!/bin/bash 

if [ "$EUID" -ne 0 ] 
    then 
    echo '' 
    echo 'Please run the script as root' 
    echo '' 
    exit 
fi 

for run in {1..11} 
do 
    sudo ./start_ap.sh  
    sleep 10  
    sudo ./tst.sh 

done 

Das Problem ist, dass

sudo ./start_ap.sh 

die nächsten Zeilen werden nicht ausgeführt werden, nachdem die Ausführung, da die Leitung sudo ./start_ap. sh braucht STRG + C um zu stoppen und erst dann werden die nächsten Zeilen ausgeführt.

Allerdings möchte ich, dass das sudo ./start_ap.sh nach sudo ./tst.sh beendet wird und im nächsten Schritt wird dies 11 mal wiederholt.

Bis jetzt werden die nächsten Zeilen nach der Ausführung von sudo ./start_ap.sh nicht ausgeführt, ohne den Prozess zu beenden.

Wie kann ich es realisieren?

P.S. start_ap.sh startet hostapd und muss daher für die nächsten Ausführungen getötet werden.

+1

Ich habe nichts verstanden, was Sie fragen. Vielleicht können Sie als erstes versuchen, C-c 'start_ap.sh' nicht zu brauchen? – zmo

+0

Wenn Sie das Skript als root ausführen müssen, warum später 'sudo' ausführen? – chepner

Antwort

1

Sie müssen ./start_ap.sh im Hintergrund ausführen, dann beenden Sie es, nachdem ./tst.sh abgeschlossen ist. Beachten Sie, dass Sie das Skript nicht ausführen müssen, wenn Sie das Skript tatsächlich als Root ausführen. Es ist nicht erforderlich, das Skript sudoinnerhalb zu verwenden.

for run in {1..11}; do 
    ./start_ap.sh & pid=$! 
    sleep 10 
    ./tst.sh 
    kill "$pid" 
done 
+0

Vielen Dank für Ihre Antwort. Leider bringt es den Prozess nicht um. Vielleicht gibt es einen Weg, den Namen des Prozesses zu finden und ihn zu töten. In htop ist es möglich, den Namen herauszufiltern, der unter dem Befehl raw zu sehen ist. Irgendwelche Ideen? –

+0

@MarkDelphi Ohne weitere Informationen über start_ap.sh und hostapd und deren Prozessstruktur usw. ist es wirklich schwierig, Vorschläge zu machen. –

Verwandte Themen