使用脚本定时重启tomcat启动报错
问题:
由于生产需要定时启动tomcat保证业务运行,于是写了shell脚本来重启,并加入到crontab定时任务。测试都没问题,只有一个项目的tomcat总是启动失败。
分析:
用netstat -nptl查看端口,8080端口没有启动,8005和8009是起来的。
到/var/log/cron 里查看,定时任务有执行。
到tomcat/log/catalina2019-06-04.log(当天的日志)里看原因,发现有报错
04-Jun-2019 15:59:04.643 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
04-Jun-2019 15:59:04.769 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[org.apache.coyote.http11.Http11AprProtocol-8080]]
[code]04-Jun-2019 15:59:04.643 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib] 04-Jun-2019 15:59:04.769 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[org.apache.coyote.http11.Http11AprProtocol-8080]]
原因:
要点:APR not found on the java.library.path
定时任务里启动tomcat,需要先申明环境变量,这个都没问题,基本上就是三个:
JAVA_HOME , PATH ,CLASSPATH 。
然而,对于只使用apr模式的来说,还需要申明apr的路径,否则启动失败,这个是之前一直忽略的,简单的认为tomcat启动起来就行了。
解决:
找到apr的安装路径,在脚本里先做声明即可。
export LD_LIBRARY_PATH=/usr/local/apr/lib
总结:
手动执行脚本正常,定时任务不正常,基本就可以怀疑是环境变量的锅。
对比shell环境的时候,环境变量分散在~/.bash_profile 和 /etc/profile两个位置,导致没有第一时间准确的找到原因。
提升阅读日志的能力。
- Tomcat的启动、关闭、定时重启tomcat的批处理命令脚本(windows和linux均可用,当前为windows)
- 使用java程序启动linux上的脚本,重启tomcat
- 关于tomcat快速启动及自动重启的方法与脚本
- windows使用批处理发布web到tomcat并启动tomcat的脚本
- Linux下tomcat的快速启动,停止,重启脚本
- 定时重启机器,重启时运行启动服务脚本
- 多Tomcat 启动/停止/重启 脚本
- 使用shell脚本 启动关闭tomcat服务
- Tomcat之——宕机自动重启和每日定时启动tomcat
- windows使用批处理发布web到tomcat并启动tomcat脚本分享
- shell脚本:定时重启tomcat服务
- Tomcat 重启服务器启动脚本
- 定时重启机器,重启时运行启动服务脚本
- shell脚本定时重启tomcat
- Linux下使用shell脚本自动监控重启tomcat
- 使用crontab启动脚本守护tomcat进程
- Tomcat定时重启sh脚本
- tomcat服务 启动/停止/重启脚本 推荐
- 定时重启tomcat脚本导致的乱码问题
- 使用c和shell实现远程tomcat的重启备份脚本