日期:2014-05-16  浏览次数:20808 次

linux 定时任务检查服务器是否正常
通过curl命令判断url返回状态,以此来确定服务是否正常:
#!/bin/bash
STATE=`curl --head lym6520.iteye.com | awk 'NR==1' | awk '{print $2}'`;
if [ "$STATE" -eq "502" ] ;then
echo "echo "报警" "http error 502" ${date+"%y-%m-%d %H:%M:%S"}";
java -jar /test/m-tools-sendMail.jar lym6520@qq.com lym6520.iteye.com 502
elif [ "$STATE" -ne "502" ] && [ "$STATE" -eq "200" ] && [ "$STATE" -eq "302" ]  ;then 
echo "报警" "Web Server Stop Working" ${date+"%y-%m-%d %H:%M:%S"}
java -jar /test/m-tools-sendMail.jar lym6520@qq.com lym6520.iteye.com 服务器挂了
fi


通过调用java方法来发送邮件or短信提醒(加*号为隐私数据)
这里给出发送邮件demo:
package com.m;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

import java.util.Date;

/**
 * Hello world!
 *
 */
public class App  {
    private static final String DEFAULT_SMTP = "smtp.qq.com";//默认邮箱服务器SMTP地址
    private static final String DEFAULT_FROM = "******@qq.com"; //发送邮箱
    private static final String DEFAULT_USERID = "******@qq.com"; //用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
    private static final String DEFAULT_PASSWORD = "******"; //用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
    private static final String DEFAULT_CHARSET = "utf-8";

    public static void main( String[] args ){
        String[] addToArr =  args[0].split(",");
        String title =  args[1];
        String htmlMsg = args[2];
        int len = args.length;
        try {
            // 不要使用SimpleEmail,会出现乱码问题
            HtmlEmail email = new HtmlEmail();
            // 这里是发送服务器的名字
            email.setHostName(len >=8 ? args[3] :DEFAULT_SMTP);
            // 编码集的设置
            email.setCharset(len >=8 ? args[4] :DEFAULT_CHARSET);
            // 收件人的邮箱
            for (String addTo : addToArr) {
                email.addTo(addTo);
            }

            // 发送人的邮箱
            email.setFrom(len >=8 ? args[5] :DEFAULT_FROM);
            // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
            email.setAuthentication(len >=8 ? args[6] :DEFAULT_USERID,
                    len >=8 ? args[7] :DEFAULT_PASSWORD);
            email.setSubject(title);
            // 要发送的信息
            email.setHtmlMsg(htmlMsg);
            email.setSentDate(new Date());
            // 发送
            email.send();
        } catch (EmailException e) {

        }

    }
}



方式一:使用程序默认设置好的邮箱发送:
java -jar /test/m-tools-sendMail.jar [收件人邮箱] [标题] [内容]

方式二:指定发送账号信息
java -jar /test/m-tools-sendMail.jar [收件人邮箱] [标题] [内容] [默认邮箱服务器SMTP地址] [编码格式] [发送邮箱] [发送账号] [发送密码]


附件jar包可直接运行,jkd1.6下编译(有邮箱账号信息哦,不许耍赖偷了丫)


通过crontab命令来定时扫描服务器是可正常访问
通过以下命令加入定时任务信息
crontab -u root -e

写入如下内容(即每5分钟执行一次):
*/5 * * * * /test/server_status_check.sh


可以使用命令 crontab -l 来查看任务信息

最后重启下定时任务,让命令生效
/etc/init.d/crond restart