CentOS开机自动运行jar程序实现

前面已经有一篇文章介绍jar包如何在CentOS,《在linux上运行jar程序操作记录》
后来发现系统重启后不能自动运行,于是这篇介绍如何自动开机启动。

一、找到JDK程序执行位置

[root@localhost /]# which java
/usr/bin/java
[root@localhost /]# ll usr/bin/java
lrwxrwxrwx. 1 root root 22 45 2023 usr/bin/java -> /etc/alternatives/java
[root@localhost /]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 45 2023 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java
[root@localhost /]# 

可以看到,最终找到的位置是:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java

二、创建自动运行脚本文件

在/home目录上创建一个目录autorun,里面创建一个开机时用于执行指令的文件auto_start.sh

[root@localhost bin]# cd /home
[root@localhost home]# mkdir autorun
[root@localhost home]# touch /home/autorun/auto_start.sh
[root@localhost home]# ls
autorun  javaapp  ldsinfo  static  swap  www
[root@localhost home]# cd autorun/
[root@localhost autorun]# ls
auto_start.sh
[root@localhost autorun]# vim auto_start.sh

auto_start.sh文件编写内容如下:

#!/bin/bash
#配置jdk的路径
#export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/
#此处为我的java环境路径,根据自己的JDK路径填写

#export JRE_HOME=${JAVA_HOME}/jre
#export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

#因为我的主机中只有jre目录,jre目录下有bin和lib,所以我就直接写JRE_HOME而不写JAVA_HOME
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre

export CLASSPATH=.:${JRE_HOME}/lib
export PATH=${JRE_HOME}/bin:$PATH
#这里的:$PATH表示将${JRE_HOME}/bin加在原来的环境变量PATH前
 
#有时需要把jar包延时启动(不设置延时启动jar,nacos会提示拒绝连接)
#延时10S运行jar包,需要延时启动则放开sleep注释行 (sleep+数字,表示延迟多少秒启动)
sleep 10
#配置jar包启动的路径 日志生成路径  nohup表示静默启动,不在窗口显示启动日志
#根据自己要执行的JAR包的位置来写
cd /home/javaapp/
nohup java -jar FileUpload.jar >/dev/null 2>&1 &

为自动执行脚本加执行权限:

chmod +x /home/autorun/auto_start.sh

三、在rc.local上加上自动执行脚本文件

vim /etc/rc.loacl
打开添加在最后一行。

#!/bin/bash
# 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.

touch /var/lock/subsys/local

#Java program autorun
/home/autorun/auto_start.sh

然后将这个文件改为可执行

[root@localhost etc]# chmod +x  /etc/rc.local

最后重启后查看:

[root@localhost ~]# ps -ef | grep java
root       1760      1 99 20:56 ?        00:01:03 java -jar FileUpload.jar
root       2433   1938  0 20:56 pts/0    00:00:00 grep --color=auto java
[root@localhost ~]# 

运行成功!

你可能感兴趣的:(Linux,系统管理和服务器,Java,centos,jar,linux)