发送有关 cron 作业完成状态的电子邮件

发送有关 cron 作业完成状态的电子邮件

我有一些脚本可以执行一些常见操作,例如备份 MySql 数据库、gz、tar 一些文件并将它们放在 FTP 上或与其他备份/镜像系统同步。有些脚本运行得相当频繁(例如每小时两次/三次)。我在完成作业后发送电子邮件,其中附有命令的日志输出。要跟踪的电子邮件相当多。

我希望仅当脚本执行某些操作失败时(即脚本中的某些命令失败时)才发送电子邮件。我该如何实现这一点?

答案1

检查命令的返回值并继续执行。通常所有Linux 命令成功时返回 0,失败时返回其他数字(指定原因)

更新:
忘记提到最后一条命令的状态保存在变量“ $?”中。谢谢@bbaja42

答案2

这是我为工作写的脚本示例,每天都在使用

[alexus@wcmisdlin02 ~]$ sudo cat /usr/local/uftwf/mysql/_mysql.sh
#!/bin/sh
# $Id: _mysql.sh,v 1.2 2011/05/31 16:02:56 alexus Exp $

if [ -d /var/lib/mysql/ ]; then
    cd /var/lib/mysql/
    for i in `ls`; do
            /usr/bin/mysqldump \
                --user=root \
                $i > /usr/local/uftwf/mysql/$i.sql
            /bin/gzip \
                --force \
                --quiet \
                /usr/local/uftwf/mysql/$i.sql
    done
    /usr/bin/mysqladmin \
        --user=root \
        flush-logs
    /usr/bin/mysql \
        --user=root \
        --execute='PURGE BINARY LOGS BEFORE subdate(curdate(), INTERVAL 1 DAY);'
fi
[alexus@wcmisdlin02 ~]$ 


[alexus@wcmisdlin02 ~]$ sudo crontab -l -u mysql
@daily      /usr/local/uftwf/mysql/_mysql.sh
[alexus@wcmisdlin02 ~]$ 

只有当你遇到某种错误时它才会给你发送电子邮件,不是如果作业运行正常,则发送邮件。此 shell 脚本位于 /usr/local/uftwf/mysql 中,备份也位于此处。修改此脚本以将文件 FTP/rsync 传输到您的远程位置。

相关内容