Parar o cron enviando mensagens para script de backup?

12

Eu configurei um script de backup para fazer backup dos dados mundiais no meu servidor Minecraft por hora usando o cron, mas como os mundos eram constantemente editados pelos jogadores, o tar me dizia que os arquivos mudavam enquanto eram lidos. Eu adicionei --ignore-command-error ao tar no script e isso suprime qualquer erro quando eu o executo manualmente, no entanto o cron ainda envia uma mensagem dizendo que os arquivos foram alterados durante a leitura, e acaba inundando o meu e-mail porque é correr uma vez por hora. Alguém sabe como consertar isso? Este é o script:

filename=$(date +%Y-%m-%d)
cd /home/minecraft/Server/
for world in survival survival_nether survival_the_end creative superflat
do
if [ ! -d "/home/minecraft/backups/$world" ]; then
mkdir /home/minecraft/backups/$world
fi
find /home/minecraft/backups/$world -mtime +1 -delete
tar --ignore-command-error -c $world/ | nice -n 10 pigz -9 > /home/minecraft/backups/$world/$filename.tar.gz
done
    
por Carter 25.07.2013 / 02:07

4 respostas

16

O Cron tentará enviar um email com qualquer saída que possa ter ocorrido quando o comando foi executado. Da página de manual do cron:

When executing commands, any output is mailed to the owner of the crontab (or to the user specified in the MAILTO environment variable in the crontab, if such exists). Any job output can also be sent to syslog by using the -s option.

Então, para desativá-lo para uma entrada crontab específica, apenas capture todos os comandos de saída e direcione-o para um arquivo ou para /dev/null .

30 * * * * notBraiamsBackup.sh >/dev/null 2>&1
    
por 25.07.2013 / 02:57
9

Em vez de canalizar tudo para /dev/null (o que pode deixar você sem saber o que aconteceu se algo der errado), você pode canalizar seus scripts para arquivos de log como este:

30 * * * * backup.sh > ~/logs/backup.log

E para não receber e-mails, basta definir a variável MAILTO como uma string vazia no início do seu arquivo crontab:

MAILTO=""
    
por 07.08.2015 / 04:16
4

Se você não quiser e-mails para uma tarefa específica do cron, basta adicionar >/dev/null 2>&1 no final da linha:

30 * * * * backup.sh >/dev/null 2>&1
    
por 25.07.2013 / 02:31
0

Você deve adicionar o seguinte ao seu comando gnu tar : - warning = no-file-changed

Isso suprime todas as mensagens "% s: arquivo alterado à medida que as lemos ". E usando essa solução (e não redirecionando tudo para / dev / null), você ainda poderá receber mensagens de erro quando as coisas realmente derem errado.

Com o sinalizador - warning você pode ativar e desativar muitas mensagens diferentes que o tar imprime. Aqui está a parte relevante do manual com todas as palavras-chave que você pode usar: link .

Observação: adicionando " no - " na frente de uma palavra-chave, a mensagem será suprimida.

    
por 16.06.2015 / 22:20