目录
场景
一个spring的java程序想配置为开机自动启动,网上查发现可以有2种方法:一种是配置开机自动启动脚本,另一种是配置为服务。
以下是开机自动启动脚本的配置步骤
配置步骤
- 写脚本,脚本里写绝对路径会少一些问题,jar包写绝对路径,jar包的输出日志文件写绝对路径
我的脚本 /home/test_auto_start/autostart.sh 内容:
echo "start"
nohup java -jar /home/test_auto_start/test_spring1-0.0.1-SNAPSHOT.jar >> /home/test_auto_start/output.log 2>&1 &
echo 'start success'
- 赋予脚本可执行权限(/home/test_auto_start/autostart.sh是你的脚本路径)
chmod +x /home/test_auto_start/autostart.sh
-
打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加脚本绝对路径即可
/opt/script/autostart.sh -
在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
- 在/bin下边建了个java的软连接,链接java的绝对路径就行
ln -s /usr/share/jdk1.8.0_201/bin/java java
这个解决java命令找不到的问题,大概是因为启动脚本和环境变量生效是并行执行,环境变量还没生效,/etc/rc.d/rc.local就执行完了
另一种解决方法是在脚本里java -jar这里写java的绝对路径
已在虚拟机centos系统上验证
踩坑细节:
先查怎么开机启动,
这里说了2种,一种是脚本开机启动,一种是服务
CentOS 7添加开机启动服务/脚本_wang123459的博客-CSDN博客_centos7开机启动脚本
这里说3条即可
方法一
1、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh2、打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容
su - user -c ‘/opt/script/autostart.sh’备注:自己试了试,直接写脚本的绝对路径就行,不用写su user之类的,而且user表示一个用户,而不是输入user这个单词
3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
/etc/rc.local 是链接,链接到 /etc/rc.d/rc.local
在自己的虚拟机centos系统试了试
相对路径放到启动脚本里会有些问题
用绝对路径会少很多问题
按照这3条写
就成功了
启动不成功,
报错:
java: 未找到命令
centos7下设置成开机启动的java程序没有跑起来_桥南玄机子的博客-CSDN博客_centos java开机启动显示没有环境变量
centos7版本的时候,这个文件内的命令将会跟其他启动服务并行,不会在系统完成启动结束后再执行。这样就导致了环境变量生效在java运行之后。就出现了命令执行失败。
用了其中的一种方法:
在/bin下边建了个软连接
ln -s /home/admin/jdk1.8.0_201/bin/java java
yum装java不用配置环境变量就是这个原理
可能存在的问题
- 配置文件里写绝对路径带来的问题(路径变了还得改配置等等问题)
参考
CentOS 7添加开机启动服务/脚本_wang123459的博客-CSDN博客_centos7开机启动脚本
centos7下设置成开机启动的java程序没有跑起来_桥南玄机子的博客-CSDN博客_centos java开机启动显示没有环境变量
linux 链接的使用 创建和删除符号连接(软、硬链接) - 追忆丶年华 - 博客园 (cnblogs.com)