Nginx web服务已经应用在很多web项目,一些集成安装环境里面也默认集成Nginx,而nginx时常也会出现一些莫名的假死状态,为了解决这个问题,大部分的运维采用自动重启的来解决这个问题。最近手上一个项目就有这样的需求。由于采用的wdlinux的集成安装环境,自带的webrestart.sh的自动重启脚本,但是发现不成功,今天彻底解决一下这个问题。
问题总结:wdlinux的这个重启web服务脚本依靠的是crontab的linux自动服务,通过spool服务发现脚本有点问题。crontab和重启命令都有问题,我这边的服务器版本centos7.3
1、使用crontab -e后,正常添加,启动crond 但是并没有起作用,
这是因为编辑crond任务有问题:
完整:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
2、通过spool服务可以查看相关服务报错
From root@ebs-56951.localdomain Wed Apr 8 15:36:01 2020
Return-Path:
X-Original-To: root@ebs-56951
Delivered-To: root@ebs-56951.localdomain
Received: from ebs-56951 (localhost [127.0.0.1])
by ebs-56951.localdomain (Postfix) with ESMTP id 5256720738
for
Received: (from root@localhost)
by ebs-56951 (8.14.7/8.14.7/Submit) id 0387a1D8014091;
Wed, 8 Apr 2020 15:36:01 +0800
Date: Wed, 8 Apr 2020 15:36:01 +0800
Message-Id:
From: "(Cron Daemon)"
To: root@ebs-56951.localdomain
Subject: Cron
Content-Type: text/plain; charset=GB2312
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
/www/wdlinux/wdcp/shell/webrestart.sh:行9: service: 未找到命令
web restart fail
3、修改相关命令
#!/bin/bash
# wdcp tools
#
# author wdlinux
# url http://www.wdlinux.cn
tld="/www/wdlinux/wdcp/logs"
[ ! -d $tld ] && mkdir -p $tld
tlf=$tld/task.log
netstat -lnpt | grep nginx && killall -9 nginx && systemctl start nginxd.service && date >> $tlf && echo "nginx restart success" >> $tlf && exit 0 #原先写的是 service nginxd restart
date >> $tlf && echo "web restart fail" && exit 1
4、成功运行,查看task.log
2020年 04月 08日 星期三 15:05:01 CST(不成功)
2020年 04月 08日 星期三 15:10:01 CST(不成功)
2020年 04月 08日 星期三 15:15:01 CST(不成功)
2020年 04月 08日 星期三 15:20:01 CST(不成功)
2020年 04月 08日 星期三 15:25:01 CST(不成功)
2020年 04月 08日 星期三 15:30:01 CST(不成功)
2020年 04月 08日 星期三 15:35:01 CST(不成功)
2020年 04月 08日 星期三 15:40:01 CST
nginx restart success