我有一个Java应用程序,想在日志文件中出现某些消息时重新启动它。到目前为止,我已经尝试过以下脚本:
#!/bin/bash
java -jar app.jar > app.log 2>&1
tail -f app.log | while read LOGLINE
do
[[ "${LOGLINE}" == *"channel incative"* ]] && pkill -P $$ java && java -jar app.jar > app.log 2>&1
done 我使用以下命令运行scritp
nohup sh app.sh &
但它没有按预期工作。你有什么建议吗?
ps Java应用程序是来自第三方的遗留应用程序,因此我无法在应用程序代码本身中进行逻辑处理。
当在日志中找到“通道指示”字符串时,请杀死Java并重新启动脚本。清除日志文件,以便可以再次搜索“通道”字符串。使用sleep给java进程腾出一点时间。
#!/bin/bash
sleep 1
java -jar app.jar > app.log 2>&1
rm app.log 2> /dev/null
touch app.log
tail -f app.log | while read LOGLINE
do
[[ "${LOGLINE}" == *"channel incative"* ]] && pkill -P $$ java && exec app.sh
done
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。