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 ~]# 

运行成功!

相关推荐
java_logo6 分钟前
SGLANG Docker容器化部署指南
linux·运维·docker·容器·eureka·1024程序员节
敲代码的瓦龙1 小时前
操作系统?进程!!!
linux·c++·操作系统
打不了嗝 ᥬ᭄2 小时前
数据链路层
linux·网络·网络协议·http
piaoxue8202 小时前
MFA MACOS 安装流程
linux·运维·服务器
鱼干~3 小时前
electron基础
linux·javascript·electron
apocelipes3 小时前
POSIX兼容系统上read和write系统调用的行为总结
linux·c语言·c++·python·golang·linux编程
森语林溪4 小时前
大数据环境搭建从零开始(十四)CentOS 7 系统更新源更换详解:阿里云镜像源配置完整指南
大数据·linux·运维·阿里云·centos
半梦半醒*5 小时前
k8s——service详解
linux·运维·docker·容器·kubernetes
浪潮IT馆5 小时前
Alibaba Cloud Linux 3 安装 SVN
linux·运维·svn
---学无止境---6 小时前
Linux内存管理揭秘:页表递归清理与TLB优化机制
linux