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

前言:

个人博客: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(){# 查询到项目的pidtpid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep | awk '{print $2}')# 判断是否为空 
if [ -z "$tpid" ]then
# 如果为空 则打印这句话echo Application is already stppedelse
# 如果不为空则执行echo kill $tpid 
# 关闭进程kill -9 $tpidecho "程序已关闭"
fi
}# 查看状态
status(){# 获取pid的pid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep)if [ -z "$pid" ]
thenecho "程序不存在"
elseecho $pid
fi
}# 查看日志信息
log(){
tail -f $HOME/springBootThree-1.0.log
}case $1 instart)start
;;
stop)stop
;;
status)status
;;
log)log
;;
restart)$0 stopsleep 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(){# 查询到项目的pidtpid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep | awk '{print $2}')# 判断是否为空 
if [ -z "$tpid" ]then
# 如果为空 则打印这句话echo Application is already stppedelse
# 如果不为空则执行echo kill $tpid 
# 关闭进程kill -9 $tpidecho "程序已关闭"
fi
}

3、查看状态

# 查看状态
status(){# 获取pid的pid=$(ps -ef | grep springBootThree-1.0.jar | grep -v grep)if [ -z "$pid" ]
thenecho "程序不存在"
elseecho $pid
fi
}

4、查看日志

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

 5、case语法

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

# 判断外部输入的是什么关键词 (start|stop|status|log|restart)
case $1 instart)start
;;
stop)stop
;;
status)status
;;
log)log
;;
restart)$0 stopsleep 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.mzph.cn/news/622930.shtml

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

相关文章

XCTF:hello_pwn[WriteUP]

使用checksec查看ELF文件信息 checksec 4f2f44c9471d4dc2b59768779e378282 这里只需要注意两个重点: Arch:64bit的文件,后面写exp的重点 Stack:No canary found 没有栈溢出保护 使用IDA对ELF文件进行反汇编 双击左侧的函数栏…

库函数点亮Led

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

陶瓷碗口缺口检测-图像分割

图像分割 由于对碗口进行缺口检测,因此只需要碗口的边界信息。得到陶瓷碗区域填充后的图像,对图像进行边缘检测。这是属于图像分割中的内容,在图像的边缘中,可以利用导数算子对数字图像求差分,将边缘提取出来。 本案…

【算法刷题】总结规律 算法题目第2讲 [234] 回文链表,因为深浅拷贝引出的bug

配合b站视频讲解食用更佳:https://www.bilibili.com/video/BV1vW4y1P7V7 核心提示:好几道题是处理有序数组的! 适合人群:考研/复试/面试 解决痛点:1. 刷了就忘 2.换一道相似的题就不会 学完后会输出:对每类题目的框架…

test-04-test case generate 测试用例生成 tcases A model-based test case generator

拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 自动生成测试用例 Tcases&#xf…

查看lucene和elasticsearch的版本对应关系

一、Maven仓库官网: https://mvnrepository.com/ 二、搜索elasticsearch,然后点击Server或者elasticsearch进入。 三、点击相应的版本号进入。 四、查看对应的lucene版本。 END

spring cloud feign介绍以及和dubbo对比

什么是feign 在微服务架构中,Feign 是一个声明式的 web 服务客户端,它使得编写 web 服务客户端变得更加容易。Feign 旨在帮助开发者轻松地调用远程服务。它是由 Netflix 开发的一部分 Spring Cloud Netflix 微服务套件。Feign 通过提供一个简洁的模板化…

SwiftUI CoreData Picker

开发多账本功能 CoreData 与 Picker 的使用 上代码: // // TestZhangBenPicker.swift // pandabill // // Created by 朱洪苇 on 2024/1/14. //import SwiftUIstruct TestZhangBenPicker: View {FetchRequest(sortDescriptors: [SortDescriptor(\.cc_at)],anima…

JavaWeb,JavaScript的学习(上)

由于是JavaWeb的学习&#xff0c;是建立在已经学过Java的基础上。所以很多地方与Java做对比&#xff0c;然后没有把多余的内容详细写出来。 JS的引入方式 内嵌式 在head中通过一对script标签定义脚本代码 例&#xff1a; <!DOCTYPE html> <html lang"en&quo…

VMware迁移虚拟机教程,适用于换电脑、重装系统

新购入了一台电脑&#xff0c;接下来可能会有连续好多篇与装机/重装系统/装软件有关的文章&#xff0c;平时可能只是纸上谈兵&#xff0c;这次是花重金买素材了&#xff0c;建议收藏 问题背景&#xff1a;在之前的电脑上&#xff0c;安装了VMware Workstation&#xff0c;并配…

Python中魔术方法汇总

文章目录 1. Python中魔术方法的定义2. 魔术方法的分类2.1面向对象特性的增强&#xff1a;2.2运算符重载&#xff1a;2.3语义化编程&#xff1a;2.4控制对象生命周期&#xff1a;2.5容器协议支持&#xff1a;2.6 上下文管理器协议&#xff1a;2.7简化API设计&#xff1a; 3. 部…

第三十九周:文献阅读+Transformer

目录 摘要 Abstract 文献阅读&#xff1a;CNN与LSTM在水质预测中的应用 现有问题 提出方法 相关模型 CNN LSTM CNN-LSTM神经网络模型 模型框架 CNN-LSTM神经网络 研究实验 数据集 模型评估指标 数据预处理 实验设计与结果 研究贡献 Transformer Encoder-Dec…

uniapp返回上一页并刷新数据

在uniapp中&#xff0c;返回页面时onLoad是不会触发的 如果只需要在特定情况下返回上一页才需要刷新数据 可以使用$emit和$no去解决 例如&#xff1a;注册完成后返回到首页并隐藏注册按钮&#xff0c;register.vue和index.vue register.vue <template><view clic…

C#灵活的任务调度组件FluentScheduler

FluentScheduler是一个C#的灵活的任务调度组件&#xff0c;支持各类任务调度。网上有很多演示代码&#xff0c;此处记录下来&#xff0c;方便自己查找。 // See https://aka.ms/new-console-template for more information //Console.WriteLine("Hello, World!");us…

prometheus常用exporter

一、node-exporter node_exporter&#xff1a;用于监控Linux系统的指标采集器。 未在k8s集群内的linux机器监控 GitHub - prometheus/node_exporter: Exporter for machine metrics 常用指标&#xff1a; •CPU • 内存 • 硬盘 • 网络流量 • 文件描述符 • 系统负载 •…

Win系统搭建Elasticsearch实现公网远程访问本地服务

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎&#xff0c;它提供了一个分布式、多…

七、Qt 信号和槽

在QT4以上的版本&#xff0c;在窗体上用可以通过选中控件&#xff0c;然后点击鼠标右键单击按钮&#xff0c;选择“转到槽”。可以自动创建信号和槽。 选择clicked(),并点击 ok Qt Creator会给头文件和代码文件自动添加 这个按钮的单击事件&#xff08;信号和槽&#xff09;。 …

【Docker】centos中及自定义镜像,并且上传阿里云仓库可提供使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《【Docker】centos中及自定义镜像&#xff0c;…

零零鸡生态养殖农场“出圈”,有“智”更有“质”,助力本土品牌高质量发展

什么是生态农场&#xff1f;不同于常规农场&#xff0c;它对农业生产经营单元的各个关键环节有着极为严格的要求&#xff0c;强调整体、协调、循环、再生、多样&#xff0c;产品质量自然更好&#xff0c;附加值也更高&#xff0c;更能满足日趋多样化的巨大市场。零零鸡生态农场…

如何在前端优化中处理大量的图像资源?

在前端优化中&#xff0c;处理大量的图像资源是一项重要的任务。由于图像占据了网站带宽的大部分&#xff0c;因此优化图像可以显著提高网站的性能和用户体验。下面将介绍一些在前端优化中处理大量图像资源的常见方法。 一、压缩图像 压缩图像是减少图像文件大小和优化图像的…