Linux下一个智能重启Apache服务器的脚本分享

说明下:我的主机为 Centos 系统,各步操作的说明都写在了注释里面,方便阅读。

vi apachemonitor.sh

#!/bin/bash

URL=”http://127.0.0.1/”
curlit()
{
curl –connect-timeout 15 –max-time 20 –head –silent “$URL” | grep '200′
# 上面的15是连接超时时间,若访问localhost的HTTP服务超过15s仍然没有正确响应200头代码,则判断为无法访问。
}
doit()
{
if ! curlit; then
# 如果localhost的apache服务没有正常返回200头,即出现异常。执行下述命令:
sleep 20
top -n 1 -b >> /var/log/apachemonitor.log
# 上面将top命令内容写入日至文件备查
/usr/bin/killall -9 apache2 && /usr/bin/killall -9 php5-cgi && /usr/bin/killall -9 httpd

&& /usr/bin/killall -9 http && /usr/bin/killall -9 apache

&& /usr/bin/killall -9 php-cgi > /dev/null
# 兼容起见,杀死了各种apache的进程。可以根据自己apache服务的特点修改
sleep 2
/etc/init.d/apache2 start > /dev/null
/etc/init.d/httpd start > /dev/null
# 兼容起见,执行了两种apache重启命令,可根据需要自己修改。
echo $(date) “Apache Restart” >> /var/log/apachemonitor.log
# 写入日志
sleep 30
# 重启完成后等待三十秒,然后再次尝试一次
if ! curlit; then
# 如果仍然无法访问,则:
echo $(date) “Failed! Now Reboot Computer!” >> /var/log/apachemonitor.log
# 写入apache依然重启失效的日志
reboot
# 重启机器呗。实际上重启整个服务器是一种非常不得已的做法。本人并不建议。大家根据需要自己修改,比如短信、邮件报警什么的。
fi
sleep 180
fi
}
sleep 300
# 运行脚本后5分钟后才开始正式工作(防止重启服务器后由于apache还没开始启动造

成误判)
while true; do
# 主循环体
doit > /dev/null
sleep 10
done

然后执行: chmod +x apachemonitor.sh

添加开机启动项:
vi /etc/rc.d/rc.local

我的rc.local脚本内容为:

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/root/lampmonitor.sh
(0)

相关推荐

  • Linux下服务器重启的脚本命令

    Linux关闭和重启系统一般使用相同的命令可以实现. 在Linux系统下常用在关机/重启命令有shutdown.halt.reboot和init,但每个命令的内部工作过程是不同的. 1.shutdown命令 Shutdown命令可以安全地关闭系统,有些用户会使用直接断电源的方式来关闭计算机,这是十分危险的. Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,在有的系统中甚至会损坏硬件设备. 如果在系统关机前使用shutdown命令

  • win2003或linux服务器一般多久重启一次

    win2003 server服务器多久重启一次 得根据服务器的负载量来确定,数据量大的话,每次启动时间间隔就需要短些,反之就可以长一些.如果机器维护的比较好,启动时间间隔也可以延长些,只要客户访问速度不慢就好. 在服务器没有问题的情况下: Windows 2003系统的内存管理已经改进的很大了 一般半个月~两个月重新启动一次就可以了. Linux 需要重新启动的时间间隔就可以比较长了.一般3个月到5个月. 这些都得根据你的实际使用情况来看,如果客户访问速度慢了,或者服务器出问题了.就需要重新启动

  • php控制linux服务器常用功能 关机 重启 开新站点等

    php 里面有个 system 方法, 可以调用系统命令. 先建立一个脚本(比喻 /root/reboot_server.sh ),重启用的. 复制代码 代码如下: #!/bin/bash reboot 再给他赋予权限 4755 chown root:root /root/reboot_server.sh chmod 4755 /root/reboot_server.sh chmod 4777 /sbin/reboot 再在 php 里, 想办法做如下调用 复制代码 代码如下: <?php sy

  • Linux下一个智能重启Apache服务器的脚本分享

    说明下:我的主机为 Centos 系统,各步操作的说明都写在了注释里面,方便阅读. vi apachemonitor.sh #!/bin/bash URL="http://127.0.0.1/" curlit() { curl –connect-timeout 15 –max-time 20 –head –silent "$URL" | grep '200′ # 上面的15是连接超时时间,若访问localhost的HTTP服务超过15s仍然没有正确响应200头代码,

  • linux系统使用python监控apache服务器进程脚本分享

    crtrl.py监控Apache服务器进程的Python 脚本 复制代码 代码如下: !/usr/bin/env Python import os, sys, time while True: time.sleep(4) try: ret = os.popen('ps -C apache -o pid,cmd').readlines() if len(ret) < 2: print "apache 进程异常退出, 4 秒后重新启动" time.sleep(3) os.system

  • linux下安装配置svn独立服务器的步骤分享

    file:/// 直接版本库访问(本地磁盘). http:// 通过配置Subversion的Apache服务器的WebDAV协议. https:// 与http://相似,但是包括SSL加密. svn:// 通过svnserve服务自定义的协议. svn+ssh:// 与svn://相似,但通过SSH封装 svn存储版本数据也有2种方式:BDB和FSFS.因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点.1. svn服务器安装操作系统: Redhat Linux A

  • Linux下搭建简易的HTTP服务器完成图片显示

    目录 1. 前言 2. HTTP协议介绍 3. HTTP的消息结构 4. HTTP交互流程 5. 案例代码: 搭建HTTP服务器 6. 最终运行的效果 1. 前言 作为Linux下socket(TCP)网络编程的练习,使用C语言代码搭建一个简单的HTTP服务器,完成与浏览器之间的交互,最终在浏览器上显示一张图片. 2. HTTP协议介绍 HTTP协议本身是基于TCP通信协议来传递数据(HTML 文件, 图片文件-也叫超文本传输协议),HTTP协议必须工作在客户端-服务端架构上(本身底层就是TCP

  • Linux下实现SNMP一键安装的Shell脚本

    Net-SNMP是一个免费的.开放源码的SNMP实现,以前称为UCD-SNMP.SNMP 很多都用其安装之后,作为监控宝和阿里云的系统信息监控使用.下面就来分享linux下实现SNMP一键安装的shell脚本: #!/usr/bin/env bash export LC_ALL=C if [ "$(id -u)" != "0" ] then echo "This script. must be run as root" 1>&2 e

  • 智能监测自动重启Apache服务器的Shell脚本

    由于需要监控某些要求高可用性的Apache服务器,除了专业的监控报警设备,低成本下在Apache服务器上写一个自动监测Apache状态的脚本是个不错的主意.在网上搜索了许多类似的脚本,但由于局限性较大,也都存在一些不完善的地方,所以自己写了一个. 脚本功能与特点 1.能够每隔一段时间监测Apache服务器的可用性(由于本脚本直接模拟了客户端的访问,因此这里的"可用性"是指切切实实的正常可访问) 2.在出现无法访问的情况下,能够自动重启Apache服务(强行重启) 3.在重启后仍然无法正

  • windows下实现定时重启Apache与MySQL方法

    采用at命令添加计划任务.有关使用语法可以到window->"开始"->运行"cmd"->执行命令"at /",这样界面中就会显示at命令的语法.下面我们讲解下如何让服务器定时启动apache与mysql: 1.在c:盘根目录新建一个autostartserver.bat文件,然后右键编辑,将文件内容设为如下后保存: 复制代码 代码如下: @ECHO OFF net stop apache2 net start apache2

  • python分析apache访问日志脚本分享

    #!/usr/bin/env python # coding=utf-8 #------------------------------------------------------ # Name: Apache 日志分析脚本 # Purpose: 此脚本只用来分析Apache的访问日志 # Version: 2.0 # Author: LEO # Created: 2013-4-26 # Modified: 2013-5-4 # Copyright: (c) LEO 2013 #------

  • Linux下从零开始安装配置Nginx服务器+PHP开发环境

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新. 因此我打算用其替代Apache应用于Linux服务器上.但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞.那么我们必须使用FastCGI方式来执行PHP程序. 下面是我成功地配置Ngi

  • linux下用Proftpd搭建ftp服务器及配置方法

    首先proftpd是一个开源软件,其官方地址是http://www.proftpd.org,目前最高版本是:1.3.1(非稳定版),稳定的版本是1.3.0,下载文件为proftpd-1.3.0a.tar.gz 我下载的是1.3.0,上传到服务器上后按照常规的方法安装即可. tar -zxvf proftpd-1.3.0a.tar.gz cd proftpd* ./configure --prefix=/usr/local/proftpd make make install 安装完成!接下来是配置

随机推荐