Emplacement du fichier crontab

53

Comme beaucoup (la plupart?) d'autres, j'édite ma crontab via crontab -e, où je conserve toutes les opérations de routine telles que la sauvegarde incrémentielle, ntpdate, diverses opérations rsync, ainsi que la création du fond d'écran de Noël sur le thème une fois par an. D'après ce que j'ai compris, lors d'une nouvelle installation ou d'un nouvel utilisateur, le fichier est automatiquement créé s'il n'existe pas. Cependant, je veux copier ce fichier sur un autre utilisateur. Où se trouve le fichier que je suis en train de modifier?

Si cela varie entre les distributions, j'utilise Centos5 et Mint 17

Jarmund
la source
15
+1 juste pour faire votre fond d'écran thème de Noël une fois par an
Celada
5
@ Celada Cela n'est peut-être pas fréquent, mais c'est quand même une tâche de routine.
Jarmund

Réponses:

54

L'emplacement des cronfichiers pour les utilisateurs individuels est /var/spool/cron/crontabs/.
De man crontab:

Chaque utilisateur peut avoir sa propre crontab, et bien qu'il /var/spool/cron/crontabss'agisse de fichiers , ils ne sont pas destinés à être modifiés directement.

heemayl
la source
7
Les mots clés sont "ils ne sont pas destinés à être modifiés directement", donc cette réponse est incomplète sans la commande ci-dessous de Celada, qui fournit une réponse plus sûre à la partie "copie vers un autre utilisateur" de la question. Si les gens prennent l'habitude de modifier directement les crontabs sans les envoyer via la commande crontab, ils renoncent à beaucoup de vérifications de sécurité que la commande fournit.
Monty Harder
@MontyHarder J'accepte "ils ne sont pas destinés à être édités directement", mais que faire si besoin est, comme s'il était nécessaire de faire une entrée dans la crontab via un script bash. vous devez utiliser le fichier exact, je ne pense pas qu'une interface externe puisse vous aider dans ce cas, corrigez-moi si je me trompe.
Prabhat Kumar Singh
@PrabhatKumarSingh Vous ne devez toujours pas éditer directement le fichier. Si vous avez lu la commande de Celada ci-dessous, vous auriez vu un exemple montrant comment un script peut manipuler un fichier crontab sans le modifier directement. man crontabexplique comment cela fonctionne.
Monty Harder
34

heemayl a raison sur l'emplacement des fichiers crontab sous Linux, mais il pourrait être différent sous d'autres systèmes d'exploitation et "théoriquement" pourrait également se trouver à un emplacement différent sous Linux. En gros, quand une interface spéciale est fournie pour accéder aux fichiers, vous devriez l’utiliser. Cela permettra cronde vérifier les fichiers avant de les installer, de s’assurer que ces fichiers disposent des autorisations nécessaires, etc.

Par conséquent, vous devriez copier une crontab d'un utilisateur à un autre en utilisant cette interface, comme ceci, et non en accédant directement aux fichiers.

crontab -u <user1> -l | crontab -u <user2>
Celada
la source
3
Il y a beaucoup de bonnes raisons pour que les fichiers crontab ne soient pas manipulés directement par autre chose que le système d'exploitation lui-même. C'est une bien meilleure solution. Je pense vraiment que cela doit être intégré à la réponse officielle.
Monty Harder
@MontyHarder Il n'y a pas vraiment de réponse "officielle". Il y a la réponse que la personne interrogée a choisie comme étant personnellement utile (celle cochée) et la réponse choisie par la communauté (avec le plus de votes positifs). En bref, vous avez 15 représentant, vous pouvez suggérer c'est la bonne réponse par upvoting il. De même, si vous souhaitez suggérer des améliorations à l'autre réponse, vous devez commenter cette réponse. Dans le cas contraire, son auteur ne sera pas informé de votre commentaire.
derobert
2
Le corollaire de cette réponse est qu'il faut rediriger la sortie de crontab -lvers un fichier, déplacer le fichier vers l'autre système et le diriger vers crontab. Ou peut-être même le faire directement ( crontab -l | ssh $remote_host crontab).
Blacklight Shining
6
"Lorsqu'une interface spéciale est fournie pour accéder aux fichiers, vous devez l'utiliser." Imaginez que chaque application fournisse une interface spéciale pour l'édition de fichiers de configuration au lieu de simplement les exposer via le fs. Ce serait assez embêtant de garder une trace de.
Witiko
1
En tant que demandeur initial, je pense que je devrais m'interroger sur ceci: la réponse acceptée a été choisie sur la base de ma question dans son sens littéral; l'emplacement du fichier. Mes intentions pour ce fichier ne sont pas pertinentes. Je ne pense pas que l'édition dans l'info supplémentaire change la réponse, mais cela pourrait être considéré comme superflu.
Jarmund