![尝试捕获并使用 BASH 内运行的脚本的响应](https://linux22.com/image/144535/%E5%B0%9D%E8%AF%95%E6%8D%95%E8%8E%B7%E5%B9%B6%E4%BD%BF%E7%94%A8%20BASH%20%E5%86%85%E8%BF%90%E8%A1%8C%E7%9A%84%E8%84%9A%E6%9C%AC%E7%9A%84%E5%93%8D%E5%BA%94.png)
我正在创建一个运行脚本并将其输出到文件的函数。一旦发生这种情况,它就会逐行读取该文件并执行停止。我想添加一个 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
发出停止指令吗?