我必须编写一个脚本来运行 JBoss,并验证并通知 JBoss 刚刚在系统启动时启动。下面的代码是与验证部分相关的。请纠正我犯的逻辑和语法错误。
我正在记录的日志grep
:
2017-10-27 12:04:13,933 INFO [org.jboss.bootstrap.microcontainer.ServerImpl] (main) JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] 开始于 1m: 1秒:804毫秒
!/bin/bash
maxLoops=30 numLines=200 timeToSleep=3 success=0 Server_Log=$(/path_for_log/server.log)
for (( try=0; try < maxLoops; ++try ));
do
atail=`tail -n $numLines $Server_Log | grep "Started" | awk {'print $12'}`
if [[ $atail == "Started" ]]
then
success=1
break
fi
sleep $timeToSleep
done
if (( success ));
then
echo "Jboss started successfully"
else
echo "successful starting of Jboss is not ensured"
fi
请查找我在以 root 身份执行脚本时遇到的以下错误:
$ ./verify_jboss.sh:
line 3: /log_path/server.log: Permission denied
答案1
如果可能的话检查 Jboss 是否正在侦听该端口:
if curl -Is http://localhost:80/ > /dev/null
then
echo OK
else
echo FAIL
fi
您只需要一个外部程序:卷曲
编辑:
另一种方法是测试特定内容,例如Contact
网页上的内容。只有当网络服务器正在运行并且有到数据库的连接时,它才会正确响应。
if grep -qc "Contact" <(curl -s http://localhost/)
then
echo OK
else
echo FAIL
fi
那个工程<(curl ...)
(过程替代)将被视为grep
文件。curl
可以选择-s
静默以避免传输进度。grep
可以选择-qc
抑制输出并计算匹配文本的出现次数。如果结果的一项或多项计数Contact
正常(退出代码 0)。
答案2
您可以尝试发出请求,然后检查某些特定内容:
curl_result=$(curl -Is https://www.yoururl.com)
if echo "$curl_result" | grep "some_text_generated_by_JBOSS"; then
echo "Server ok"
fi