trabajos cron: ¿cómo iniciar sesión?

Quiero saber cómo puedo ver exactamente qué están haciendo los trabajos cron en cada ejecución. ¿Dónde están ubicados los archivos de registro? ¿O puedo enviar la salida a mi correo electrónico? He configurado la dirección de correo electrónico para enviar el registro cuando se ejecuta la tarea cron, pero todavía no he recibido nada.

* * * * * myjob.sh >> /var/log/myjob.log 2>&1 

registrará todos los resultados del trabajo cron en /var/log/myjob.log

Puede usar el mail para enviar correos electrónicos. La mayoría de los sistemas enviarán salida de trabajo cron no controlada por correo electrónico a la raíz o al usuario correspondiente.

De forma predeterminada, cron registra en / var / log / syslog para que pueda ver las entradas relacionadas con cron al usar:

 grep CRON /var/log/syslog 

https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

Hay al menos tres tipos diferentes de registro:

  1. El registro ANTES de que se ejecute el progtwig, que solo registra SI el cronjob TRIED para ejecutar el comando. Esa se encuentra en / var / log / syslog, como ya se mencionó en @Matthew Lock.

  2. El registro de errores DESPUÉS de que el progtwig intentó ejecutarse, que se puede enviar a un correo electrónico o a un archivo, como se menciona en @Spliffster. Prefiero iniciar sesión en un archivo, porque con el correo electrónico ENTONCES tiene una NUEVA fuente de problemas, y está comprobando si el envío y la recepción del correo electrónico funcionan a la perfección. A veces lo es, a veces no lo es. Por ejemplo, en una máquina de escritorio común simple en la que no está interesado en configurar un smtp, a veces preferirá iniciar sesión en un archivo:

      * * * * COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1 
    • También consideraría verificar los permisos de / ABSOLUTE_PATH_TO_LOG y ejecutar el comando desde los permisos de ese usuario. Solo para verificación, mientras prueba si podría ser una fuente potencial de problemas.
  3. El registro del progtwig en sí, con su propio manejo de errores y registro con fines de seguimiento.

Hay algunas fonts comunes de problemas con cronjobs: * La RUTA ABSOLUTA del binario que se ejecutará. Cuando lo ejecuta desde su shell, podría funcionar, pero el proceso cron parece usar otro entorno, y por lo tanto, no siempre encuentra binarios si no usa la ruta absoluta. * Las BIBLIOTECAS usadas por un binario. Es más o menos el mismo punto anterior, pero asegúrese de que, si simplemente coloca el NOMBRE del comando, se refiere exactamente al binario que usa la misma biblioteca, o mejor, verifique si el binario al que se refiere con la ruta absoluta es el mismo que recomienda cuando usa la consola directamente. Los binarios se pueden encontrar usando el comando locate, por ejemplo:

 $locate python 

Asegúrese de que el binario al que se referirá sea el mismo que el que está llamando en su caparazón, o simplemente vuelva a realizar la prueba en su caparazón utilizando la ruta absoluta que planea colocar en el cronjob.

  • Otra fuente común de problemas es la syntax en el cronjob. Recuerde que hay caracteres especiales que puede usar para listas (comas), para definir rangos (guiones -), para definir incrementos de rangos (barras), etc. Consulte: http://www.softoutlook.org/Utilities/ cron.shtml

Aquí está mi código:

 * * * * * your_script_fullpath >> your_log_path 2>&1 

En Ubuntu puede habilitar un archivo cron.log para contener solo las entradas CRON.

Descomente la línea que menciona cron en el archivo /etc/rsyslog.d/50-default.conf :

 # Default rules for rsyslog. # # For more information see rsyslog.conf(5) and /etc/rsyslog.conf # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log 

Guarde y cierre el archivo y luego reinicie el servicio rsyslog :

 sudo systemctl restart rsyslog 

Ahora puede ver las entradas del registro cron en su propio archivo:

 sudo tail -f /var/log/cron.log 

Resultados de muestra:

 Jul 18 07:05:01 machine-host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) 

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 a cron.log (o tal vez a algún otro archivo de registro).

Si desea verificar si un crontab se está ejecutando y no tiene que buscarlo en cron.log o syslog , cree un crontab que redirija el resultado a un archivo de registro de su elección, como por ejemplo:

 # For more information see the manual pages of crontab(5) and cron(8) # # mh dom mon dow command 30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1 

Pasos tomados de: https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/

En caso de que estés ejecutando algún comando con sudo, no lo permitirá. Sudo necesita un tty.

cron ya envía la salida estándar y el error estándar de cada trabajo que ejecuta por correo al propietario del trabajo cron.

Puede usar MAILTO=recipient en el archivo crontab para que los correos electrónicos se envíen a una cuenta diferente.

Para que esto funcione, necesita que el correo funcione correctamente. Llegar a un buzón de correo local generalmente no es un problema (de hecho, es probable que ls -l "$MAIL" revele que ya ha estado recibiendo algo) pero obtenerlo de la caja y salir a internet requiere el MTA (Postfix, Sendmail, ¿qué tienes? Para estar configurado correctamente para conectarse al mundo.