Envie um email sobre o estado da conclusão do trabalho cron

0

Eu tenho alguns scripts que fazem coisas comuns, como fazer backup de banco de dados MySql, gz, tar alguns arquivos e colocá-los em FTP ou sincronizar com algum outro sistema de backup / espelho. Alguns scripts estão sendo executados com bastante frequência (como duas vezes / três vezes por hora). Estou enviando e-mail com saída de log anexada a partir de comandos após a conclusão do trabalho. É bastante e-mail para acompanhar.

Eu quero enviar e-mail apenas quando o script não conseguir fazer alguma coisa, ou seja, quando algum comando no script falhar. Como posso conseguir isso?

    
por TheVillageIdiot 29.06.2011 / 21:33

2 respostas

1

Verifique o valor de retorno do comando e prossiga de acordo. Normalmente, todos os comandos do Linux retornam 0 em sucesso e algum outro número (especificando o motivo) na falha .

Atualização:
Esqueci de mencionar que o status do último comando é salvo na variável " $? ". Obrigado @ bbaja42

    
por 29.06.2011 / 21:42
0

aqui está um exemplo de script que escrevi para o meu trabalho que está sendo usado diariamente

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

ele só enviará um e-mail para você depois que você receber algum tipo de erro, ele não será enviado se o trabalho for executado corretamente. Este script de shell reside em / usr / local / uftwf / mysql e é aí que os backups vão bem. Modifique este script para arquivos FTP / rsync em seu local remoto.

    
por 29.06.2011 / 21:51