Linux环境下Jar包自启

举报
小小张自由--张有博 发表于 2022/03/28 22:43:00 2022/03/28
【摘要】 Linux环境下Jar包自启

前期准备 查看自己服务器java的版本号

输入 java -version

注意: 此处服务器为java11版本的 下面jarSysInit.sh脚本里的jdk环境就要改为对应的环境

1.新建jar包自启脚本

sudo vi /etc/init.d/jarSysInit.sh

按i键进入编辑模式 输入以下内容:


# !/bin/bash

## JDK start 配置自己服务器的JDK环境(jkd8还是11)

export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

export PATH=$PATH:$JAVA_HOME/bin

## JDK end

# 有多少个jar就后面加上去就好(这里需要参考自己jenkins的启动脚本 注意全局变量$APP_PATH 要换成jar包对应的全路径)

nohup java -Xms1024m -Xmx1024m -jar /home/admin/apps/typing_provider.jar > /home/admin/apps/typing.log 2>&1 &

按esc键退出编辑模式 输入:wq保存



2.编辑服务器开机时自动执行的文件

sudo vi /etc/rc.d/rc.local


按i键进入编辑模式

在 此文件的touch /var/lock/subsys/local底下


添加以下内容:

#开机启动jar脚本

/etc/init.d/jarSysInit.shi


按esc键退出编辑模式 输入:wq保存


3.提升权限 两个脚本文件都是绿色

sudo chmod 755 /etc/rc.local

sudo chmod 755 /etc/init.d/jarSysInit.sh


4.总结+改善

总结:以上方式就是在虚机开机时,会自动执行系统的加载文件(/etc/rc.d/rc.local),在这个文件里边,加上我们需要自启的Jar包(都写在这里 /etc/init.d/jarSysInit.sh)。但是这种方式会出现一个问题,那就是开启自启的Jar包是root权限,admin用户杀不掉。

解决办法:再添加一个文件,让系统的加载文件(/etc/rc.d/rc.local)执行降权的文件A,让降权文件A执行去执行启动Jar包的脚本(/etc/init.d/jarSysInit.sh


A文件里边的内容:

#!/usr/bin/expect

set timeout 1

spawn su admin -c "/etc/init.d/jarSyslnit.sh"

expect "password: "

send "admin\r"

interact

exit
~

使用expect命令,需要安装插件

Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。

自动输入密码的功能,需要用到expect

先安装

sudo yum install -y expect

expect中最关键的四个命令是send,expect,spawn,interact。

send:用于向进程发送字符串

expect:从进程接收字符串

spawn:启动新的进程

interact:允许用户交互

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。