Inclure un fichier dans la configuration de crontab?

8

J'essaie de mettre la configuration crontab spécifique au projet dans le référentiel de code pour faciliter la mise à jour des tâches cron sur tous les backends lors du déploiement.

Est-il possible d'inclure des fichiers dans la configuration de crontab? Quelque chose comme

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

Réponses:

8

Selon votre démon cron et votre distribution, il devrait y avoir plusieurs répertoires dans / etc où vous pouvez placer des fichiers avec des tâches pour cron.

Les scripts (pas les travaux au format cron) placés dans les répertoires suivants seront exécutés aux intervalles spécifiés. Notez que la fréquence est garantie mais que l' heure exacte de son exécution peut ne pas l'être. Pour la plupart des utilisateurs, ces répertoires sont suffisants:

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

Les tâches au format cron (comme vos exemples ci-dessus) placées dans le répertoire suivant seront exécutées par cron aux heures spécifiées. Notez qu'en plus des entrées normales, l'utilisateur du travail doit également être spécifié avant la commande. Pour les packages et les distributions de logiciels, cette méthode est la meilleure façon de distribuer les tâches cron:

/etc/cron.d

Exemple d'une commande formatée cron.d:

1 1 * * * root echo "serverfault is awesome" > /dev/null
Boscoe
la source
Le nom d'utilisateur peut-il être une variable? J'ai un tas de commandes qui doivent s'exécuter en tant que même utilisateur, mais qui peuvent être un utilisateur différent dans des environnements différents. Puis-je faire quelque chose comme $ USER = joeblow 1 1 * * * $ USER echo "serverfault is awesome"> / dev / null
Jay K
Dépend du démon cron. cronie ne permet pas les variables d'environnement par exemple.
Boscoe
4

Pas autant que je sache; c'est pour ça /etc/cron.d.

Comme Boscoe l'a souligné, il y a aussi les /etc/cron.{hourly,daily,weekly,monthly}répertoires, mais les travaux ne peuvent être exécutés qu'en tant que root (sauf si vous utilisez explicitement /bin/supour modifier l'EUID). Les travaux dans /etc/cron.dont un champ supplémentaire qui spécifie l'utilisateur sous lequel ils s'exécutent, et la façon dont votre question contient un /home/userchemin me fait penser que vous souhaitez que ces travaux puissent s'exécuter en tant qu'utilisateurs arbitraires.

Chapelier Fou
la source