前言:
个人博客:www.wdcdbd.com
我们在linux部署.jar项目时,都需要通过java -jar的形式来部署,每次都要手动停止,部署,这样用起来会很麻烦。所以,这篇文章就是自己通过.sh脚本一键启动,停止,重启,查看状态,查看日志。这样会方便一些。
一、编写.sh脚本前准备工作
- 将你的java项目放到你linux习惯的位置
- 创建一个.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脚本自动部署脚本的基本使用方式了,快去掌握吧。