2017-04-25 31 views
0

我有以下腳本:猛砸調用兩個的bash腳本

#!/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 

的問題是,執行

sudo ./start_ap.sh 

後的下一行不會被執行,因爲該行須藤./start_ap。 sh需要CTRL + C停止,只有下一行將被執行。

但是,我希望sudo ./start_ap.sh在sudo ./tst.sh之後終止,並且在下一步這將重複11次。

到目前爲止,執行sudo ./start_ap.sh之後,下一行將不會被執行而不會終止進程。

我該如何認識它?

P.S. start_ap.sh啓動hostapd,這就是爲什麼它需要殺死下一次執行。

+1

我還沒有理解你問的一件事。也許你可以嘗試的第一件事是首先不需要C-c'start_ap.sh'? – zmo

+0

如果你必須以root身份運行腳本,爲什麼以後要運行'sudo'? – chepner

回答

1

您需要在後臺運行./start_ap.sh,然後在./tst.sh完成後將其終止。請注意,如果您實際以根用戶身份運行腳本,則不需要使用裏面的sudo腳本。

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

謝謝你的回答。不幸的是,它並沒有殺死這個過程。可能有一種方法可以找到進程的名稱並殺死它。在htop中,可以過濾在raw命令下可以看到的名稱。有任何想法嗎? –

+0

@MarkDelphi沒有關於start_ap.sh和hostapd及其進程結構等的更多信息,很難提出建議。 –