当前位置: 首页 > news >正文

[含完整代码]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(){
 # 查询到项目的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脚本自动部署脚本的基本使用方式了,快去掌握吧。

相关文章:

  • Unity URP下阴影锯齿
  • 数据结构:堆和堆排序
  • 基于elementUI的el-table组件实现按住某一行数据上下滑动选中/选择或取消选中/选择鼠标经过的行
  • cfa一级考生复习经验分享系列(十八)
  • 影响邮件打开率的因素有哪些?
  • C //练习 5-4 编写函数strend(s, t)。如果字符串t出现在字符串s的尾部,该函数返回1;否则返回0。
  • Java多线程并发篇----第十三篇
  • JsonPath
  • test-04-test case generate 测试用例生成 tcases 快速开始
  • 【进程调度】基于优先级的轮转调度C++实现算法
  • 人工智能_机器学习092_使用三维瑞士卷数据_利用分层聚类算法进行瑞士卷数据三维聚类---人工智能工作笔记0132
  • Bean作用域及生命周期
  • 任务类型划分
  • SpringBoot 引入分页插件 PageHelper
  • Redis 常见数据结构以及使用场景分析
  • JavaScript 异步编程解决方案-中篇
  • DrissionPage获取浏览器Network数据包
  • 【C++入门到精通】智能指针 [ C++入门 ]
  • gem5学习(11):将缓存添加到配置脚本中——Adding cache to the configuration script
  • 远程开发之vacode插件Remote - SSH
  • 选址江南制造总局旧址,上海工业博物馆建设有新进展
  • 向猫学习禅修之后,你会发现将生活降格为劳作是多么愚蠢
  • 玉渊谭天丨卢拉谈美国降低对华关税:中国的行动捍卫了主权
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖
  • 崔登荣任国家游泳队总教练
  • 今天北京白天气温超30℃,晚间为何下冰雹?