前言:

个人博客: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脚本自动部署脚本的基本使用方式了,快去掌握吧。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐