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


755

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

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

Respuestas:


899

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

/var/log/syslog

Puede ver solo trabajos cron en ese archivo de registro ejecutando

 grep CRON /var/log/syslog

Si no ha reconfigurado nada, las entradas estarán allí.


46
Si no hay un MTA instalado, cron simplemente descarta la salida del trabajo.
Barry Kelly el

11
El registro cron puede estar en otro archivo en el /var/log/directorio. Verifique cron.log o equivalente.
Navigatron

44
Esto no me da salida del trabajo. solo da un mensaje genérico de que se procesó el cron.
chovy

2
en AWS era / var / log / cron
tsukimi

55
@shadi también podrías grep -i CRONbuscar entre mayúsculas y minúsculas
nafg

236

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.

Abre el archivo

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

Encuentra la línea que comienza con:

#cron.*

descomenta esa línea, guarda el archivo y reinicia rsyslog:

sudo service rsyslog restart

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

/var/log/cron.log

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

Tenga en cuenta que en cron.log verá entradas para cuando cron ejecutó scripts en /etc/cron.hourly, cron.daily, etc., por ejemplo, algo como:

Apr 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 se está ejecutando un crontab y no tiene que buscarlo en cron.log o syslog, cree un crontab que redirija la salida a un archivo de registro de su elección, algo como:

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

Esto redirigirá todos los resultados y errores estándar que puede generar el script que se ejecuta en el archivo de registro especificado.


1
Con mi opinión, esta respuesta es mejor en el futuro. Entonces su archivo syslog es más claro.
shgnInc

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

En nuestro CentOS 6, cron. * Definido en /etc/rsyslog.conf, mientras que estoy vacío en la carpeta rsyslog.d.
Scott Chu

¿Qué significa 2>&1stand?
John Joe

2
@JohnJoe 2> & 1 se utiliza para reenviar stderr a stdout, de esta manera también obtendrá stderr para registrar el archivo.
Sampo Sarrala

79

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

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

10
Bueno, es probable que desee usar -F, que seguirá el archivo a través de los cambios de nombre, de modo que cuando se trunca / mueve a, por ejemplo /var/log/syslog.1.gz, todavía está siguiendo el /var/log/syslogarchivo actual . Según los documentos del hombre, esto es lo mismo que corrertail xxxx -f --retry
Momer

37

También puede dirigir la salida de los cronjobs individuales a sus propios registros para una mejor legibilidad, solo tendrá que agregar la salida de fecha en alguna parte.

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

44
verdadero, pero si esta línea no se ejecuta debido a un error de sintaxis, no se escribirá nada en el registro de salida especificado.
Raptor

11
Puede resolver esto agregando 2> & 1 después de que se especifique el archivo de registro. También es una buena práctica probar sus cronjobs antes de agregarlos al crontab, y luego estar presente para la primera ejecución programada para asegurarse de que el crontab esté formateado correctamente.
Andrew Meyer

10

Si ha systemdinstalado en su sistema, puede mostrar el registro de trabajos cron utilizando el journalctlcomando

Por ejemplo, en mi Ubuntu 17.10:

journalctl -u cron.service

9

Esta es una pregunta muy antigua, pero ninguna de estas respuestas parece satisfactoria.

Primero haga que su trabajo cron se ejecute cada minuto, luego ejecute cron como no demonio (temporalmente, simplemente elimine cualquier crond que ya haya comenzado) con el registro de prueba:

crond -nx test

Y vea el registro de la ejecución de su programa que fluye a través de su terminal.


77
No funciona el 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.

8

Está /var/log/syslogpor defecto.

Pero se puede configurar para crear un cron.log separado, que es más útil.

Estas preguntas y respuestas describen el proceso:

16.04: ¿Cómo hago que cron cree cron.log y lo monitoree en tiempo real?

También en esta respuesta están las instrucciones para crear un wcroncomando que lo muestre en tiempo casi real. Además, se vincula a otra respuesta,

¿Cómo cambiar el nivel de registro cron?

que muestra cómo cambiar el nivel de registro para incluir más que solo el inicio de los trabajos; el nivel 15 también mostrará errores y la hora de finalización.


5

Fedoar 29 y RHEL 7

journalctl -t CROND

Del journalctlmanual:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.

3

Puede redirigir la salida de cron a un archivo tmp

Tales como: 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

Error y salida normal, ambos serán redirigidos al mismo archivo


2

Como se mencionó anteriormente, los trabajos cron se registran en /var/log/syslog

Puede canalizar el syslog para grep y filtrar los registros CRON, de esta manera

less /var/log/syslog | grep CRON 

Puede buscar a través de sus registros crontab, así

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

Puede buscar a través de sus registros de historial crontab almacenados en archivos gz, como este

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Siempre se considera bueno tener un mecanismo de registro, puede configurar rápidamente ELK para sus servidores, también puede experimentar con logz .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.