centos7开机java程序shell脚本自动启动

目录

    • 场景
    • 配置步骤
    • 踩坑细节:
    • 可能存在的问题
    • 参考

场景

一个spring的java程序想配置为开机自动启动,网上查发现可以有2种方法:一种是配置开机自动启动脚本,另一种是配置为服务。
以下是开机自动启动脚本的配置步骤

配置步骤

  1. 写脚本,脚本里写绝对路径会少一些问题,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'
  1. 赋予脚本可执行权限(/home/test_auto_start/autostart.sh是你的脚本路径)
chmod +x /home/test_auto_start/autostart.sh
  1. 打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加脚本绝对路径即可
    /opt/script/autostart.sh

  2. 在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限

chmod +x /etc/rc.d/rc.local
  1. 在/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.sh

2、打开/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不用配置环境变量就是这个原理

可能存在的问题

  1. 配置文件里写绝对路径带来的问题(路径变了还得改配置等等问题)

参考

CentOS 7添加开机启动服务/脚本_wang123459的博客-CSDN博客_centos7开机启动脚本

centos7下设置成开机启动的java程序没有跑起来_桥南玄机子的博客-CSDN博客_centos java开机启动显示没有环境变量

linux 链接的使用 创建和删除符号连接(软、硬链接) - 追忆丶年华 - 博客园 (cnblogs.com)

你可能感兴趣的:(centos,java,linux)