• 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.不同情况可根据此笔记适当修改,即可使用
    
  • 相关阅读:
    Echarts、大屏动态折线图无状态加载
    地图获取城市编码vue-jsonp请求,处理跨域
    将数组中的元素拼接为一个字符串
    vue兄弟组件通信、兄弟组件传值(本人是用的是中央控件作为媒介),并一同解决重负传值、第一未传值
    vue、react动态新增行
    vue-antd 分页pagination相关重置问题
    关闭ESLint警告,本人使用的是vue-antd-pro
    文本长短不一文本长短不一致,css让其左右两侧对齐致,css让其左右两侧对齐
    Maven私服搭建 Nexus
    Maven常用命令
  • 原文地址:https://www.cnblogs.com/cdw0724/p/10796125.html
Copyright © 2020-2023  润新知