rango minutos manualmente instalar horas ejemplos ejecutar editar cada linux cron

linux - minutos - Depuración de trabajos de crontab



ejecutar crontab manualmente (5)

Agregue 2> & 1 al final de su comando Crontab. Esto redireccionará la salida stderr a la salida estándar. A continuación, asegúrese de que está registrando el comando Unix del crontab.

0 0,12 1 */2 * /sbin/ping -c 192.168.0.1; ls -la >>/var/log/cronrun 2>&1

Esto capturará cualquier cosa del comando Unix.

Un par de consejos adicionales (después de ayudar a un colega el otro día ...). Escriba las variables de entorno emitiendo el conjunto de comandos sin parámetros. Y haz que el shell haga eco de cada comando con el comando set -x. En la parte superior de su problema de guión;

set set -x

He agregado una entrada crontab en un servidor Linux que ejecutará un ejecutable Java. El código Java utiliza su propia clase para registrar errores y mensajes en un archivo de registro.

Pero cuando revisé el archivo de registro después de la hora programada, no se registraron mensajes. Debería haber al menos un mensaje de registro que dijera que la ejecución había comenzado.

Entonces hay dos causas posibles:

  1. El código se ejecutó pero no se registró;
  2. O bien, el código no se ejecutó en absoluto.

El archivo de registro especificado tiene permisos chmod 777 así que supongo que es la segunda causa aquí.

¿Por qué un trabajo crontab no se ejecuta a la hora programada? ¿Y cómo depuro esto sin que ocurra ningún tipo de registro?

He leído que si hay un error cron envía un correo electrónico al usuario. ¿Cómo puedo saber qué dirección de correo electrónico está asociada con el usuario?


Asumiendo que la ejecución del comando funciona manualmente, pero no en Cron, puede ser que la ruta correcta no esté expuesta al comando cron. Puede solucionar esto ejecutando crontab -e y luego ingresando la ruta directamente en la pestaña cron:

# Export the path so that the scripts run correctly PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin


Comprueba si realmente formateaste la hora en que tiene que funcionar bien.

Por ejemplo, en lugar de

*/1 * * * * echo ''debug'' > /home/glab/change_branch.log

podría ser esto:

1 * * * * echo ''debug'' > /home/glab/change_branch.log

y usted podría estar esperando que se ejecute cada minuto. Y tampoco se generan registros.


Puede habilitar el registro de trabajos cron para rastrear problemas. /etc/rsyslog.conf or /etc/rsyslog.d/50-default.conf editar el /etc/rsyslog.conf or /etc/rsyslog.d/50-default.conf (en Ubuntu) y asegurarse de tener la siguiente línea sin comentarios o agregarlo si falta:

cron.* /var/log/cron.log

Luego reinicie rsyslog y cron :

sudo service rsyslog restart sudo service cron restart

Los trabajos de Cron se registrarán en /var/log/cron.log .


Una cosa que puede estar causando su problema es que cron (al menos en la distribución que estoy usando, el sistema operativo Amazon Linux) considera que los tiempos están en UTC, por lo tanto, si se encuentra en una zona horaria diferente (por ejemplo, -03: 00) puede estar esperando que se ejecute con 3 horas de anticipación para que realmente lo haga y de hecho no tenga ningún problema.