Linux脚本启动jar包

2023-11-04

注意:以下脚本笔者是在Windows上编辑的,因此默认格式是dos。如果在Linux上使用,请使用vi命令编该文件,改为Unix格式。笔者使用的SpringBoot + jsp 因此使用的是war包,如果你使用的是jar包,在文中用到war的地方改成jar就行。

一:脚本auto_deploy.sh

使用该脚本只需要修改JAR_NAME(改成自己的)、LOG_PATH(改成自己的)、脚本格式(改成Unix格式)这三点就行了。

#!/bin/bash
# 定义变量
# 要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
JAR_NAME="/xxx/xxx/xxx/xxx.war"
# 日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
LOG_PATh=/export/Logs/main.log


# 如果输入格式不对,给出提示!
tips() {
	echo ""
	echo "WARNING!!!......Tips, please use command: sh auto_deploy.sh [start|stop|restart|status].   For example: sh auto_deploy.sh start  "
	echo ""
	exit 1
}


# 启动方法
start() {
        # 重新获取一下pid,因为其它操作如stop会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行
	if [ -z $pid ]; then
        nohup java -jar $JAR_NAME > /dev/null 2>&1 &
        pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
		echo ""
        echo "Service ${JAR_NAME} is starting!pid=${pid}"
		echo "........................Here is the log.............................."
		echo "....................................................................."
        tail -f $LOG_PATh
		echo "........................Start successfully!........................."
	else
		echo ""
		echo "Service ${JAR_NAME} is already running,it's pid = ${pid}. If necessary, please use command: sh auto_deploy.sh restart."
		echo ""
	fi
}

# 停止方法
stop() {
		# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ -z $pid ]; then
		echo ""
        echo "Service ${JAR_NAME} is not running! It's not necessary to stop it!"
		echo ""
	else
		kill -9 $pid
		echo ""
		echo "Service stop successfully!pid:${pid} which has been killed forcibly!"
		echo ""
	fi
}

# 输出运行状态方法
status() {
        # 重新获取一下pid,因为其它操作如stop、restart、start等会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ -z $pid ];then
		echo ""
        echo "Service ${JAR_NAME} is not running!"
		echo ""
	else
		echo ""
        echo "Service ${JAR_NAME} is running. It's pid=${pid}"
		echo ""
	fi
}

# 重启方法
restart() {
	echo ""
	echo ".............................Restarting.............................."
	echo "....................................................................."
		# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ ! -z $pid ]; then
		kill -9 $pid
	fi
	start
	echo "....................Restart successfully!..........................."
}

# 根据输入参数执行对应方法,不输入则执行tips提示方法
case "$1" in
   "start")
     start
     ;;
   "stop")
     stop
     ;;
   "status")
     status
     ;;
   "restart")
     restart
     ;;
   *)
     tips
     ;;
esac

注意事项:

  1. -z 命令表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 
  2.  要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到

 

二:更改脚本格式

注意:以下脚本笔者是在Windows上编辑的,因此默认格式是dos。如果在Linux上使用,请使用vi命令编该文件,改为Unix格式。

第一步: 

上传脚本文件到Linux系统后,使用vi命令编辑该脚本文件:

vi auto_deploy.sh

第二步:  

在Esc模式下冒号输入命令set ff回车就能看到,该脚本是Windows系统的dos格式,如下图

第三步:  

在Esc模式下冒号,输入修改格式命令set ff=linux,然后回车(回车后Linux系统并没有提示),完事后还是在Esc模式下输入写入保存命令:wq。

:set ff=linux
:wq

如下图 

 

 

三:脚本运行截图

服务非启动状态下截图

sh auto_deploy.sh

sh auto_deploy.sh stop

 

sh auto_deploy.sh status

 

服务启动状态下截图

sh auto_deploy.sh start

再次启动一下试试(此时会有提示:服务已经启动,启动状态下请使用重启命了):

查看状态(提示正在运行):

sh auto_deploy.sh status

重启试试:

sh auto_deploy.sh restart

停掉服务试试:

sh auto_deploy.sh stop

再次输入stop命令(给出提示:服务没有运行,没必要停止!):

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux脚本启动jar包 的相关文章

  • 七牛云的使用

    1 https www qiniu com 用qq或者微信登入七牛云 2 添加一个对象存储 3 在个人中心获取appkey和appsecret 4 绑定一个域名 5 把sdk放在自己的项目中 封装一个上传的类

随机推荐

  • 华为笔试8.31

    Q1 int main int argc char const argv string l An introduction is the first paragraph of your paper string l a a getline
  • 【问题解决】M1芯Macbook安装python&M1 Macbook pro基本操作

    刚接触Macbook 一步一个坑 有幸家中领导赏识 才得以抚摸到传这闻已久的神器 可这神功尚未练成 差点被气的自断经脉 之前没用过苹果os系统 刚一上手各种不适应 要不是因为爱 qiong 电脑早不知道摔多少次了 F1 12哪去了 我这PK
  • 纯前端实现 导入 与 导出 Excel

    最近经常在做 不规则Excel的导入 或者一些普通Excel的导出 当前以上说的都是纯前端来实现 下面我们来聊聊经常用到的Excel导出与导入的实现方案 本文实现技术栈以 Vue2 JS 为例 导入分类 调用 API 完全由后端来解析数据
  • QT实现发送get和post请求

    介绍下如何在qt程序中给http服务端发送get和post请求 首先你要有一个http服务端 下面直接贴下代码 pro QT core gui network greaterThan QT MAJOR VERSION 4 QT widget
  • Android系统 —— 源码编译错误整理(持续更新)

    记录一些日常遇到的编译问题及解决方法 查找的时候可以直接搜索问题描述的关键部分 目录 1 更改源码目录名引发的错误 2 添加VNDK库 Vendor Native Development Kit 报错 3 头文件被重复包含 4 无法链接库文
  • 【FlashDB】第三步 FlashDB 移植 STM32L475 使用QSPI驱动外部 flash W25Q64之 FlashDB 移植

    准备事项 完成了以下两步操作后进行 FlashDB 第一步 FlashDB 移植到 STM32L475 使用QSPI驱动外部 flash W25Q64之FAL移植 FlashDB 第二步 FlashDB 移植 STM32L475 使用QSP
  • Anaconda使用教程(常用命令)

    Anaconda3安装教程 配置环境变量 图文教程 https blog csdn net love906897406 article details 125010258https blog csdn net love906897406 a
  • ECharts数据可视化

    目录 第一章 什么是ECharts 第二章 搭建环境 2 1 Echarts的下载 2 2 Visual Studio Code下载 第三章 一个简单的可视化展示 第四章 Echarts组件 4 1 标题 4 2 提示框 4 3 工具栏 4
  • 机器学习实战5(回归篇)

    目录 1 回归 2 回归代码 3 预测鲍鱼的年龄 1 回归 前面的文章介绍了很多分类算法 分类的目标变量是标称型数据 而本文将会对连续型的数据做出预测 主要讲解简单的线性回归和局部加权线性回归 并通过预测鲍鱼年龄的实例进行实战演练 说到回归
  • Keil 硬件仿真时 外设寄存器中显示的定时器计数值不准确

    最近在做定时器同步测试 发现无论如何都无法正常让定时器的计数器同步起来 很郁闷 换了多个型号的单片机都不行 于是怀疑 软件仿真有问题 于是通过曲线测试 使用连个自变量 同时读取2个定时器的CNT 观察这两个变量测试的结果才 正常
  • 解决eclipse编译老是上一个程序代码问题

    使用eclipse遇到了问题 程序无论怎么运行都是之前修改前的程序结果 如下面所示 package test public class test public static void main String args TODO Auto g
  • JavaWeb核心技术——Request请求

    目录 1 Request和Response的概述 2 Request对象 2 1 Request继承体系 2 2 Request获取请求数据 2 2 1 获取请求行数据 2 2 2 获取请求头数据 2 2 3 获取请求体数据 2 2 4 获
  • educoderpython答案顺序结构程序设计_程序设计基础

    程序设计基础 一 程序设计方法与风格 1 设计方法 指设计 编制 调试程序的方法和过程 主要有结构化程序设计方法 软件工程方法和面向对象方法 2 设计风格 良好的程序设计风格 主要应注重和考虑下述一些因素 符号名的命名应具有一定的实际含义
  • navicat连接mysql1064_navicat for mysql出现1064错误怎么办

    navicat for mysql出现1064错误怎么办 存储过程 参数 代码 分隔符 长度 navicat for mysql出现1064错误怎么办 易采站长站 站长之家为您整理了navicat for mysql出现1064错误怎么办的
  • 【pandas】空数据处理

    目录 1 判断空值 isna 2 空值删除 dropna 3 空值替换 dropna 数据清洗是对一些没有用的数据进行处理的过程 很多数据集存在数据缺失 数据格式错误 错误数据或重复数据的情况 如果要使数据分析更加准确 就需要对这些没有用的
  • 机器学习策略二——优化深度学习系统

    进行误差分析 Carrying out error analysis 如果你希望让学习算法能够胜任人类能做的任务 但你的学习算法还没有达到人类的表现 那么人工检查一下你的算法犯的错误也许可以让你了解接下来应该做什么 这个过程称为错误分析 假
  • C++如何做字符串分割(5种方法)

    1 用strtok函数进行字符串分割 原型 char strtok char str const char delim 功能 分解字符串为一组字符串 参数说明 str为要分解的字符串 delim为分隔符字符串 返回值 从str开头开始的一个
  • 卷积神经网络(CNN)详解与代码实现

    1 应用场景 卷积神经网络的应用不可谓不广泛 主要有两大类 数据预测和图片处理 数据预测自然不需要多说 图片处理主要包含有图像分类 检测 识别 以及分割方面的应用 图像分类 场景分类 目标分类 图像检测 显著性检测 物体检测 语义检测等等
  • 关于二阶锥优化(SOCP)的学习

    原来 数学不好的时候 真的很难深入下去做研究 最近的两个月时间里 我就边学习SOCP相关的理论知识 一边拿它当工具来分析多视角几何中的问题 包括Triangulation Homography Estimation等 接触到SOCP的起因在
  • Linux脚本启动jar包

    注意 以下脚本笔者是在Windows上编辑的 因此默认格式是dos 如果在Linux上使用 请使用vi命令编该文件 改为Unix格式 笔者使用的SpringBoot jsp 因此使用的是war包 如果你使用的是jar包 在文中用到war的地