Tengo un CentOS 6.6
servidor con los siguientes paquetes instalados:
crontabs-1.10-33.el6.noarch
cronie-1.4.4-12.el6.x86_64
cronie-anacron-1.4.4-12.el6.x86_64
kernel-2.6.32-504.3.3.el6.x86_64
A veces, uno de los trabajos de respaldo que está programado para ejecutarse diariamente simplemente no se ejecuta. El script ni siquiera se llama de acuerdo con /var/log/cron.log
. Es interesante mencionar que otros trabajos programados para ejecutarse exactamente al mismo tiempo se ejecutan sin problemas.
No puedo reproducir el problema y no he visto ningún patrón en él. Si no hago nada, el trabajo se ejecuta correctamente al día siguiente como se esperaba.
crond simplemente ignora solo uno de los múltiples trabajos que se supone que se ejecutan en un momento determinado. Esto solo ocurre esporádicamente.
Leí en algunos otros lugares que la gente habla sobre agregar una línea vacía al final del crontab
archivo. El trabajo que ocasionalmente no se ejecuta se encuentra en la última línea de mi crontab
archivo. No pude encontrar ninguna confirmación de que este es un error real o conocido.
# tail -2 /var/spool/cron/postgres
* * * * * OTHERJOB
0 21 * * * /pg_backup.sh
Esto es todo lo que tengo en mi /var/log/cron.log
Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19394]: (root) CMD (OTHERJOB)
Mar 31 21:00:02 SERVERNAME [cron.info] CROND[19418]: (postgres) CMD (/pg_backup.sh)
Mar 31 21:01:02 SERVERNAME [cron.info] CROND[20062]: (root) CMD (OTHERJOB)
Apr 1 21:00:02 SERVERNAME [cron.info] CROND[31349]: (root) CMD (OTHERJOB)
Apr 1 21:01:01 SERVERNAME [cron.info] CROND[32080]: (root) CMD (OTHERJOB)
Vea cómo OTHERJOB
siempre se ejecuta mientras está encendido Apr 1
pg_backup.sh
ni siquiera se ejecutó.
Ya he intentado reiniciar crond
pero esto sigue sucediendo. Esto está afectando a múltiples servidores con la misma versión de SO, kernel y cron
RPM.
Hay una versión más nueva de cronie
( 1.4.12
), sin embargo, actualizarla no es una opción ya que ya estamos usando la última versión disponible paraCentos 6.6
Revisé el registro de cambios para todas las cronie
versiones después de la mía ( 1.4.4
) y no parece haber ninguna solución para este problema en particular. También verificó todos los mensajes de confirmación .
echo >/dev/null
por ejemplo)?/var/log/audit/audit.log
.Respuestas:
El cron original requería que cada entrada terminara con una nueva línea, así que sí, a veces se necesita una línea en blanco o algo al final.
Algunas versiones lo tienen arreglado o emiten una advertencia, por ejemplo Ubuntu Maverik (10.10): crontab mira la sección de diagnóstico en la parte inferior que indica que se escribirá una advertencia en syslog.
fuente
Esta es la primera respuesta que aparece con el texto de búsqueda,
cron error getpwname failed
así que pensé en publicar la causa de mi problema:Estaba usando / etc / crontab pero había olvidado poner al usuario delante del comando.
es decir,
En vez de
Dio el mismo error, vaya figura.
fuente
Utilizamos
sssd
para la autenticación remota.crond
tiene que verificar los usuarios disponibles antes de ejecutar trabajos y lo hace cada 60 segundos.sssd
El valor predeterminadoclient_idle_timeout
es 60 segundos. así que tuvimos una condición de carrera entresssd
ycrond
Solo llegamos al fondo de este problema porque en la versión
1.4.4-14
crond comenzó a ser un poco más detallado sobre algunos errores.Después de actualizar a esa versión, comenzamos a ver el siguiente error al mismo tiempo que no se ejecutaba un trabajo:
que nos trajo a esto: https://bugzilla.redhat.com/show_bug.cgi?id=1209600#c2
y finalmente a esto: https://access.redhat.com/solutions/1125133
La solución sugerida en el enlace de arriba fue agregar la siguiente línea para
/etc/sssd/sssd.conf
:El cambio anterior nos ha solucionado el problema y cron ya no se salta los trabajos.
fuente