我正在创建一个运行脚本并将其输出到文件的函数。一旦发生这种情况,它就会逐行读取该文件并执行停止。我想添加一个 if 条件,如果服务器无法启动它,则杀死 -9 $pid。它不起作用。
function stop_server() {
su -s /bin/bash user /usr/local/server/bin/server list | sed "1,2 d" >>jvms
while IFS="" read -r p || [ -n "$p" ]
do
su -s /bin/bash user /usr/local/server/bin/server stop $p
if [[ $(su -s /bin/bash user /usr/local/server/bin/server stop $p)= 'Server $p stop failed. Check server logs for details.' ]];
then
PID="ps -ef|grep -v grep |grep '$p' | awk '{print $2}'"
kill -9 $PID
fi
done
}
我想捕获服务器停止 $p 的结果,然后我想我可以做这样的事情:
if [ $results = 'Server $p stop failed. Check server logs for details.' ]; then
PID="ps -ef|grep -v grep |grep '$p' | awk '{print $2}'"
kill -9 $PID
fi
答案1
你要
PID=$(ps -ef|grep -v grep |grep '$p' | awk '{print $2}')
但恕我直言,你应该找到一种方法来通过更直接的方式获取进程的 PID。他们不会在某处留下“.pid”文件吗?您需要su
发出停止指令吗?