He lanzado un montón de dardos tratando de ejecutar un script mío de Python para ejecutar cada minuto. Así que pensé en simplificarlo para hacer "la cosa más simple que podría funcionar" una vez por minuto (estoy ejecutando debian / testing).
Creé un archivo de una sola línea en /etc/cron.d/perminute
:
* * * * * /bin/touch /home/me/ding_dong
Es propiedad de root y ejecutable (no estoy seguro si alguno de esos es importante). Y luego hice:
sudo service cron reload
Y luego siéntate y comienza a correr ls -ltr
una y otra vez en mi directorio de inicio ( /home/me
). Pero mi archivo ding_dong nunca aparece. Sé que si hago un sudo /bin/touch /home/me/ding_dong
, aparece de inmediato.
Obviamente falta algo estúpido aquí.
Respuestas:
Al agregar una configuración cron en
/etc/cron.d/
o en/etc/crontab
, debe agregar el nombre de usuario en qué contexto debe ejecutarse el comando, en su ejemplo* * * * * root /bin/touch /home/me/ding_dong
Y solo una sugerencia mía: no tiene que comenzar a ejecutarse
ls -ltr
una y otra vez, solo usewatch -n 5 "ls -ltr"
y ejecutará el comando cada 5 segundos (o cualquier otro valor reemplazando 5 con lo que desea).fuente
man cron
un poco más despacio y prestar especial atención a lasDEBIAN specific
secciones, noté que los archivos NO deben ser grupales ni de otro tipo. Lo que había permitido en mi frustración en un momento.man cron
: Además, en Debian, cron lee los archivos en el directorio /etc/cron.d. cron trata los archivos en /etc/cron.d de la misma manera que el archivo / etc / crontab (siguen el formato especial de ese archivo, es decir , incluyen el campo de usuario ). Sin embargo, son independientes de / etc / crontab: no heredan, por ejemplo, configuraciones de variables de entorno. Este cambio es específico para Debian; consulte la nota debajo de DEBIAN SPECIFIC a continuación.Para crear un nuevo
cron
trabajo, debe ejecutarcrontab -e
como el usuario que desea ejecutar el trabajo. Luego agregue la línea relevante en la ventana del editor que aparece:La forma en que lo haces requiere un formato diferente y, de todos modos, no es una buena idea. Las tablas de referencias
/etc/cron.d
tienen un formato ligeramente diferente, requieren un nombre de usuario para ejecutarse. Por ejemplo:Un buen truco (como lo sugiere @VogonPoetLaureate) es capturar el error estándar de sus trabajos cron que pueden ayudar a depurarlos. Por ejemplo:
fuente
crontab -l
enumerar todos sus trabajos cron.Un posible error aquí es cómo se crea un archivo de una sola línea . De la documentación de Ubuntu :
Por ejemplo, esta forma de creación no funciona:
fuente