¿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.

Scott Szretter
fuente

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í.

Richard Holloway
fuente
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.

user12345
fuente
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
KennyCason
fuente
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
Andrew Meyer
fuente
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
una respuesta
fuente
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.

Tristan Maat
fuente
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.

SDsolar
fuente
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.
Harlem Ardilla
fuente
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

Himanshu
fuente
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 .

cero
fuente