980 votos

¿Dónde está el registro del cron / crontab?

Quiero verificar que mi trabajo cron se esté ejecutando y a qué hora. Creo que hay un registro para mis trabajos sudo crontab -e, ¿pero dónde?

Busqué en Google y encontré recomendaciones para mirar en /var/log (en el cual no veo nada con 'cron' en el nombre) y para editar el archivo /etc/syslog.conf el cual tampoco tengo.

0 votos

Ten en cuenta que en el contexto de crontab, el carácter % crea una nueva línea, por lo que su uso incorrecto (es decir, no escaparlo, por ejemplo en date +"%Y-%m-%d") puede prevenir un registro correcto (date +%Y-%m-%d >> /tmp/cron.log no funcionará). Además, esta respuesta puede ayudar.

1159voto

Brett Veenstra Puntos 715

En una instalación predeterminada, los trabajos cron se registrarán en

/var/log/syslog

Puedes ver solo los trabajos cron en ese archivo de registro ejecutando

grep CRON /var/log/syslog

Si no has reconfigurado nada, las entradas estarán ahí.

70 votos

Si no hay un MTA instalado, cron simplemente desecha la salida del trabajo.

15 votos

El registro cron puede estar en otro archivo en el directorio /var/log/. Busque cron.log o su equivalente.

0 votos

Utilice journalctl | grep cron en sistemas systemd

314voto

Rob Ottaway Puntos 457

Puede crear un archivo cron.log para contener solo las entradas CRON que aparecen en syslog. Tenga en cuenta que los trabajos CRON seguirán apareciendo en syslog si sigue las siguientes instrucciones.

Abra el archivo

/etc/rsyslog.d/50-default.conf

Encuentre la línea que comienza con:

#cron.*

descomente esa línea, guarde el archivo y reinicie rsyslog:

sudo service rsyslog restart

Ahora debería ver un archivo de registro de cron aquí:

/var/log/cron.log

La actividad de cron se registrará ahora en este archivo (además de syslog).

Tenga en cuenta que en cron.log verá entradas de cuándo cron ejecutó scripts en /etc/cron.hourly, cron.daily, etc. - por ejemplo:

Abr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Sin embargo, no verá más información sobre qué scripts se ejecutaron realmente dentro de /etc/cron.daily o /etc/cron.hourly, a menos que esos scripts dirijan la salida al cron.log (o tal vez a algún otro archivo de registro).

Si desea verificar si un crontab se está ejecutando y no tener que buscarlo en cron.log o syslog, cree un crontab que redirija la salida a un archivo de registro de su elección, algo así:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Esto redirigirá toda la salida estándar y los errores que pueda producir el script que se ejecute al archivo de registro especificado.

2 votos

Con mi opinión, esta respuesta es mejor en el futuro. Por lo tanto, tu archivo de syslog será más claro.

9 votos

Para excluir también el registro cron de syslog, puede cambiar la línea *.*;auth,authpriv.none -/var/log/syslog a *.*;auth,authpriv.none,cron.none -/var/log/syslog.

0 votos

En nuestro CentOS 6, cron.* está definido en /etc/rsyslog.conf, mientras que está vacío en la carpeta rsyslog.d.

112voto

Graham Powell Puntos 310

A veces puede ser útil monitorear continuamente, en ese caso:

tail -f /var/log/syslog | grep CRON

22 votos

Bueno, probablemente quieras usar -F, el cual seguirá el archivo a través de cambios de nombre, de modo que cuando se trunque/mueva, por ejemplo, a /var/log/syslog.1.gz, seguirás siguiendo el archivo actual /var/log/syslog. Según la documentación del man, esto es lo mismo que ejecutar tail xxxx -f --retry

62voto

Andrew Meyer Puntos 199

También puedes dirigir la salida de los cronjobs individuales a sus propios registros para una mejor legibilidad, solo necesitarás agregar la salida de la fecha en algún lugar.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

5 votos

Verdadero, pero si esta línea falla al ejecutarse debido a un error de sintaxis, no se escribirá nada en el registro de salida especificado.

17 votos

Puedes resolver esto agregando 2>&1 después de que se haya especificado el archivo de registro. También es una buena práctica probar tus cronjobs antes de agregarlos al crontab y luego estar presente en la primera ejecución programada para asegurarte de que el crontab esté correctamente formateado.

3 votos

Si el archivo daily-backup.log no existe, CRON lo crea automáticamente.

37voto

james young Puntos 1211

Si tienes systemd instalado en tu sistema, puedes mostrar el registro de trabajos cron utilizando el comando journalctl.

Por ejemplo, en mi Ubuntu 17.10:

journalctl -u cron.service

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X