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.Cron Job Log - ¿Cómo iniciar sesión?
Respuesta
* * * * * myjob.sh >> /var/log/myjob.log 2>&1
registrará toda la salida del trabajo de cron para /var/log/myjob.log
Es posible utilizar mail
para enviar mensajes de correo electrónico. La mayoría de los sistemas enviarán la salida de trabajo no controlada cron
por correo electrónico a la raíz o al usuario correspondiente.
Por troncos cron por defecto en/var/log/syslog para que pueda ver las entradas relacionadas cron mediante el uso de:
grep CRON /var/log/syslog
https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log
Aquí está mi código:
* * * * * your_script_fullpath >> your_log_path 2>&1
" >> "significa anexar datos a fileright? ¿Qué significa "2> & 1", salida completa con error, ¿verdad? – Nullpointer
Las preguntas de redirección básica se verifican mejor en el manual. También hay un métrico de preguntas duplicadas sobre estos operadores aquí en Stack Overflow. Pero sí, aproximadamente; '>>' se agrega y '2> & 1' dice que envíe un error estándar al mismo lugar que la salida estándar. – tripleee
Hay son al menos tres tipos diferentes de registro:
El registro ANTES de ejecutar el programa, 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.
El registro de errores DESPUÉS de que el programa intentó ejecutar, que se puede enviar a un correo electrónico o un archivo, como se menciona en @Spliffster. Prefiero registrar en un archivo, porque con el correo electrónico ENTONCES tiene una NUEVA fuente de problemas , y su comprobación si el envío y recepción de correo electrónico está funcionando perfectamente . A veces lo es, a veces no lo es. Por ejemplo, en una sencilla máquina de escritorio común en el que no está interesado en configurar un SMTP, a veces se prefiere el registro en un archivo:
* * * * COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1
- También me gustaría considerar el comprobar los permisos de/ABSOLUTE_PATH_TO_LOG y ejecuta el comando desde los permisos de ese usuario. Solo para verificación, mientras prueba si podría ser una fuente potencial de problemas.
- El registro del programa en sí, con su propio manejo de errores y registro con fines de seguimiento.
Hay algunas fuentes 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 utilizando el comando localizar, por ejemplo:
$locate python
Asegúrese de que el binario que se referirá, es el mismo el binario que está llamando en su concha, o simplemente probar de nuevo en su shell usando el camino absoluto que planeas poner en el cronjob.
- Otra fuente común de problemas es la sintaxis en el cronjob. Recuerde que hay caracteres especiales que se pueden utilizar en las listas (comas), para definir rangos (guiones -), para definir aumento de rangos (barras), etc. Eche un vistazo: http://www.softpanorama.org/Utilities/cron.shtml
En caso que usted está ejecutar algún comando con sudo, no lo permitirá. Sudo necesita un tty.
Esto también depende de la configuración 'sudo'. Las cosas que necesitan ejecutarse sin una forma de proporcionar una contraseña se deben configurar con 'NOPASSWD:' en su configuración 'sudoers'. – tripleee
En Ubuntu puede habilitar un archivo cron.log
para contener solo las entradas CRON.
Elimine la línea que menciona cron
en /etc/rsyslog.d/50-default.conf
archivo:
# 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
Guardar y cerrar el archivo y reinicie el servicio rsyslog
:
sudo systemctl restart rsyslog
Ahora puede ver entradas de registro cron en su propia archivo:
sudo tail -f /var/log/cron.log
salidas de la 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 se pueden ver más información acerca de lo que en realidad fueron los scripts ejecutar dentro /etc/cron.daily
o /etc/cron.hourly
, a menos que esos guiones salida directa a la 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 buscar en cron.log
o syslog
, crear un crontab que redirige la salida a un archivo de registro de su elección - algo así como:
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h 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/
Ubuntu 16.04 no mostró ningún registro cron y esta información funcionó. – pojda
Todo lo anterior no funciona para mí. Entonces, tengo que agregar el 'MAILTO = [mi correo electrónico]' en la parte superior del archivo del crontab en /etc/cron.d/ y recibí la respuesta porque el comando cron obtuvo errores.
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. El envío 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 alguno) pero para sacarlo de la caja y salir a internet requiere el MTA (Postfix, Sendmail, ¿qué tiene?) estar configurado correctamente para conectarse al mundo.
- 1. Ejecutando un Cron Job
- 2. CRON job for codeigniter
- 3. Cron Job $ _SERVER issue
- 4. Cron Job in play framework 2.0
- 5. php cron job cada 10 minutos
- 6. Linux: ejecutar cron job en primer plano
- 7. Error al iniciar hadoop Job Tracker
- 8. Ejecución de cron job en Linux cada 6 horas
- 9. Primeros retraso trabajo para iniciar la sesión
- 10. ¿Para iniciar sesión o no iniciar sesión?
- 11. ¿Cómo iniciar sesión en orden inverso?
- 12. Cómo iniciar sesión excepciones en JavaScript
- 13. Git Iniciar sesión ZSH Terminal
- 14. ¿Cómo iniciar sesión en wordpress mediante programación?
- 15. Django iniciar sesión/cerrar sesión
- 16. Iniciar sesión con Linkedin
- 17. ¿Iniciar sesión en Sinatra?
- 18. Cómo enviar correos electrónicos a través de cron job usng PHP mysql
- 19. java.util.logging para iniciar sesión en la consola
- 20. Log from within collectiveidea/delayyed_job
- 21. ¿Cómo puedo iniciar sesión en las instalaciones de Inno Setup?
- 22. "Iniciar sesión" o "Entrar" o "Login"
- 23. Cómo iniciar sesión en Craigslist usando C#
- 24. ¿Cómo iniciar sesión con Ruby y eventmachine?
- 25. Cómo iniciar sesión como usuario en p4
- 26. Cómo iniciar sesión en Gerrit como administrador
- 27. cómo iniciar sesión en la máquina ec2?
- 28. Retiro UncaughtExceptionHandler Excepción después de iniciar sesión
- 29. registrador Singleton, registrador estático, registrador de fábrica ... ¿cómo iniciar sesión?
- 30. Iniciar sesión en Amazon S3
Descripción de lo que significa '2> & 1': http://stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21 – Yamaneko
¿cuál podría ser el problema si este archivo de registro nunca se crea ? – clamp
FWIW, si desea 'stderr' y' stdout' en el registro, el '2> & 1' debe venir después de la indirección:' myjob.sh >> /var/log/myjob.log 2> & 1' –