Je configure des tâches de maintenance système régulières qui doivent s'exécuter en tant que root. Je prévois d'utiliser la version de cron fournie avec Ubuntu 14.04 LTS par défaut.
Je vois l’administrateur précédent (qui a depuis quitté la société) a édité directement / etc / crontab. Cependant, je comprends qu'une autre approche possible serait d'utiliser crontab -e
comme racine. Existe-t-il des arguments convaincants pour utiliser l'un ou l'autre, ou est-ce une préférence?
linux
cron
ubuntu-14.04
Marcv81
la source
la source
Réponses:
Il peut être utile de noter que les travaux d'une crontab (
crontab -e
) personnelle sont toujours exécutés en tant que propriétaire,/etc/crontab
contenant un<user>
champ obligatoire supplémentaire permettant à un administrateur de configurer le travail pour qu'il s'exécute en tant qu'utilisateur non root.L'édition de la crontab système ou la configuration d'une crontab personnelle pour root sont probablement un peu plus portables, non spécifiques à certaines distributions Linux et sans doute plus faciles à gérer pour une personne , avec tous les travaux dans un seul fichier mais:
Personnellement, je privilégie une troisième option : pour chaque tâche planifiée, supprimez soit
/etc/cron.d/
avec un extrait de cron/etc/cron.[hourly |daily |weekly |monthly]
répertoire approprié .C'est plus facile à écrire (vous pouvez simplement créer / écraser / supprimer de tels fichiers sans avoir à vous soucier du contenu d'un seul fichier crontab) et cela fonctionne bien avec les outils de gestion de la configuration et c'est ce que les gestionnaires de paquets sont déjà faire quand même.
Les travaux / scripts dans
/etc/cron.[hourly |daily |weekly |monthly]
sont toujours exécutés en tant que root, les extraits cron/etc/cron.d/
autorisant à la fois la définition d’un calendrier personnalisé et l’exécution en tant qu’utilisateur différent avec le même<user>
champ obligatoire trouvé dans/etc/crontab
.la source
/etc/crontab
est qu'une fusion sera nécessaire à chaque mise à jour ducron
package. Vous n'avez pas ce problème si vous ajoutez simplement un nouveau fichier à l'un des/etc/cron.*
répertoires./etc/cron.[hourly |daily |weekly |monthly]
contient les exécutables et les/etc/cron.d
crontabs. Autre que cela, +1.Autant que je me souvienne, elle
crontab -e
présente l’avantage supplémentaire de vérifier la syntaxe de la crontab avant de l’installer, d’erreur et de restaurer la précédente si vous faites une erreur. De cette façon, tout ce qui fonctionnait auparavant ne s'arrêtera pas brusquement si la syntaxe est incorrecte. Je pense que la meilleure pratique consiste à utiliser les utilitaires, comme exécutervisudo
plutôt que d’éditer/etc/sudoers
directement.la source
/etc/crontab
ligne avec un nom d'utilisateur dans la 6ème colonne). - Bien que je voudrais dire que l'utilisation d'outils interactifs n'est pas une "bonne pratique" , vous devez l'automatiser avec des outils tels que Puppet / Salt / Ansible, etc., et ne devez plus configurer les serveurs à la main. Par contre, si vous êtes à l’école, utilisez bien vos outils.C'est vraiment une question de style, il y a une raison pour laquelle plusieurs méthodes sont offertes par le système d'exploitation. Soyez juste cohérent et ne mélangez pas si vous ne voulez pas confondre qui que ce soit (ou vous-même après un certain temps d'inactivité avec le système) - s'il est difficile de voir quelles tâches sont réellement planifiées sur tout l'hôte, pour finir par de mauvaises surprises.
la source
Afin d’être sûr d’ajouter un travail cron qui requiert des droits d’utilisateur spécifiques, j’utilise personnellement la commande suivante:
Vous pouvez ajouter
sudo
aussi.Comme @rackandboneman l'a déclaré, il n'est pas nécessaire de jouer avec les fichiers /etc/cron.d/. Si le problème concerne les tâches cron de l'utilisateur, utilisez les fonctionnalités de
crontab
commande.la source