此脚本启动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.我的直到循环我做错了什么?
答案 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