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

前面已经有一篇文章介绍jar包如何在CentOS,《在linux上运行jar程序操作记录

后来发现系统重启后不能自动运行,于是这篇介绍如何自动开机启动。

一、找到JDK程序执行位置

bash 复制代码
[root@localhost /]# which java
/usr/bin/java
[root@localhost /]# ll usr/bin/java
lrwxrwxrwx. 1 root root 22 4月   5 2023 usr/bin/java -> /etc/alternatives/java
[root@localhost /]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 4月   5 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

bash 复制代码
[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文件编写内容如下:

bash 复制代码
#!/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 &

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

bash 复制代码
chmod +x /home/autorun/auto_start.sh

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

vim /etc/rc.loacl

打开添加在最后一行。

bash 复制代码
#!/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

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

bash 复制代码
[root@localhost etc]# chmod +x  /etc/rc.local

最后重启后查看:

bash 复制代码
[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 ~]# 

运行成功!

相关推荐
未济1 天前
linux 配置环境变量
linux
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
_艾伦 耶格尔.1 天前
进程间通信
linux
Liuqy-051 天前
Linux IO编程——静态库、动态库
linux
彧azz1 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
AIgorithmGEEK1 天前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid
琥珀色糖1 天前
SimlpeHttp
linux·服务器
qeen871 天前
【Linux】操作系统之进程介绍(二)
linux·笔记·学习·进程
Zenova EdgeOS1 天前
Linux ss 工业边缘网络分析实战
linux·python·边缘计算·工业网关