2017-07-14 4 views
0

このスクリプトはnetxサービスを開始します。期待される動作は、スタックプロセスがあることです。カールが0を返さない限り、stuck_pidをチェックしてkillします(netxアプリケーションがロードされるため、ループが終了する時点)。言い換えれば、ハングしているpidがあるため、アプリがハングしてこのスクリプトで修正されています。whileループでカールが失敗するたびにメッセージを返す方法はありますか?

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

は私が望んだことはカールがタイムアウト状態を毎回エコーやカールが戻る0までカーリングを継続することである。

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 
} 

私はこのスクリプトを実行したときに私が見るすべては次のようです。私のuntilループで何が間違っていますか?

答えて

0

ちょうど空の文字列のチェックを殺すラップ、PIDまたは何もどちらかchown_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で#とは何ですか?また、 'do stuck_pid'はどこに行けばいいですか? – david

+0

詳細については、chown_pid関数を使用してOPを更新しました。 – david

+0

完全な回答で更新できますか?自分の回答を自分の関数に統合する方法がわかりません。 – david

関連する問題