Finalmente, configurei um agendamento de backup realista dos meus dados por meio de um script de shell, que são tratados pelo cron em intervalos apertados. Infelizmente, continuo recebendo e-mails vazios toda vez que o CRON é executado e não apenas quando as coisas dão errado.
É possível fazer apenas o CRON enviar e-mails quando algo der errado, ou seja. my TAR
não executa como pretendido?
Veja como meu crontab está configurado para o momento;
0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com
Muito obrigado!
/bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)
?Usar script de wrapper crônico parece uma boa idéia; Para usá-lo, você não precisa alterar seus scripts.
Ao invés de:
Faz:
Basta colocar; ele funcionará silenciosamente se tudo funcionar sem problemas (status de saída 0), mas será reportado detalhadamente, se não, e permitirá que o cron lide com os relatórios de email.
Mais informações em https://habilis.net/cronic/ .
fonte
chronic
domoreutils
pacote: joeyh.name/code/moreutilsVocê está instruindo especificamente
cron
para sempre enviar e-mail, mesmo quando/bin/backup.sh
(a propósito, ele deve/usr/local/bin
aparecer) for bem-sucedido. Apenas omita a| mail -s "Backup status" [email protected]
parte e o email será enviado somente quando houver saída. Provavelmente (dependendo do seucron
), você pode definir explicitamente o endereço de e-mail como e-mail como uma atribuição no arquivo crontab.Para detalhes, consulte
fonte
Você deve direcionar o
stderr
anmd e não ambosstdout
estderr
.1> /dev/null
Não use2>&1
e deve ficar bem. Além disso, pode ser necessário relatar o erro corretamente no seu script de backup.fonte
Aqui está outra variação que utilizei com sucesso por muitos anos - capture a saída e a imprima apenas por erro , acionando um email. Isso não requer arquivos temporários e preserva toda a saída . A parte importante é a
2>&1
que redireciona STDERR para STDOUT.Envie a saída inteira via configuração padrão do cron mailer:
O mesmo, mas com um endereço e assunto específicos:
(o endereço também pode ser alterado definindo MAILTO = xxxx para todo o arquivo crontab)
Você pode até executar várias ações com erro e adicionar ao email:
Isso funcionará para comandos simples. Se você estiver lidando com pipes complexos (
find / -type f | grep -v bla | tar something-or-other
), é melhor mover o comando para um script e executar o script usando a abordagem mencionada acima. O motivo é que, se alguma parte do tubo for enviada para STDERR, você ainda receberá e-mails.fonte