使用脚本定时重启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]]

 

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两个位置,导致没有第一时间准确的找到原因。

提升阅读日志的能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值