Como configurar um crontab para executar em um horário específico
Pergunta
Como posso configurar meu crontab para executar o script X às 23h59 todos os dias sem me enviar um e-mail ou criar logs?
No momento meu crontab se parece com isto
@daily /path/to/script.sh
Solução
Ao fazer crontab -e, tente isto:
59 23 * * * /usr/sbin/myscript > /dev/null
Que significa:Aos 59 minutos e 23 horas todos os dias (*) todos os meses, todos os dias da semana, execute myscript.
Ver homem crontab para mais algumas informações e exemplos.
Outras dicas
Acompanhando resposta de svrist, dependendo do seu shell, o 2>&1 deve ir depois > /dev/null ou você ainda verá a saída de stderr.
O seguinte irá silenciar stdout e stderr:
59 23 * * * /usr/sbin/myscript > /dev/null 2>&1
O seguinte silencia o stdout, mas o stderr ainda aparecerá (via stdout):
59 23 * * * /usr/sbin/myscript 2>&1 > /dev/null
O capítulo do Advanced Bash Scripting Guide sobre redirecionamento de IO é uma boa referência - pesquise 2>&1 para ver alguns exemplos.
Com a resposta acima, você receberá um e-mail com qualquer texto escrito para stderr.Algumas pessoas também redirecionam isso e garantem que o script grave um log.
... 2>&1 ....