У меня есть несколько сценариев, которые выполняют обычные функции, такие как резервное копирование базы данных MySql, gz, tar некоторых файлов и помещают их на FTP или синхронизируют с какой-либо другой системой резервного копирования / зеркалирования. Некоторые сценарии выполняются довольно часто (например, дважды / трижды в час). Я отправляю письмо с прикрепленным выводом журнала из команд после завершения работы. Это довольно много писем для отслеживания.

Я хочу отправлять электронную почту только тогда, когда скрипт не может что-то сделать, то есть когда какая-то команда в скрипте дает сбой. Как я могу сделать это?

2 ответа2

1

Проверьте возвращаемое значение команды и действуйте соответствующим образом. Обычно все команды Linux возвращают 0 в случае успеха и некоторые другие числа (с указанием причины) в случае неудачи.

Обновить:
Забыл упомянуть, что статус последней команды сохраняется в переменной « $?». Спасибо @ bbaja42

0

Вот пример сценария, который я написал для своей работы, который используется ежедневно

[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 ~]$ 

он только отправит вам электронное письмо, как только вы получите какую-то ошибку, он не отправит вам письмо, если задание выполнено нормально. Этот сценарий оболочки находится в /usr /local /uftwf /mysql, и там также создаются резервные копии. Измените этот сценарий на файлы FTP /rsync для вашего удаленного расположения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .