Crontabs multiples pour un utilisateur

13

existe-t-il un moyen d'utiliser plusieurs fichiers crontab pour un seul utilisateur? Penser quelque chose dans le sens du fichier crontab par projet au lieu de crontab par utilisateur ...

Toute aide est appréciée ...

realshadow
la source

Réponses:

13

C'est généralement une bonne idée de conserver votre crontab dans un fichier séparé et de l'installer avec crontab filename. (Je garde mon fichier crontab dans un système de contrôle de source.)

Vous pouvez avoir plusieurs fichiers crontab et les installer tous avec

cat file1 file2 file3 | crontab

La crontabcommande ne gère normalement qu'un seul crontab par utilisateur. Mais vous pouvez ajouter des fichiers système crontab au /etc/cron.drépertoire. Ces fichiers ont un champ supplémentaire après la spécification d'heure qui indique l'utilisateur pour le travail, et vous pouvez avoir plusieurs fichiers par utilisateur. Même si l'un d'eux a une erreur de syntaxe, les autres s'exécuteront toujours.

Vous aurez besoin d'un accès root pour installer les fichiers dans ce répertoire.

man 5 crontab pour plus de détails.

Je ne suis pas convaincu que contourner le mécanisme normal de crontab comme celui-ci soit une bonne idée, mais cela devrait fonctionner.

(Cela suppose l'implémentation "Vixie Cron", qui est probablement ce que votre système utilise.)

REMARQUE: vous pourriez être tenté d'essayer

crontab file1 file2 file3 # WRONG

mais une rapide expérience montre que tous les noms de fichiers sauf le premier sont ignorés en silence. La page de manuel indique qu'un seul nom de fichier est accepté, mais ne dit pas ce qui se passe si plusieurs noms de fichier sont fournis.

Keith Thompson
la source
Je l'ai fait aujourd'hui. Ce serait facile à faire, mais l'objectif est que chaque «gestionnaire» de projet ait le contrôle de sa propre crontab. Avec cette approche, il faudrait combiner comme ça chaque fois que quelqu'un modifie l'un des fichiers, ce qui signifie qu'il devra garder une trace de tous les fichiers qui doivent être compilés
1
Créez donc un programme (ou script, ou autre) pour l'automatiser. Notez que vous pouvez appeler la crontabcommande à partir d'une entrée crontab.
Keith Thompson
1
@MateuszKonieczny: C'est une bonne raison, mais c'est aussi facile d'effacer accidentellement votre crontab. crontabsans argument lit une nouvelle crontab depuis stdin.
Keith Thompson
1
@MateuszKonieczny: Non, je le garde juste dans un dépôt CVS et le copoye $HOMEquand je le mets à jour. (J'utilise CVS parce que Git n'existait pas quand j'ai commencé à le faire.)
Keith Thompson
1
@KeithThompson Oh, gotcha! Je crée un document pour aider les gens à exécuter Fedora Core 24 à partir de "zéro" sans évolution ni gnome: github.com/barrycarter/bcapps/blob/master/FEDORA et je voulais partager une partie de mon fichier cron mais pas tout. Votre solution (créer bc-public-cron dans le répertoire GIT et bc-private-cron en dehors de celui-ci) convient parfaitement.
barrycarter
4

Pourquoi ferais-tu ça? Vous pouvez utiliser plusieurs lignes dans crontab - je pense que cela ferait aussi l'affaire.

Il y a aussi les répertoires que vous pourriez probablement utiliser:

cron.d/
cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/
Gaffe
la source
C'est comme ça maintenant :) J'aimerais juste savoir s'il y a un moyen de le faire