前言本人开发了一个windows部署jar包的工具,在实际生产环境中使用非常简单方便。公司的一些项目部署在linux系统中,所以决定集成一个通用的jar包部署脚本,注册为启动服务,为同仁开发实施提供方便。以下操作的实际系统环境是centos8,通过脚本启动和安装jdk。无需配置环境变量,即可将脚本和部署jar包放在同一个文件夹下。修改脚本deploy.sh中的JAVA_HOME指向jdk目录。修改APP_NAME为jar包的名字#!/bin/bashexportJAVA_HOME=/usr/soft/jdk/jdk1.8.0_241exportJRE_HOME=/$JAVA_HOME/jreexportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin#这里可以换成自己的执行程序,其他代码不用改APP_NAME=manage.jar#使用说明,用于提示输入参数usage(){echo"Usage:shrobotcenter.sh[start|stop|restart|status]"exit1}#检查程序是否运行is_exist(){pid=`ps-ef|grep$APP_NAME|grep-vgrep|awk'{print$2}'`#不存在则返回1,存在则返回0if[-z"${pid}"];thenreturn1elsereturn0fi}#Startmethodstart(){is_existif[$?-eq0];然后echo"${APP_NAME}isalreadyrunning.pid=${pid}"elsenohupjava-jar${APP_NAME}>app.log2>&1&fi}#Stopmethodstop(){is_如果[$?-当量“0”];然后kill-9$pidelseecho"${APP_NAME}isnotrunning"fi}#outputrunningstatusstatus(){is_existif[$?-当量“0”];然后echo"${APP_NAME}isrunning.Pidis${pid}"elseecho"${APP_NAME}isNOTrunning."fi}#Restartrestart(){stopsleep5start}#根据输入的参数,选择执行对应的方法,不输入则执行使用说明case"$1"in"start")start;;“停止”)停止;;“状态”)状态;;“重新启动”)重新启动;;*)用法;;esac命令行进入对应的脚本目录cd/usr/jenkinsworkspace/manage脚本文件授权chmodu+xdeploy.sh启动jar包,同目录下的app.log会显示日志,重启日志将被覆盖。/deploy.shstart查看jar包运行情况。/deploy.shstatus停止jar包。/deploy.shstop需要完成注册服务启动【Startbyscript】步骤配置内容修改deploystart.sh和deploystop.sh脚本的内容光盘路径为【Startbyscript】步骤copy到项目路径deploystart。shcd/usr/jenkinsworkspace/manage;chmodu+xdeploy.sh;./deploy.shstartdeploystop.shcd/usr/jenkinsworkspace/manage;chmodu+xdeploy.sh;./deploy.shstop将deploy.service、deploystart.sh、deploystop.sh复制到/etc/systemd/system目录下deploy.service[Unit]Description=rundeployserviceAfter=network.target[Service]Type=forkingExecStart=/bin/bash/etc/systemd/system/deploystart.shExecStop=/etc/systemd/system/deploystop.shPrivateTmp=true[Install]WantedBy=multi-user.targetexecutecommandservicestartsystemctlenabledeploy.serviceexecutecommandcancelservicebootstartsystemctldisabledeploy.service执行查看服务状态的命令systemctlstatusdeploy执行启动服务的命令systemctlstartdeploy执行停止服务的命令systemctlstopdeploy