每次curl在while循环中失败时如何返回消息?

时间:2017-07-14 16:00:23

标签: bash

此脚本启动netx服务。预期的行为是将存在卡住的进程,因此只要curl不返回0,我们将检查stuck_pid并将其终止(此时循环将退出,因为netx应用程序将加载)。换句话说,有一个悬挂的pid,导致应用程序挂起,这个脚本修复了这个问题。

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.我的直到循环我做错了什么?

1 个答案:

答案 0 :(得分:0)

假设chown_pid返回一个pid或什么都没有,只需用一个空字符串检查来包装kill:

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