¿Cómo puedo saber por qué cron no ejecuta mis trabajos?

15

Estoy usando Ubuntu 14.04, y el demonio cron se está ejecutando:

# ps ax | grep cron
822 ?        Ss     0:00 cron

pero no está ejecutando ningún trabajo. Anteriormente recibía entradas /var/log/syslogcomo esta:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

pero ahora no hay entradas relacionadas con cron. También recibí entradas como esta en /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

pero de nuevo, ahora no hay entradas relacionadas con cron.

No soy consciente de que algo ha cambiado. He intentado reiniciar cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Intenté usar crontab -epara agregar un trabajo cron * * * * * date >> /tmp/somefileque funcionó, pero instaló un nuevo crontab /var/spool/cron/crontabs/root, mientras que quiero que cron use el archivo /etc/crontab.

¿Hay alguna opción de depuración que pueda usar o un registro en algún lugar que pueda dar un mensaje de error que pueda investigar?

jl6
fuente
1
¿Qué se muestra a crontab -l?
user345352353
no crontab for root.
jl6
Creo que si solo buscas un poco en este sitio de SE, tendrás una respuesta. Este es un problema bastante común.
mdpc
Los Crons recuperados con el crontabcomando ( -lswitch) dependen del usuario, mientras que /etc/crontabse usan para almacenar crons de todo el sistema. Por esta razón, las tareas guardadas en /etc/crontabno aparecerán en nadie crontab -l.
John WH Smith
Tenga en cuenta que Server Fault tiene una pregunta canónica sobre la depuración de cronjob que puede ayudar.
Comodín el

Respuestas:

4

Para ayudarlo a depurar lo que está mal en sus crontrabajos, debe revisar su correo. Esto generalmente se almacena en un archivo como /var/mail/<user_name>o /var/spool/mail/<user_name>.

Estos dos archivos son en realidad enlaces duros en mi cuadro de Debian, pero no sé si esto es estándar.

Explicación

De la cron(8)página:

Al ejecutar comandos, cualquier salida se envía por correo al propietario del crontab (o al usuario nombrado en la variable de entorno MAILTO en el crontab, si existe).

Joseph R.
fuente
He revisado el correo; no se genera ninguno, ni hay un archivo dead.letter.
jl6
0

Ha demostrado que no hay crontab para root, ¿algún usuario tiene una entrada crontab? Si solo usa root, también puede consultar los siguientes directorios: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

en mi máquina (centos 6.4) tengo mlocate.cron dentro del directorio /etc/cron.daily/ y cron ejecuta ese script diariamente.

así que creo que solo necesitas agregar trabajos cron.

Hudspeth
fuente
Pero hay un archivo crontab en /etc/crontab. Quizás la pregunta es ¿por qué no crontab -llo reconoce?
jl6
0

Resolví esto cambiando los permisos /etc/crontaba lo siguiente:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Anteriormente lo era -rw-rw-r--. Ese fue el único cambio. No estaba funcionando, ahora lo está. Aún no estoy seguro de por qué.

jl6
fuente
1
El crontab raíz ejecutaría cualquier comando como root. Los permisos que permiten el acceso de escritura a usuarios no root se considerarían un agujero de seguridad.
ChuckCottrill
@ChuckCottrill: ¿Pero el bit de escritura grupal solo habría dado acceso de escritura a aquellos en el grupo raíz, que presumiblemente es solo usuario (s) raíz?
jl6
0

También tuve un tipo similar de problema, pero después de especificar la raíz como usuario en el /etc/crontab, el trabajo cron comenzó a activarse.

Puede deberse a la sintaxis seguida en la crontab -eque es diferente de la /etc/crontab.

MohanBabu
fuente