想记录重启的是哪个docker该怎么改脚本
#!/bin/sh
set -x
dir=/home/watch_log/
mkdir -p $dir
cd $dir
if [ `docker ps -a |grep Exited |awk '{print $12}' |grep -v "nginx02" |grep -v "^$" | grep -v grep -c` > 0 ]; then
docker ps -a |grep Exited |awk '{print $12}'|grep -v "nginx02" |grep -v "^$" |grep -v "CONTAINER" | xargs -n 1 docker restart
echo "`date +%Y_%m_%d_%H%M`_restart_docker" >>$dir/docker.log
fi
这个脚本定时执行后,会检测nginx03、nginx04和nginx05是否挂了,如果挂了会自动重启,但如果想要记录重启的到底是nginx03还是nginx04,还是nginx05,脚本应该怎么改?实际环境可能有十多个docker ,应该怎么去记录重启的是哪个docker,谢谢
docker restart命令执行之后,就会输出相应的容器名称。你可以直接在后面>>重定向到记录的文件里面。
或者再用一层管道,先记录一下重启时的系统时间,再记录管道传过来的容器名。这样可以看到每个容器每次的重启时间了
为什么不用docker-compose?在docker-compose.yml文件里加上restart: always
services:
nginx:
image: nginx:latest
restart: always
...
推荐使用监控软件进行管理nginx。我这个有现成的案例
运维:Centos8安装supervisor守护Nginx进程笔记_IT技术分享社区的博客-CSDN博客_centos8安装supervisor
#!/bin/sh
set -x
dir=/home/watch_log/
mkdir -p $dir
cd $dir
if [ `docker ps -f status=exited -f name="^nginx" | grep -c Exited` -gt 0 ];then
docker ps -f status=exited -f name="^nginx" | grep Exited | awk '{print $NF}' | while read line;do
docker restart $line
echo "`date +%Y_%m_%d_%H%M`_restart_docker $line" >>$dir/docker.log
done
fi