2017-07-14 47 views
0

該腳本啓動netx服務。預期的行爲是將有一個卡住的進程,所以只要curl不返回0,我們將檢查stuck_pid並殺死它(此時循環將退出,因爲netx應用程序會加載)。換句話說,有一個懸掛pid,導致應用程序掛起,這個腳本修復了這個問題。如何在每次curl在while循環中失敗時返回一條消息?

chown_pid() { 
    echo `ps aux | grep chown | grep -v grep | awk '{ print $2 }' | sort -r | tail -1` 
} 

start() { 
    # Start netx 
    echo "Starting netx" 
    /bin/su - -c "cd $NETX_HOME/bin && $NETX_HOME/bin/startup.sh" $NETX_USER 
    url="http://localhost:8080/matlib" 
    until curl "$url" --max-time 10; do stuck_pid=$(chown_pid); kill -9 $stuck_pid; "killing chmod process";done 

    fi 
    return 0 
} 

我看到,當我運行此腳本如下:

kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] 

什麼,我想是每一次呼應狀態出捲曲倍,並繼續捲曲,直到捲曲返回0。我在做什麼直到循環錯了?

回答

0

假設chown_pid回報無論是PID還是什麼都沒有,只是包裝用一個空字符串查殺:

until curl "$url" --max-time 10; do stuck_pid=$(chown_pid); if [[ ${#stuck_pid} -eq 0 ]] ; then echo "no pid" ; else echo "killing pid $stuck_pid" ; kill -9 $stuck_pid ; fi ; done 
+0

什麼是{} #stuck_pid的#?另外,我把這條線放在'做stuck_pid'的地方嗎? – david

+0

更多的上下文,我更新OP與chown_pid功能 – david

+0

你可以更新與完整的答案,我不知道如何整合你的答案與我的功能。 – david

相關問題