有些时候运行一个java项目在linux下通过一条简单的java命令即可,如:

#nohup java -jar jenkins.war &   ###这里为后台运行jenkins  

在此背景下,java进程因各种原因导致进程被kill。或者主动结束进程忘记开启。程序不会自动启动起来。
可以考虑将其做成systemd服务,当进程挂掉之后会自动启动起来

1.环境介绍(目录结构)

### 实验环境为一台机器运行多个jar包或者war包,且包存放在/opt/sdk目录下。且有启动和关闭脚本,logs日志目录
╭─◆root@ localhhost opt/sdk
╰─># ll
total 335684
-rw-r--r-- 1 www www 34698758 Mar 1 18:08 DibDirector.jar
-rw-r--r-- 1 www www 44491920 Mar 1 12:29 DibFinance.jar
-rw-r--r-- 1 www www 34686621 Mar 1 12:28 DibGovernance.jar
-rw-r--r-- 1 www www 49526812 Nov 6 20:31 DibManage.jar
-rw-r--r-- 1 www www 74093277 Nov 6 20:29 DibResource.jar
-rw-r--r-- 1 www www 23007795 Nov 5 17:14 DibSdk.jar
-rw-rw-r-- 1 www www 34484128 Mar 18 23:08 DibShares.jar
-rw-r--r-- 1 www www 48724992 Mar 1 12:28 DibSign.jar
drwxrwxr-x 2 www www 168 Mar 22 09:33 logs/
-rwxrwxr-x 1 www www 219 Mar 18 23:09 start.sh*
-rwxrwxr-x 1 www www 89 Nov 6 13:44 stop.sh*

2.启动脚本通过传递的第一个参数决定启动哪一个jar包

╰─># cat start.sh
#!/bin/bash
export JAVA_HOME=/opt/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
CMD_PATH="/opt/sdk"
sdk=$1
#cd $CMD_PATH
java -jar ${CMD_PATH}/${sdk}.jar > ${CMD_PATH}/logs/${sdk}.log &
echo $! > $CMD_PATH/logs/${sdk}.pid

3.关闭脚本通过传递的第一个参数关闭某一个jar程序

╰─># cat stop.sh
#!/bin/bash
CMD_PATH="/opt/sdk"
sdk=$1
PID=$(cat $CMD_PATH/logs/${sdk}.pid)
kill -9 $PID

4.此处以DibDirector.jar为例:新建DibDirector.service文件

╰─># cat /etc/systemd/system/DibDirector.service
# Systemd unit file for tomcat
[Unit]
Description=Dibcn SDK application
After=syslog.target network.target [Service]
Type=forking Environment=JAVA_HOME=/opt/local/jdk
ExecStart=/opt/sdk/start.sh DibDirector
ExecStop=/opt/sdk/stop.sh DibDirector
PrivateTmp=true User=www
Group=www
UMask=0007
RestartSec=5
Restart=always [Install]
WantedBy=multi-user.target

5.将其开机设置为开机启动

╰─># systemctl enable DibDirector.service

6.备注

1.启动和关闭脚本必须赋予执行权限
2.例子用户权限全部为www用户,即为www用户启动服务
3.不同情况可根据此笔记适当修改,即可使用

centos7下将java -jar命令运行一个项目做成systemd服务的更多相关文章

  1. java -jar命令运行jar包时指定外部依赖jar包 linxux or windows

    前尘回顾: setup.bat [chenquan@hostuser tartest]$ cat ../setup.sh javac -encoding UTF-8 -Djava.ext.dirs=. ...

  2. 使用 "java -jar"命令启动jar包时报不支持的jdk版本异常

    在使用java -jar 命令启动一个jar包的时候,提示版本不支持: [root@hadoop01 eureka-server-master]# java -jar xuebusi-eureka-s ...

  3. -Xbootclasspath参数、java -jar参数运行应用时classpath的设置方法

    当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报ClassNotFound错误.实际上 ...

  4. centos7下Maven Java selenium3环境搭建

    centos7下Maven Java selenium3环境搭建 一.Jdk安装 我这里用的是open-jdk. [adawang@localhost src]$ sudo yum search op ...

  5. linux 下检查java jar包 程序是否正常 shell

    linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...

  6. linux 下启动java jar包 shell

    linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...

  7. linux 下停止java jar包 shell

    linux 下停止java jar包 shell http://injavawetrust.iteye.com #!/bin/sh APP_HOME=/home/ap/injavawetrust/ba ...

  8. 【MIT6.828】centos7下使用Qemu搭建xv6运行环境

    title:[MIT6.828]centos7下使用Qemu搭建xv6运行环境 date: "2020-05-05" [MIT6.828]centos7下搭建xv6运行环境 1. ...

  9. Linux环境下执行java -jar xxx.jar命令如何让springboot项目在后台运行

    段落引用> 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctr ...

随机推荐

  1. Java的Stream流

    yi.控制台输入输出流, 1.读取控制台输入 Java的控制台输入由System.in完成.为了获得一个绑定到控制台的字符流,可以把System.in包装在一个BufferedReader对象中来创建 ...

  2. VM安装CentOs7虚拟机后无法上网之解决方法

    最近在研究DC/OS的安装,读了很多安装方法后决定先从docker的安装入手,由于DC/OS的安装必须在CentOs7版本以上,所以就在VM下安装了CentOs7,殊不知安装后并不能上网,于是乎又转到 ...

  3. HDU Virtual Friends(超级经典的带权并查集)

    Virtual Friends Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. "strace -p"非常有用,它减少了很多猜测工作,也不需要重新启动应用。lsof -p process_id +iostat + sar -n DEV 1

    linux神器strace - youxin - 博客园https://www.cnblogs.com/youxin/p/8837771.html 某个进程突然占用了很多CPU? 或者某个进程看起来像 ...

  5. AMQ(approximate membership queries)介绍

    目录 简介 举例 Bloom Filter 算法过程 1)位数组: 2)添加元素,k个独立hash函数 3)判断元素是否存在集合 Quotient Filter and Cascade Filter ...

  6. Linux-- 查看文件 cat/tac

    cat 查看文件 用法:cat 文件名 1.显示非空白行行号 -b 2.显示所有行号 -n 3.将[Tab]按键以 ^T 显示出来 -T 4.显示出特殊字符 -V 5.将结尾的断行字符$显示出来 -E ...

  7. 07 consistent gets、db block gets的简单精辟的理解

    consistent gets.db block gets的简单精辟的理解     consistent gets:一致性读,为了保持读一致性而获取的块,其中可能包括undo block,也有包括非u ...

  8. T-SQL查询:WITH AS 递归计算某部门的所有上级机构或下级机构

    drop table #Area; CREATE TABLE #Area ( id INT NOT NULL, city_name NVARCHAR(100) NOT NULL, parent_id ...

  9. mysql截取字段并插入到新的字段中

    例如:在产品表product表中字段content值为["10"],然后在产品表中新建一个字段product_id,提出字段content的值10,如何实现呢? 解: update ...

  10. spring定时任务注解@Scheduled的记录

    spring 定时任务@Scheduled 转自https://www.cnblogs.com/0201zcr/p/5995779.html 1.配置文件 <?xml version=" ...