Si j'ai besoin d'un cronjob qui s'exécute au niveau du système (c'est-à-dire non spécifique à un certain utilisateur), comment me proposez-vous de le créer?
- en cours
crontab -e
d' exécution en tant que root - l'ajouter à
/etc/crontab
- création d'un fichier définissant le cronjob dans
/etc/cron.d/
- créer un fichier définissant le cronjob
/etc/cron.*ly/
(mais seulement si cet intervalle de temps correspond à mes besoins)
Ce qui m'inquiète le plus, c'est la suivante: laquelle de ces solutions sera éventuellement remplacée par une mise à jour du système ?
De plus, je suppose que si le travail est long, je devrais le mettre sur un fichier de script séparé , par exemple dans /root/bin/
. Êtes-vous d'accord?
Réponses:
Ne pas utiliser
crontab -e
Je ne le mettrais pas en
crontab -e
tant que root. Ceci est généralement moins évident pour les autres administrateurs et risque de se perdre avec le temps. En les plaçant,/etc/crontab
vous pouvez spécifier exactement l'heure à laquelle vous souhaitez qu'ils s'exécutent et vous pouvez également spécifier un autre utilisateur.Emplacements alternatifs
Si vous ne vous souciez pas d'exécuter le script en tant qu'utilisateur différent et / ou si vous souhaitez simplement que le script s'exécute chaque semaine, tous les jours, etc., plusieurs distributions fournissent des répertoires dans lesquels des scripts peuvent être placés qui seront automatiquement traités à un moment précis.
Par exemple, sous les distributions basées sur Redhat:
Je vais souvent mis crons au niveau du système que je veux courir à un moment spécifique au
/etc/cron.d
lieu de/etc/crontab
, surtout si elles sont des scripts plus complexes.Je préfère utiliser les répertoires sous
/etc/cron*
car ils sont un endroit beaucoup plus évident que les autres administrateurs système sauront regarder et les fichiers ici peuvent être gérés via des installations de packages telles querpm
et / ouapt
.Protection des entrées
Tous les répertoires que j'ai mentionnés sont destinés à mettre des scripts qui ne seront pas détruits par un gestionnaire de paquets. Si vous êtes préoccupé par la protection d'une entrée crontab, je ne la mettrais certainement pas dans le
/etc/crontab
fichier, et la placerais plutôt comme un script approprié dans l'un des/etc/cron*
répertoires.la source
Je choisirais # 4. Il permet aux paramètres système de choisir quand exécuter le travail, et généralement ils font un bon travail de «exécuter lorsqu'il n'est pas occupé». La modification de l'ordonnanceur cron du système affecterait également automatiquement la durée d'exécution du script.
L'inconvénient est que vous n'avez aucun contrôle direct sur son exécution. Si vous avez besoin d'un contrôle plus direct, utilisez # 1.
1 est le moins susceptible d'être écrasé par une mise à jour du système. Bien que 3 et 4 devraient être assez sûrs. tout dépend de la façon dont vous mettez à jour. Votre distribution peut se mettre à jour comme elle le souhaite, mais seulement 2, risquent généralement d'être écrasées.
Enfin, je mettrais les scripts dans / usr / local / bin C'est l'endroit "normal" où je mettais les choses à l'échelle du système non gérées par le gestionnaire de paquets de la distribution. / root / bin est également acceptable s'il ne sera exécuté que par root. Cependant, tout cela est principalement du goût.
la source
Tout ce qui précède fonctionnera et aucun des éléments ci-dessus ne devrait être remplacé par des mises à jour. Le choix se résume à l'opinion - trois personnes différentes auront souvent au moins deux, sinon trois réponses différentes.
la source