要求:项目需要做到自动重启功能,需要一个守护脚本一直后台运行,2分钟检测一次平台-api服务是否存在,如果不存在则执行启动脚本,进行平台-api的启动。
目录
3.5. > /dev/null 2>&1 和 2>&1 > /dev/null的区别
3.6. >guard_tandem_platform.log
1、编写脚本
echo ""
echo " ************************************************ ";
echo " * tandem_platform service * ";
echo " *----------------------------------------------* ";
echo " * * ";
echo " * * ";
echo " *----------------------------------------------* ";
echo " * $(date +%Y-%m-%d) * ";
echo " ************************************************ ";
deployPath=/home/docker/mesa/api
deployFile=/home/docker/mesa/api/deploy-api.sh
if [ -e $deployFile ]
then
echo ""
else
echo "部署脚本不存在,请检查路径是否一致"
exit
fi
while true
do
bRunning=$(docker ps | grep tandem_platform )
echo "$bRunning"
if [ "$bRunning" ]
then
echo "tandem_platform服务正在运行中......"
sleep $[60*2] # 每隔 2分钟检测一次
else
cd $deployPath
echo "tandem_platform-重新执行脚本"
sh deploy-api.sh deployImagesAndStartContainer
echo "脚本执行成功"
sleep $[60*5]
fi
done
2、执行命令启动脚本
nohup sh tandem_platform.sh >guard_tandem_platform.log 2>&1 &
3、启动命令说明
3.1. nohup
nohup(n ohang up)的意思是不挂起、永久执行
nohup运行命令可以使运行的命令永久的执行下去,和用户终端没有关系,可以在你退出帐户/关闭终端之后继续运行相应的进程。例如我们断开SSH连接并不会影响他的运行(注意:nohup没有后台运行的意思,&才是后台运行)
3.2. &
&是指在后台运行,当用户退出(挂起)、关闭终端的时候,后台运行的这条命令也会退出
3.3. /dev/null
/dev/null表示垃圾桶的意思,类似windows的回收站
3.4. 2>&1
2表示错误输出,1表示标准输出,>表示重定向
所以2>&1连起来就是:将错误输出重定向到标准输出
3.5. > /dev/null 2>&1 和 2>&1 > /dev/null的区别
> /dev/null 2>&1: 标准输出和错误输出都被重定向到回收站
2>&1 > /dev/null: 错误输出到终端,标准输出被重定向到回收站
3.6. >guard_tandem_platform.log
输出到这个文件里
4、要输出日志和不要输出日志
4.1. 要日志
nohup sh tandem_platform.sh >guard_tandem_platform.log 2>&1 &
4.2. 不要日志
nohup sh tandem_platform.sh >/dev/null 2>&1 &