有些时候运行一个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. 【[HNOI2015]亚瑟王】

    神仙题,抄题解 用\(tp_i\)表示\(i\)这个技能在\(r\)轮中被使用过的概率 于是最后的答案就是\(\sum_{i=1}^nd_i*tp_i\) 首先\(tp_1=1-(1-p_1)^r\) ...

  2. 【[HAOI2011]向量】

    靠瞎猜的数学题 首先我们先对这些向量进行一顿组合,会发现\((a,b)(a,-b)\)可以组合成\((2a,0)\),\((b,-a)(b,a)\)可以组合成\((2b,0)\),同理\((0,2a) ...

  3. Mysql 用户权限管理--从 xxx command denied to user xxx

    今天遇到一个mysql 权限的问题,即标题所述  xxx command denied to user xxx,一般mysql 这种报错,基本都属于当前用户没有进行该操作的权限,需要 root 用户授 ...

  4. 【ES6】最常用的es6特性(一)

    参考链接: http://www.jianshu.com/p/ebfeb687eb70 http://www.cnblogs.com/Wayou/p/es6_new_features.html 1.l ...

  5. 33、springboot整合springcloud

    Spring Cloud Spring Cloud是一个分布式的整体解决方案.Spring Cloud 为开发者提供了在分布式系统 (配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token ...

  6. 查找系统中jdk的位置

    查找系统中jdk的位置: [root@localhost native]# find /|grep jni_md.h /var/lib/docker/overlay2/ec7a5439382a8a6d ...

  7. Selenium自动化测试之数据驱动及用例管理

    Selenium自动化测试之数据驱动及用例管理 一.TestNg注解介绍 @Test:表示一个测试方法,在运行测试用例过程中,会自动运行@Test注解的方法. 例:

  8. vue04-动画、组件

    一.vue中使用动画 文档:https://cn.vuejs.org/v2/guide/transitions.html 1. Vue 中的过渡动画 <!DOCTYPE html> < ...

  9. mpvue微信小程序开发随笔

    mpvue上手很快,学习成本低,目前是开源的,适合技术实力不是很强的公司采用. spring boot 做后台,开发效率杠杠的.建议会java的开发尽量使用spring boot 开发,省事. 最近用 ...

  10. angular路由传参和获取路由参数的方法

    1.首先是需要导入的模块 import { Router } from "@angular/router";//路由传参用到 import{ActivatedRoute,Param ...