centos7下将java -jar命令运行一个项目做成systemd服务
有些时候运行一个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服务的更多相关文章
- java -jar命令运行jar包时指定外部依赖jar包 linxux or windows
前尘回顾: setup.bat [chenquan@hostuser tartest]$ cat ../setup.sh javac -encoding UTF-8 -Djava.ext.dirs=. ...
- 使用 "java -jar"命令启动jar包时报不支持的jdk版本异常
在使用java -jar 命令启动一个jar包的时候,提示版本不支持: [root@hadoop01 eureka-server-master]# java -jar xuebusi-eureka-s ...
- -Xbootclasspath参数、java -jar参数运行应用时classpath的设置方法
当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报ClassNotFound错误.实际上 ...
- centos7下Maven Java selenium3环境搭建
centos7下Maven Java selenium3环境搭建 一.Jdk安装 我这里用的是open-jdk. [adawang@localhost src]$ sudo yum search op ...
- linux 下检查java jar包 程序是否正常 shell
linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...
- linux 下启动java jar包 shell
linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...
- linux 下停止java jar包 shell
linux 下停止java jar包 shell http://injavawetrust.iteye.com #!/bin/sh APP_HOME=/home/ap/injavawetrust/ba ...
- 【MIT6.828】centos7下使用Qemu搭建xv6运行环境
title:[MIT6.828]centos7下使用Qemu搭建xv6运行环境 date: "2020-05-05" [MIT6.828]centos7下搭建xv6运行环境 1. ...
- Linux环境下执行java -jar xxx.jar命令如何让springboot项目在后台运行
段落引用> 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctr ...
随机推荐
- Python数据类型-字典
字典(dict) 字典是key:value形式的一种表达形式,例如在Java中有map,JavaScript中的json,Redis中的hash等等这些形式.字典可以存储任意的对象,也可以是不同的数据 ...
- jq复制到剪切板插件clipboard.min.js(兼容IE9)
/*! * clipboard.js v1.5.5 * https://zenorocha.github.io/clipboard.js * * Licensed MIT 漏 Zeno Rocha * ...
- 【OpenCV新手教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云( ...
- POJ2074 Line of Sight
嘟嘟嘟 题意:用一条水平线段表示以栋房子:\((x_0, y_0)(x_0', y_0)\).然后有一条低于房子的水平线段\(l_0\),代表你可以到的位置.接下来输入一个数\(n\),一下\(n\) ...
- UVA11324 The Largest Clique
嘟嘟嘟 很自然的想到先tarjan把强联通分量缩点,因为对于一个强联通分量,要么不选,要么全选,所以可看成一个点. 然后转化成了求DAG上的一条最长路(每一个点都有权值).刚开始我想用dijkstra ...
- burpsuit常用功能
1.生成GET数据包:复制url -> 打开burp -> repeater -> 右键paste url as request 2.生成POST数据包:生成一个GET数据包 -&g ...
- browserify文件后函数调用报is not defined的原因
举个例子: a.js ; module.exports.a = a; b.js var result = require('./a'); var getA =() => { console.lo ...
- 【题解】洛谷P1273 有线电视网(树上分组背包)
次元传送门:洛谷P1273 思路 一开始想的是普通树形DP 但是好像实现不大好 观摩了一下题解 是树上分组背包 设f[i][j]为以i为根的子树中取j个客户得到的总价值 我们可以以i为根有j组 在每一 ...
- Python 有用的 map() deduce() filter() 函数
#!/usr/bin/python#5!+4!+3!+2!+1! #give 3 return 3*2*1def jiechen(n): N = map(lambda x:x+1,range(n)) ...
- 【算法学习】AVL平衡二叉搜索树原理及各项操作编程实现(C语言)
#include<stdio.h> #include "fatal.h" struct AvlNode; typedef struct AvlNode *Positio ...