从前使用sh文件都是复制粘贴别人的,突然今天来了兴趣想看看道理是什么内容,读完后才知道原来如此容易读懂~妈妈以后再也不懂担心我不会写简单shell脚本了。
shell知识
- 【’ '】 单引号中的内容,只显示本身的含义
- 【" "】 双引号中变量$可以被识别,但命令只能作为字符显示
- 【$变量名】 后面引用的时系统变量
- 【代码最后 &】 让程序后台运行
- 【if [ ]; then ‘内容’ fi 】 fi是if的结尾
- 【nohup】 不挂断地运行命令
- 【echo】 打印文本/打印日志
.Sh文件内容
Tag1="test1"
# 检查进程状态
pid=$(ps -ef | grep -v 'grep' | egrep $Tag1| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
kill -9 "$pid"
else
echo "boot is stopped"
fi
# 启动项目
nohup java -jar -Xms128M -Xmx256M /home/test1.jar > /home/a.log &
Tag2="test2"
# 检查进程状态
pid=$(ps -ef | grep -v 'grep' | egrep $Tag2| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
kill -9 "$pid"
else
echo "boot is stopped"
fi
# 启动项目
nohup java -jar -Xms128M -Xmx256M /home/test2.jar > /home/b.log &
首先我们先来了解 上面这个.sh文件都做了什么
-
给Tag1变量赋值
-
pid = $(ps -ef | grep -v ‘grep’ | egrep $Tag1| awk ‘{printf $2 " "}’) 查询与tag1变量相匹配的进程pid 并获取 用空格分开
-
if判断pid是否为空
- 如果不为空 kill程序
- 如果为空 打印字符传 “boot is stopped”
-
最后启动程序
为什么要先kill掉程序呢?当然是因为不kill掉 会出现端口号被占用的情况~