¿Incluyendo el archivo en la configuración de crontab?

8

Estoy tratando de poner la configuración crontab específica del proyecto en el repositorio de código para facilitar la actualización de los trabajos cron en todos los backends cuando se implementa.

¿Es posible incluir archivos en la configuración de crontab? Algo como

* * * * * execsomething /blablabla/blah/
* * * * * onemore /blablabla
@include '/home/user/project/crontab.conf'
Kirzilla
fuente

Respuestas:

8

Dependiendo de su cron daemon y su distribución, debería haber varios directorios en / etc donde puede colocar archivos con trabajos para cron.

Los scripts (no trabajos con formato cron) colocados en los siguientes directorios se ejecutarán en los intervalos especificados. Tenga en cuenta que la frecuencia está garantizada, pero el tiempo exacto de ejecución puede no serlo. Para la mayoría de los usuarios, estos directorios son suficientes:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

cron ejecutará los trabajos con formato cron (como los ejemplos anteriores) ubicados en el siguiente directorio en los momentos especificados. Tenga en cuenta que, además de las entradas normales, el usuario del trabajo también debe especificarse antes del comando. Para paquetes y distribuciones de software, este método es la mejor manera de distribuir cronjobs:

/etc/cron.d

Ejemplo de un comando con formato cron.d:

1 1 * * * root echo "serverfault is awesome" > /dev/null
Boscoe
fuente
¿Puede el nombre de usuario ser una variable? Tengo un montón de comandos que deben ejecutarse como el mismo usuario, pero podrían ser usuarios diferentes en entornos diferentes. ¿Puedo hacer algo como $ USER = joeblow 1 1 * * * $ USER echo "serverfault is awesome"> / dev / null
Jay K
Depende del cron demonio. cronie no permite variables de entorno, por ejemplo.
Boscoe
4

No tan lejos como sé; para eso /etc/cron.destá.

Como Boscoe ha señalado, también están los /etc/cron.{hourly,daily,weekly,monthly}directorios, pero los trabajos allí solo pueden ejecutarse como root (a menos que explícitamente se use /bin/supara cambiar el EUID). Los trabajos /etc/cron.dtienen un campo adicional que especifica el usuario con el que se ejecutan, y la forma en que su pregunta contiene una /home/userruta me hace pensar que desea que estos trabajos puedan ejecutarse como usuarios arbitrarios.

MadHatter
fuente