Cómo configurar un crontab para que se ejecute en un momento específico
Pregunta
¿Cómo puedo configurar mi crontab para ejecutar el script X a las 11:59 p.m. todos los días sin enviarme un correo electrónico ni crear ningún registro?
En este momento mi crontab se parece a esto
@daily /path/to/script.sh
Solución
Cuando hagas crontab -e, prueba esto:
59 23 * * * /usr/sbin/myscript > /dev/null
Eso significa:A los 59 minutos y 23 horas todos los días (*) de cada mes, todos los días de la semana, ejecute myscript.
Ver hombre crontab para obtener más información y ejemplos.
Otros consejos
Seguimiento de la respuesta de svrist, dependiendo de tu caparazón, el 2>&1 debería ir después > /dev/null o seguirás viendo el resultado de stderr.
Lo siguiente silenciará tanto stdout como stderr:
59 23 * * * /usr/sbin/myscript > /dev/null 2>&1
Lo siguiente silencia la salida estándar, pero stderr seguirá apareciendo (a través de la salida estándar):
59 23 * * * /usr/sbin/myscript 2>&1 > /dev/null
El capítulo de la Guía avanzada de secuencias de comandos Bash sobre redirección de IO es una buena referencia: busque 2>&1 para ver un par de ejemplos.
Con la respuesta anterior, recibirá un correo electrónico con cualquier texto escrito en stderr.Algunas personas también redirigen eso y se aseguran de que el script escriba un registro.
... 2>&1 ....