用SHELL脚本精准清除Squid缓存[更新版]

本文出自 “抚琴煮酒” 博客,请务必保留此出处http://andrewyu.blog.51cto.com/1604432/838275
此脚本是在张宴的缓存清理脚本上做了修改的,主要是增加if选项,并根据$1参数类型来选择性的列出缓存文件所在地址(因为$1并不固定,有时是特定的jpg类型,有时是域名)目前在自己的Squid缓存服务器上应用,感觉采集缓存网址基本上没什么误差了,欢迎大家试用,争取将此脚本做到更加完美(此脚本在Centos5.4 x86_64,Squid2.7下通过)脚本内容如下:

#!/bin/sh 
squidcache_path="/usr/local/squid/var/cache" 
squidclient_path="/usr/local/squid/bin/squidclient" 
#grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F 'http:' '{print "http:"$2;}' |  awk -F\' '{print $1}' > cache.txt 
 
if [[ "$1" == "swf" || "$1" == "png" || "$1" == "jpg" || "$1" == "ico" || "$1" == "gif" || "$1" == "css" || "$1" == "js" ||  "$1" == "html" || "$1" == "shtml" || "$1" == "htm"   ]]; then 
 grep -a -r .$1 $squidcache_path/* | strings | grep "http:" | awk -F 'http:' '{print "http:"$2;}' |  awk -F\' '{print $1}' | grep "$1$"  | uniq > cache.txt 
 else 
 grep -a -r $1  $squidcache_path/* | strings | grep "http:" | awk -F 'http:' '{print "http:"$2;}' |  awk -F\' '{print $1}' | uniq > cache.txt 
fi 
 
cat cache.txt | while read LINE 
do 
  $squidclient_path -p 80 -m PURGE $LINE 
done 

windows 2003下mysql密码忘记解决办法

如果你的服务器也是windows xp/2000/2003/nt都可以使用下面这个方法来找回丢失mysql超级管理员root密码.
系统:windows 2003 Enterprise Edition
软件:mysql 5.0.22
1.停止mysql服务
2fd968a4af34eb4eb96bb7a3305954412011121915114964945041

2.在启动mysql安全模式
mysqld –skip-grant-tables
167dd5215ff7a28a1427ca664a87cc4220111219151150814921201
这里我要说句这样的命令是因为我的mysql版本是5.0的,如果是mysql 5.1的,就要输入下面的命令:
mysqld-nt –skip-grant-tables

mysqld.exe –skip-grant-tables
mysql 4.0的版本怎么进入安全模式我就不知道了,有知道的朋友请告诉我下吧.

3.重新打开一个cmd命令行窗口,输入mysql -u root -p,使用空密码的方式登录mysql(不用输入密码,直接回车)
083d6a91a059eb18ebe23a1b646ce099201112191511501603758567

4.修改root密码
mysql> update mysql.user set password=PASSWORD(“新密码”) where User=”root”;
8853ad14c54ed7d409e16e1944533227201112152055221511754455
5.重载权限
mysql> flush privileges;
46b6f15d8accdddc159593d44644213a20111219151151129425662
6.退出之后,在任务管理器里结束掉mysqld.exe(5.1的结束mysqld-nt.exe)这个进程,重新启动mysql即可!好了,重新输入我们刚才设置的密码就ok了!
3e7bbabe2620ed243a870b87c0a0170a201112191511481131543353

最后记录下cd命令的用法

cd /d d:

/d参数是切换到其他的盘符

PHP计划任务:如何使用Linux的Crontab执行PHP脚本

我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现。但这两种方法都不太可靠,不稳定。我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务。
下面介绍Crontab的两种方法。

一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:

# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php
/usr/local/bin/php为PHP程序的路径。

二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。

00 * * * * lynx -dump http://www.centos.bz/myscript.php
下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。

*/5 * * * * /usr/bin/curl -o temp.txt http://www.centos.bz/myscript.php
下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.centos.bz/myscript.php

PHP监控服务器运维状况并短信告警

<?php
/**
 * 内网服务器运维状态监控,集成SMS通知功能。
 * SMS使用飞信机器人模块
 * 检测方式:Ping,端口
 * by:shadu###foxmail.com 2009-04-20
 */
 
/**
 * 自定义参数
 */
$fetionPath = "D:\\fetionrobot\\fetion.exe";//飞信机器人路径
$sender        = "13811111111";                //飞信发送者手机号
$receiver    = "13822222222";                //飞信发送者密码
$password    = "123456";                    //飞信接收者手机号
 
$PortCheckList =array(//端口检测需要提供的待检测主机IP、端口、协议
                array("IP"=>"192.168.254.11","port"=>"23","protocol"=>"tcp"),
                array("IP"=>"192.168.254.12","port"=>"23","protocol"=>"tcp"),
                array("IP"=>"192.168.254.13","port"=>"443","protocol"=>"tcp"),
                array("IP"=>"192.168.254.101","port"=>"3389","protocol"=>"tcp"),
                array("IP"=>"192.168.254.101","port"=>"1521","protocol"=>"tcp"),
                array("IP"=>"192.168.254.102","port"=>"3389","protocol"=>"tcp"),
                array("IP"=>"192.168.254.102","port"=>"8443","protocol"=>"tcp"),
                array("IP"=>"192.168.254.103","port"=>"2008","protocol"=>"tcp"),
                array("IP"=>"192.168.254.156","port"=>"3389","protocol"=>"tcp"),
                array("IP"=>"192.168.254.156","port"=>"514","protocol"=>"udp")
                //array("IP"=>"127.0.0.1","port"=>"9999","protocol"=>"tcp")
            ) ;
$PingCheckList    = array(//Ping检测需要提供的服务器IP
                        "192.168.254.11",
                        "192.168.254.12",
                        "192.168.254.13",
                        "192.168.254.101",
                        "192.168.254.102",
                        "192.168.254.103",
                        "192.168.254.156"
                        );
 
/**
 * 服务器端口检测:超时30秒,检测10次
 *
 * @param unknown_type $targetIP
 * @param unknown_type $targetPort
 * @param unknown_type $Protocol
 * @param unknown_type $echoChar
 * @param unknown_type $timeout
 * @param unknown_type $number
 * @return unknown
 */
function PortCheck($targetIP,$targetPort,$Protocol="tcp",$echoChar=NULL,$timeout=30,$number=4){
    $i     = 0;
    $j    = 0;
    while ($i++<$number) {
        $fp = @fsockopen("$Protocol://$targetIP",$targetPort, &$errno, &$errstr,$timeout); 
        if (!$fp) {
            $j++;
        }
        else{
            fclose($fp);
            return 1;
        }
    }
    //echo $j;
    if ($j > $number/2) {
        $str = "{$targetIP}端口{$targetPort}/{$Protocol}连接失败{$j}次!"."/".date_format(date_create('Asia/Shanghai'),'Y-m-d/H:i:s');
        SMS($str);
        return $j;
    }
 
}
 
/**
 * 服务器Ping状态检测,要求丢包率<60%
 *
 * @param unknown_type $targetIP
 * @param unknown_type $number
 */
function PingCheck($targetIP,$number=10){
    exec("ping  {$targetIP} -n {$number}",$result);
    $ping_result = '';
    foreach ($result as $value) {
        $ping_result .= $value;
    }
    if (preg_match('/\((\d+)% loss\),/',$ping_result,$matches)>0){
        $loss    =    $matches[1];
        if($loss > 60){//丢包率大于60%
            $str = "{$targetIP}当前丢包率:{$loss}%/".date_format(date_create('Asia/Shanghai'),'Y-m-d/H:i:s');
            SMS($str);
        }
    }
    return    "{$loss}%";
}
 
/**
 * 短信发送模块
 *
 * @param unknown_type $msg
 */
function SMS($msg){
    global $fetionPath;
    global $sender;
    global $receiver;
    global $password;
    $smsString = "\"$fetionPath\" --mobile=$sender --pwd=$password --to=$receiver --msg-gb=$msg";
    //echo $smsString;
    $result    = exec($smsString);
    return 0;
}
 
/**
 * 服务器状态检测函数
 *
 * @param unknown_type $PingCheckList
 * @param unknown_type $PortCheckList
 * @return unknown
 */
function CheckServerStatus($PingCheckList,$PortCheckList){
    foreach ($PingCheckList as $value) {
        echo "\n-----Ping检测{$value}:   ";
        echo PingCheck($value);
    }
    foreach ($PortCheckList as $server) {
        //var_dump($server);
        echo "\n-----端口检测".$server["IP"]."/".$server["port"]."/".$server["protocol"].":   ";
        echo PortCheck($server["IP"],$server["port"],$server["protocol"]);
    }
    return 0;
}
 
$i = 1;
while (true) {
    CheckServerStatus($PingCheckList,$PortCheckList);
    //echo $x = '"D:\\fetionrobot\\fetion.exe" --mobile=13811111111 --pwd=123456 --to=13822222222 --msg-gb=127.0.0.1端口9999/tcp连接失败10次!/2009-03-27 02:08:45';
    //$result    = exec($x,$result);
    //var_dump($result);
    echo "\n当前是第".$i++."轮检测|".date_format(date_create('Asia/Shanghai'),'Y-m-d H:i:s')."\n";
    sleep(1800);
}
 
?>

代码高亮插件wp-codebox使用方法(语法详解)

WP-CodeBox语法

<pre  lang=”LANGUAGE” line=”N” file=”download.txt” colla=”+”>

代码内容

</pre>

lang=”LANGUAGE”:LANGUAGE代表代码的语言,如ASP、PHP、Java等

file=”download.txt”:创建一个可下载的保存名称,这里的download.txt表示是下载文件的文件名(注:此文件由WP-CodeBox插件自动生成)。

line=”N”:开始行数。

colla=”+或者-”:” +“表示显示时展开代码,”-“表示显示时收缩代码。

wp-codebox使用方法:

在插入代码前,将wordpress 编辑器切换为“HTML编辑”模式,按上面语法插入代码即可!

 

WP-CodeBox插件示例代码

<pre lang=”php”>
ecs_header(“Location: ./ “);
exit;
</pre>  

mysql定时备份-过期删除旧文件

创建shell脚本
vi /mysql/backup/mysql_auto_backup.sh
####

#!/bin/bash
# 以下配置信息请自己修改
mysql_user="root" #MySQL备份用户
mysql_password="mima" #MySQL备份用户的密码
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8" #MySQL编码
backup_db_arr=("db1" "db2") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3")
backup_location=/mysql/backup  #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹
expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭
expire_days=30 #过期时间天数 默认为30天,此项只有在expire_backup_delete开启时有效

# 本行开始以下不需要修改
backup_time=`date +%Y%m%d%H%M`  #定义备份详细时间
backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间
backup_30ago=`date -d '30 days ago' +%Y-%m-%d` #30天之前的日期
backup_dir=$backup_location/$backup_Ymd  #备份文件夹全路径
welcome_msg="Welcome to use MySQL backup tools!" #欢迎语

# 判断MYSQL是否启动,mysql没有启动则备份退出
mysql_ps=`ps -ef |grep mysql |wc -l`
mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
        echo "ERROR:MySQL is not running! backup stop!"
        exit
else
        echo $welcome_msg
fi
 
# 连接到mysql数据库,无法连接则备份退出
mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password < $backup_dir/$dbname-$backup_time.sql.gz`
                        flag=`echo $?`
                        if [ $flag == "0" ];then
                                echo "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz"
                        else
                                echo "database $dbname backup fail!"
                        fi
 
                done
        else
                echo "ERROR:No database to backup! backup stop"
                exit
        fi
        # 如果开启了删除过期备份,则进行删除操作
        if [ "$expire_backup_delete" == "ON" -a  "$backup_location" != "" ];then
                `find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;`
                 echo "Expired backup data delete complete!"
        fi
        echo "All database backup success! Think you!"
        exit
fi

####
创建计划任务:
vi /etc/crontab
在最后一行添加
####
* 2 * * * root /mysql/backup/mysql_auto_backup.sh
####
每天晚上2点自动备份

实时查看linux网卡流量脚本

安装过程:

iftop 软件列表
http://pkgs.repoforge.org/iftop/
[root@centos wdlinux]# cat /etc/issue
CentOS release 5.6 (Final)
Kernel \r on an \m
查看版本号

[root@centos wdlinux]# uname -a
Linux centos 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
查看系统版本

yum install flex byacc libpcap ncurses ncurses-devel

yum install libpcap libpcap-devel -y
安装依赖软件包

地址:http://rpmfind.net/linux/rpm2html/search.php?query=iftop

系统为centos5版本为64位

wget ftp://rpmfind.net/linux/dag/redhat/el5/en/x86_64/dag/RPMS/iftop-1.0-0.pre3.el5.rf.x86_64.rpm
下载对应系统的对应软件包
rpm -ivh iftop-1.0-0.pre3.el5.rf.x86_64.rpm
安装软件

系统为centos6 版本为64位

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/iftop-1.0-0.pre3.el6.rf.x86_64.rpm
 
rpm -ivh iftop-1.0-0.pre3.el6.rf.x86_64.rpm

系统为centos7版本为64位

wget ftp://rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/iftop-1.0-0.pre3.el7.rf.x86_64.rpm
 
rpm -ivh iftop-1.0-0.pre3.el7.rf.x86_64.rpm

 

1、本脚本可自定义欲查看接口,精确到小数,并可根据流量大小灵活显示单位。
2、此脚本的采集间隔为1秒。
3、此脚本不需要额外再安装软件,可在急用情况下应付一下,比如临时想看一下是否有流量通过,大概为多少等。
4、一些流量查看软件由于计算的精确度不同,所以与此脚本显示的数值不可能一致,此脚本的显示结果与du meter对比过,相差很小。还有就是传输工具本身显示的传输速度并不准确。
用法为:
1、chmod +x ./traff.sh 将文件改成可执行脚本。
2、./traff.sh eth0即可开始监看接口eth0流量,按ctrl+c退出。

#!/bin/bash

while [ “1” ]

do

eth=$1

RXpre=$(cat /proc/net/dev | grep $eth | tr : ” ” | awk ‘{print $2}’)

TXpre=$(cat /proc/net/dev | grep $eth | tr : ” ” | awk ‘{print $10}’)

sleep 1

RXnext=$(cat /proc/net/dev | grep $eth | tr : ” ” | awk ‘{print $2}’)

TXnext=$(cat /proc/net/dev | grep $eth | tr : ” ” | awk ‘{print $10}’)

clear

echo -e “\t RX `date +%k:%M:%S` TX”

RX=$((${RXnext}-${RXpre}))

TX=$((${TXnext}-${TXpre}))

if [[ $RX -lt 1024 ]];then

RX=”${RX}B/s”

elif [[ $RX -gt 1048576 ]];then

RX=$(echo $RX | awk ‘{print $1/1048576 “MB/s”}’)

else

RX=$(echo $RX | awk ‘{print $1/1024 “KB/s”}’)

fi

if [[ $TX -lt 1024 ]];then

TX=”${TX}B/s”

elif [[ $TX -gt 1048576 ]];then

TX=$(echo $TX | awk ‘{print $1/1048576 “MB/s”}’)

else

TX=$(echo $TX | awk ‘{print $1/1024 “KB/s”}’)

fi

echo -e “$eth \t $RX $TX ”

done

#################################################################################

查看网络平均流量

下面的脚本可以很好的监控你的网络的平均流量,你可以提定时间,首先制定法
#!/bin/bash
echo -n “which nic?”
read eth
echo “the nic is “$eth
echo -n “how much seconds:”
read sec
echo “duration is “$sec” seconds, wait please…”
infirst=$(awk ‘/’$eth’/{print $1 }’ /proc/net/dev |sed ‘s/’$eth’://’)
outfirst=$(awk ‘/’$eth’/{print $10 }’ /proc/net/dev)
sumfirst=$(($infirst+$outfirst))
sleep $sec”s”
inend=$(awk ‘/’$eth’/{print $1 }’ /proc/net/dev |sed ‘s/’$eth’://’)
outend=$(awk ‘/’$eth’/{print $10 }’ /proc/net/dev)
sumend=$(($inend+$outend))
sum=$(($sumend-$sumfirst))
echo $sec” seconds total :”$sum”bytes”
aver=$(($sum/$sec))
echo “avrage :”$aver”bytes/sec”

##########################################################################

Linux流量监控的iftop工具

iftop是什么?

iftop是类似于top的实时流量监控工具。

官方网站:http://www.ex-parrot.com/~pdw/iftop/

安装iftop

安装方法1、编译安装

如果采用编译安装可以到iftop官网下载最新的源码包。

安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。

CentOS上安装所需依赖包:

yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel

Debian上安装所需依赖包:

apt-get install flex byacc libpcap0.8 libncurses5

下载iftop

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz

tar zxvf iftop-0.17.tar.gz

cd iftop-0.17

./configure

make && make install

安装方法2:(懒人办法,最简单)

直接省略上面的步骤

CentOS系统:

yum install flex byacc libpcap ncurses ncurses-devel

wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm

rpm -ivh iftop-0.17-1.el5.rf.i386.rpm

Debian系统 运行:apt-get install iftop

运行iftop

直接运行: iftop

效果如下图:

相关参数及说明

1、iftop界面相关说明

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

2、iftop相关参数

常用的参数

-i设定监测的网卡,如:# iftop -i eth1

-B 以bytes为单位显示流量(默认是bits),如:# iftop -B

-n使host信息默认直接都显示IP,如:# iftop -n

-N使端口信息默认直接都显示端口号,如: # iftop -N

-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0

-h(display this message),帮助,显示参数信息

-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;

-b使流量图形条默认就显示;

-f这个暂时还不太会用,过滤计算包用的;

-P使host信息及端口信息默认就都显示;

-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些操作命令(注意大小写)

按h切换是否显示帮助;

按n切换显示本机的IP或主机名;

按s切换是否显示本机的host信息;

按d切换是否显示远端目标主机的host信息;

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;

按N切换显示端口号或端口服务名称;

按S切换是否显示本机的端口信息;

按D切换是否显示远端目标主机的端口信息;

按p切换是否显示端口信息;

按P切换暂停/继续显示;

按b切换是否显示平均流量图形条;

按B切换计算2秒或10秒或40秒内的平均流量;

按T切换是否显示每个连接的总流量;

按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;

按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;

按j或按k可以向上或向下滚动屏幕显示的连接记录;

按1或2或3可以根据右侧显示的三列流量数据进行排序;

按<根据左边的本机名或IP排序;

按>根据远端目标主机的主机名或IP排序;

按o切换是否固定只显示当前的连接;

按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!

按q退出监控。

常见问题

1、make: yacc: Command not found
make: *** [grammar.c] Error 127

解决方法:apt-get install byacc / yum install byacc

2、configure: error: Curses! Foiled again!
(Can’t find a curses library supporting mvchgat.)
Consider installing ncurses.

解决方法:apt-get install libncurses5-dev / yum install ncurses-devel

#######################################################################################

Linux流量监控的nload工具

官网及下载 http://www.roland-riegel.de/nload/index.html
http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz

http://dl.wdlinux.cn:5180/soft/nload-0.7.2.tar.gz

安装
wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz
tar zxvf nload-0.7.2.tar.gz
cd nload-0.7.2
./configure;make;make install

使用
直接用nload回车即可,也可以指定网卡,如nload eth1
还可以指定是以K或M来显示流量,如nload -u M显示的流量是以MB为单位的

看看还有哪些参数或选项
[root@wdlinux ~]# nload -h

nload 默认分为上下两块:上半部分是:Incoming也就是进入网卡的流量,下半部分是:Outgoing,也就是从这块网卡出去的流量,每 部分都有当前流量(Curr),平均流量(Avg),最小流量(Min),最大流量(Max),总和流量(Ttl)这几个部分,看起来还是蛮直观的。
另外,你也可以自己定义流量数值显示的单位
#nload –help
就可以看到具体的相关参数了。

nginx下禁止站点或目录运行php脚本

为了安全起见,我们一般会对上传目录禁止运行php脚本
在apache下面我们可以通过:


php_flag engine off

的方式来来禁用目录下文件php执行权限。那么在nginx里面同样可以实现这种方法
这里简单就举个例子
location ^~ /attachments/
{
access_log off;
}
这样 attachments这个目录 就不会再去跳转给fastcgi去执行php了.这里利用了nginx下location指令的处理顺序优先级特点.
但上面的方法只能算一种技巧,一般不这样设置,正确的方法为:
location /upload/ {
location ~ .*\.(php)?$
{
deny all;
}
}

而对于多个目录的话,可以一起进行限定:
location ~* ^/(attachments|images)/.*\.(php|php5)$
{
deny all;
}

CentOS下shell脚本监控运行状态

curl -o /dev/null -s -w “%{http_code}” http://http://py.10isp.com/

1. 编写Shell脚本,保存到/opt/http_monitor
#!/bin/bash
#网站url地址
URL="http://www.xxx.com/"
#获取http响应代码
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
#echo $HTTP_CODE
#服务器能正常响应,应该返回200的代码
if [ $HTTP_CODE != '200' ];then
#重启服务
service httpd restart
fi

2. 增加到crontab,使用crontab -e命令添加新的任务:
Shell代码
#每分钟运行一次
*/1 * * * * /opt/http_monitor

3. 停掉服务,测试,cool!一分钟后自动启动了!可是中文乱码了,查了一下原来是没有加载系统变量,好办,在http_monitor中加入locale环境变量就可以了:
Shell代码
export LC_ALL=zh_CN.UTF-8

401.3 未被授权,所请求的资源被拒绝

视频摘要

视频演示站点出现401.3报错时,如何在服务器上排查这一问题。通过此视频,也可了解站点目录中如何控制目录的读、写、执行等权限。