[含完整代码]Linux使用.sh脚本自动部署(启动|停止|状态|日志)项目[超详细]

news2024/11/21 0:13:34

前言:

个人博客:www.wdcdbd.com

  我们在linux部署.jar项目时,都需要通过java -jar的形式来部署,每次都要手动停止,部署,这样用起来会很麻烦。所以,这篇文章就是自己通过.sh脚本一键启动停止重启查看状态查看日志。这样会方便一些。

一、编写.sh脚本前准备工作

  1.  将你的java项目放到你linux习惯的位置
  2. 创建一个.sh文件,名字自定义。

我就给他命名为Three.sh了,具体你可以自定义

注意!!在编写.sh脚本文件时,不可以在windows环境下写好之后再放到linux环境中,因为两套系统使用的格式是不一样的。Windows下换行符号是“\r\n”,而linux下是“\n”没有”\r”,当shell脚本是在Windows下编写的时候,默认所有的换行符都是“\r\n”,linux下是没办法正确识别这个文件的。如果你已经这样做了,那么就要在linux下执行以下命令来去除掉/r
 

sed -i 's/\r$//'  sh文件名.sh

二、编写.sh脚本文件

 这是完整脚本代码。为了让大家更直观的看到脚本文件中的所有命令,下边我就将启动,停止,重启,查看状态,查看日志,这几个命令拆开来讲解如果已经对其有一些了解的话,可以直接使用这个完整的脚本代码,进行修改即可。

#!/bin/bash


# jar包路径-你放置jar包的路径,可自定义
HOME='/home/dblog'

# 启动
start(){
cd $HOME
# 将java程序后台启动,并将启动日志指向springBootThree-1.0.log中
nohup java -jar springBootThree-1.0.jar > springBootThree-1.0.log 2>&1 & 
# 打印字符串
echo "启动成功"
}

# 停止
stop(){
 # 查询到项目的pid
 tpid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep | awk '{print $2}')
 # 判断是否为空 
if [ -z "$tpid" ]
 then
# 如果为空 则打印这句话
  echo Application is already stpped
 else
# 如果不为空则执行
  echo kill $tpid 
# 关闭进程
  kill -9 $tpid

  echo "程序已关闭"
fi
}

# 查看状态
status(){
 # 获取pid的
 pid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep)

 if [ -z "$pid" ]
then
 echo "程序不存在"
else
 echo $pid
fi
}

# 查看日志信息
log(){
tail -f $HOME/springBootThree-1.0.log
}

case $1 in
 start)
  start
;;
stop)
  stop
;;
status)
  status
;;
log)
  log
;;
restart)
 $0 stop
 sleep 5
 $0 start
;;
*)
 echo "只能是{start|stop|log|restart}"
;;
esac
exit 0

0、.sh脚本格式

第一行必须是这个,没有什么为什么格式就是这样

1、启动

#!/bin/bash


# jar包路径-你放置jar包的路径,可自定义
HOME='/home/dblog'

# 启动
start(){
cd $HOME
# 将java程序后台启动,并将启动日志指向springBootThree-1.0.log中
nohup java -jar springBootThree-1.0.jar > springBootThree-1.0.log 2>&1 &
# 打印字符串
echo "启动成功"
}

2、停止

注意!!(小坑): .sh脚本语法是强语法结构,所以格式很重要,使用if判断时,中间的条件左右必须有空格

# 停止
stop(){
 # 查询到项目的pid
 tpid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep | awk '{print $2}')
 # 判断是否为空 
if [ -z "$tpid" ]
 then
# 如果为空 则打印这句话
  echo Application is already stpped
 else
# 如果不为空则执行
  echo kill $tpid 
# 关闭进程
  kill -9 $tpid

  echo "程序已关闭"
fi
}

3、查看状态

# 查看状态
status(){
 # 获取pid的
 pid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep)

 if [ -z "$pid" ]
then
 echo "程序不存在"
else
 echo $pid
fi
}

4、查看日志

log(){
tail -f $HOME/springBootThree-1.0.log
}

 5、case语法

最后使用case语法 将其联系起来即可

# 判断外部输入的是什么关键词 (start|stop|status|log|restart)
case $1 in
 start)
  start
;;
stop)
  stop
;;
status)
  status
;;
log)
  log
;;
restart)
 $0 stop
 sleep 5
 $0 start
;;
*)
 echo "只能是{start|stop|log|restart}"
;;
esac
exit 0

6、 最后

保存当前.sh文件,然后使用 chmod 777 文件名 变为可执行文件。

其实使用 chmod +x 文件名 给一个执行权限就可以了,但是我闲麻烦,所以就直接设置最大权限啦。

 三、执行.sh脚本

查看状态: ./Three.sh status

启动项目:./Three.sh start

查看日志: ./Three.sh log

关闭项目: ./Three.sh stop

重启项目: ./Three.sh restart

这就是.sh脚本自动部署脚本的基本使用方式了,快去掌握吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1384021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工作压力测试

每个职场人都会遇到工作压力,在企业人力资源管理的角度来看,没有工作压力是人力资源的低效,适当的工作压力可以促使员工不断进取,然而每个人的抗压能力是不同的,同样的工作量和工作难度,不同的人在面对相同…

实战之-Redis代替session实现用户登录

一、设计key的结构 首先我们要思考一下利用redis来存储数据,那么到底使用哪种结构呢?由于存入的数据比较简单,我们可以考虑使用String,或者是使用哈希,如下图,如果使用String,注意他的value&…

快速入门java网络编程基础------Nio

一. NIO 基础 哔哩哔哩黑马程序员 netty实战视频 0.什么是nio? NIO(New I/O)是Java中提供的一种基于通道和缓冲区的I/O(Input/Output)模型。它是相对于传统的IO(InputStream和OutputStream)模型…

基于YOLOv7算法的高精度实时六类水果目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法的高精度实时六类水果目标检测系统可用于日常生活中检测与定位苹果(apple)、香蕉(banan)、葡萄(grape)、橘子(orange)、菠萝(pineapple&a…

ElasticSearch(1):Elastic Stack简介

1 简介 ELK是一个免费开源的日志分析架构技术栈总称,官网https://www.elastic.co/cn。包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和收集的场景&#xf…

HarmonyOS 通过 animateTo讲解尺寸动画效果

上文 HarmonyOS讲解并演示 animateTo 动画效果 我们已经做出了基本的动画效果 也对 animateTo 的使用比较熟悉了 第一个参数是 配置动画参数的json 第二个参数 则是改变我们元素属性值的事件 但属性值 远远不止位置属性 本文 我们来说 通过尺寸变化 完成动画效果 如果你有看过…

[ACM题目练习] 前后手

题目1 A为了让数字总和最大,但是B想让数字总和最小。 题解 因为A先操作B后操作,所以B的策略一定是把当前剩下的数字中前1到 x 大的元素给乘上-1,那么A的策略是怎样的(通常这种题A没有策略,都是遍历所有的情况) (再接着优化&#…

规则与不规则的凸多边形IoU计算

在视觉中可能比较多的是计算规则凸四边形,而在少部分视觉,大部分现实中的多边形可能是不规则的,这个时候如果用规则的方法计算,可能会引入很多bug。在自动驾驶中不规则的凸多边形计算非常常见。 IoU= 交集 / 并集=inner_area / (area1 + area2 - inner_area) 1.规则凸四边…

深入理解JVM虚拟机第三十八篇:JVM中OOM的说明和举例

😉😉 欢迎加入我们的学习交流群呀! ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring、Security、Docker、Grpc、消息中间件、Rpc、SpringCloud等等很多应用和源码级别高质量视频和笔记资料,你想学的我们这里都有! 🥭🥭3:…

杨中科 EFCORE 第四部分 命令详解56-61

Migrations 深入研究Migrations 1、使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做“向上迁移” (Up),也可以执行把数据库回退到旧的迁移,这个操作叫“向下迁移(Down) 2、除非有特殊需要&…

《C++大学教程》4.14信用额度问题

题目&#xff1a; #include <iostream> #include <iomanip> using namespace std;int main() {unsigned int account;double beginning_balance, total_charges, total_credits, credit_limit;cout << "Enter account numbeu(or -1 to qiut):";cin…

e2studio开发三轴加速度计LIS2DW12(4)----测量倾斜度

e2studio开发三轴加速度计LIS2DW12.4--测量倾斜度 概述视频教学样品申请源码下载计算倾斜角度工作原理单轴倾斜检测双轴倾斜检测三轴倾斜检测通信模式管脚定义IIC通信模式速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e…

认识监控系统zabbix

利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●可以在 Web 前端方便的查看监控数据 ●可以回溯寻找事故发生时系统的问题和报警情况 了解zabbix zabbix是什么&#xff1f; ●zabbix 是一个基于 Web 界面的提供分布…

TypeScript泛型的高级用法:第三部分

泛型在开发第三方库时非常有用 在本文中&#xff0c;我将介绍如何使用TypeScript泛型来声明一个 defineStore 函数(类似于Pinia库中的 defineStore 函数)来完成以下挑战。在挑战中&#xff0c;我还会介绍一些非常有用的TypeScript知识。掌握了以后&#xff0c;应该会对你的工作…

BRC20通证的深度科普:它的潜力与如何导入到bitget

​BRC-20通证是什么&#xff1f; BRC-20通证&#xff1a;比特币上的“变形金刚”&#xff1f;&#xff01;不依赖智能合约&#xff0c;它们就像拥有超能力的外星人&#xff0c;直接在比特币的最小单位——聪上刻写JSON代码。哈哈&#xff0c;这比把房子建在乐高积木上还要刺激…

50天精通Golang(第17天)

beego框架总结及数据库连接配置 一、beego框架总结 1.1 Beego项目组织架构 上节课程内容对beego的案例代码进行了一个简单的分析&#xff0c;总结一下beego项目的组织结构&#xff0c;总结如下&#xff1a; 1.1.1 项目配置&#xff1a;conf 项目配置文件所在的目录&#x…

华为端口安全常用3种方法配置案例

安全动态mac地址学习功能 [Huawei]int g0/0/01 interface GigabitEthernet0/0/1 port-security enable //开启安全 port-security max-mac-num 2 //最多为2个mac地址学习 port-security protect-action restrict //丢包带警告 port-security aging-time 1 //mac地址的老化时间…

漏洞复现--GitLab 任意用户密码重置漏洞(CVE-2023-7028)

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

懒得玩游戏--帮我做数独

目录 简介自动解数独思路核心思路输入解析打印 完整代码 简介 最近玩上了一款类似于数独的微信小程序游戏&#xff0c;名字叫数独趣味闯关&#xff0c;过了数独的关卡之后会给拼图&#xff0c;玩了几关之后摸清套路了就有点累了&#xff0c;但是还想集齐拼图&#xff0c;所以就…