用root来执行计划任务
问题
这两天发现部署在cloud上面的容器服务有连不上的现象,检查了下docker logs,也没查出个所以然。索性就设个比较粗暴的计划,如果连不上了,就重启容器。
操作
创建一个shell,起个名字叫做restart_app.sh
#!/usr/bin/env bash
if lsof -Pi:2222 -sTCP:LISTEN -t>/dev/null ;then
echo "service is running on port 2222"
else
/usr/bin/docker restart container1
/usr/bin/docker restart container2
fi
然后,由于lsof如果不用root来运行的话,会出现错误。那就用root的角色来设定计划任务,这样shell就可以以root的权限来执行了。
sudo crontab -e
打开计划任务添加下面的条目,我希望是每5分钟检查一次。
*/5 * * * * /bin/sh /home/mark/restart_app.sh
为了确定计划任务可以运行,手动stop容器,然后过会儿再docker ps一下看看,发现已经在运行了。