关于在rc.local中放入Java程序无法开机自启的问题

今天公司服务器因为断电重启发现了一个问题——所有部署了springboot打的jar包的服务器在重启后没有自动将服务启动起来。但是rc.local文件是有可执行权限的,而且单独执行该文件中的条目可以正常启动服务,那么问题会在哪里呢?

在jar启动脚本后面加上了重定向生成一个启动日志或者通过ps -ef|grep jar查进程看看:
1/usr/local/bin/tomcat/bin/startup.sh>>/tmp/startup.log
结果发现日志提示找不到环境变量JAVA_HOME,但是该环境变量我们明确是写进了/etc/profile中,重新source后再重启,发现服务依然没有启动,这是为什么呢?查看/etc/rc.local文件的描述信息:

#THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#It is highly advisable to create own systemd services or udev rules
#to run scripts during boot instead of using this file.

#In contrast to previous versions due to parallel execution during boot
#this script will NOT be run after all other services.

#Please note that you must run ‘chmod +x /etc/rc.d/rc.local’ to ensure
#that this script will be executed during boot.

发现该文件是在所有服务之前运行,所以/etc/profiles或bashrc里的环境变量这个时候根本没有执行,因此环境变量自然无法生效导致服务启动报错了,解决办法就是在/etc/rc.local中加入环境变量,如图:
在这里插入图片描述 脚本中对应的内容:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值