Esto es lo que hice en Debian Jessie:
- instalar cron a través de
apt-get install cron
- poner un
backup_crontab
archivo en/etc/cron.d/
Sin embargo, la tarea nunca se está ejecutando.
Aquí hay algunos resultados:
/# crontab -l
no crontab for root
/# cd /etc/cron.d && ls
backup_crontab
/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1
¿Hay algo que hacer para activar un crontab en particular, o para activar el "servicio" cron en sí mismo?
ls /etc/cron.d
es equivalente acd /etc/cron.d && ls
en términos de producción. La única diferencia es que el directorio de trabajo no cambiará.Respuestas:
Los archivos que
/etc/cron.d
necesitan también enumeran al usuario con el que se ejecutará el trabajo.es decir
También debe asegurarse de que los permisos y el propietario: el grupo estén configurados correctamente (
-rw-r--r--
y sean propiedad deroot:root
)fuente
crontab -l
informa sobre las entradas cron en/var/spool/cron/crontabs/
, es decir, las crontabs por usuario ./etc/cron.d
los archivos son crontabs del sistema y no son reportados porcrontab -l
.root
el archivo, simplementecrontab -l
no lo mencioné, ya que explicaste por qué, gracias por tu ayudaetc/cron.d
un archivo con un punto en el medio del nombre y el trabajo nunca se ejecutó hasta que leOtra cosa que he observado es que el archivo
/etc/cron.d
no puede tener una extensión. En mi caso particular, tenía un enlace simbólico:La restricción de nombre de archivo se documenta en la página man de run-part: http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html , se puede pasar una opción --regex para anular el formato del archivo.
Sin embargo, el comportamiento predeterminado de cron se mantuvo sin extensiones, vea los comentarios en: https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
fuente
Creo que probablemente te falta una línea en blanco necesaria desde el final de tu archivo cron. Tuve el mismo problema, pero después de verificar todo lo enumerado aquí (permisos de usuario, nombre de archivo, versión cron, etc.), me di cuenta de que no tenía un salto de línea después de la última entrada en mi
/etc/cron.d/own_cron
y eso hace que se ignore todo el archivo.fuente
Si eres el único usuario en esta computadora, es posible que quieras usar solo
crontab -e
. Se le pedirá que seleccione un editor la primera vez que ejecute el comando. Entonces puedes agregarle esto:Si cambia a una cuenta de usuario normal, deberá usarla
sudo crontab -e
para configurar los scripts que desea programar para que se ejecutenroot
.crontab -l
solo muestra el crontab actual, una vez que configura uno usandocrontab -e
. Si tiene un archivo cron en/etc/cron.d
/, no se mostrará concrontab -l
.También tendrá que comprobar que el script es ejecutable con:
chmod +x /backup.sh
.fuente
Dockerfile
así que realmente no puedo hacerlocrontab -e
, pero de todos modos es una información útilPara Cron de * bian distros (como Raspbian) necesita habilitar el
-l
parámetro del demonio Cron. Es recomendable hacerlo usando el/etc/default/cron
archivo de configuración, habilitando elEXTRA_OPTS
.fuente
-l
opción para el demonio cron autoriza un conjunto extendido de nombres de archivo en el/etc/cron.d
directorio, por lo que si el archivo se ignora silenciosamente porque hay un punto en él, entonces "agregar -l" o "eliminar punto" corregirá el problema.Comprueba tu versión de
cron
.Parece que si está usando el crond de Dillon, no necesita el usuario en una
/etc/cron.d
entrada.Me di cuenta de esto después de casi arrancarme el pelo restante.
Tengo un puñado de entradas que han sido eliminadas
/etc/cron.d
por varias instalaciones. Después de una investigación, descubrí que uno de ellos estaba funcionando. No tenía el usuario. Así que saqué al usuario de los demás. Y comenzaron a trabajar.fuente