Où mettre les cronjobs système?

11

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?

  1. en cours crontab -ed' exécution en tant que root
  2. l'ajouter à /etc/crontab
  3. création d'un fichier définissant le cronjob dans /etc/cron.d/
  4. 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?

bleuâtre
la source
3
Vous devez indiquer la distribution Unix ou Linux que vous utilisez.
jlliagre
J'apprends juste maintenant :) Je pensais que c'était un comportement indépendant de la distribution ...
bleuâtre

Réponses:

13

Ne pas utiliser crontab -e

Je ne le mettrais pas en crontab -etant 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/crontabvous 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:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly

Je vais souvent mis crons au niveau du système que je veux courir à un moment spécifique au /etc/cron.dlieu 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 que rpmet / ou apt.

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/crontabfichier, et la placerais plutôt comme un script approprié dans l'un des /etc/cron*répertoires.

slm
la source
1

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.

coteyr
la source
0

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.

John
la source