Sur divers systèmes que j'administre, il existe des scripts cron qui s'exécutent via la disposition couramment utilisée /etc/cron.{hourly,daily,weekly}
. Ce que je veux savoir, c'est s'il existe une fonctionnalité commune de «désactiver ce script».
De toute évidence, la simple suppression d'un élément d'un répertoire donné le désactivera, mais je recherche une solution plus permanente. La suppression /etc/cron.daily/slocate
fonctionnera pour désactiver la nuit updatedb
sur ma machine domestique (où je ne l'utilise jamais slocate
), mais la prochaine fois que je mettrai à niveau le paquet slocate, je suis presque sûr qu'il réapparaîtra.
Les deux distributions qui m'intéressent le plus sont Gentoo et OpenSUSE, mais j'espère qu'il existe un mécanisme largement implémenté. Les deux distributions comme je les utilise utilisent vixie-cron (pas sûr que ça compte).
la source
chattr +i scriptname
après lechmod
.lsattr
sert - pour supprimer l' effrayant (il répertorie les atteibutes d'un fichier).run-parts n'exécute pas de travaux qui ont un point dans leur nom, donc
fera l'affaire.
la source
cron.daily
Est généralement invoqué via/etc/crontab
une ligne comme par exemplerun-parts --report /etc/cron.daily
man run-parts
vous donne les options.run-parts --test /etc/cron.daily
montre quels travaux sont exécutés sans les exécuter.Je préfère créer un sous-répertoire «Disabled» et y déplacer mes emplois.
Dans tous les cas, si vous mettez à jour un package, il est probable que le travail se remette en place ou que les bits «x» supprimés soient restaurés
la source
Vous pouvez supprimer le package slocate si vous ne l'utilisez jamais.
la source
Si vous utilisez cfengine ( https://cfengine.com/ ), vous pouvez le faire en désactivant. Vous venez d'écrire un fichier de promesse pour un groupe d'hôtes et il s'appliquera lors de la prochaine exécution de cfagent. Faire cela avec une marionnette ou un chef ou quoi que ce soit devrait également être assez simple.
la source
Le /etc/cron.daily et. Al. les scripts sont exécutés par un script appelé run-parts. Ce script varie. Par exemple, le commutateur --test mentionné ci-dessus ne se trouve pas sur la machine que j'utilise en ce moment.
Run-parts est un script bash. C'est un outil généralement utile pour exécuter tous les scripts dans le répertoire qu'il donne en argument. Il se trouve généralement dans / usr / bin / run-parts.
Il a un enchevêtrement de logique pour décider quoi exécuter. Ce code contient la réponse à votre question, mais il varie également. Vous devez donc lire le code pour être sûr.
Dans la version que je regarde, il a une logique qui, lorsque vous travaillez sur le répertoire <foo>, vérifie <foo> /jobs.deny. Si cela existe, il refuse d'exécuter tout script mentionné dans ce fichier sur une ligne, seul. En supposant que vous ayez cette fonctionnalité, elle est géniale car elle continuera à fonctionner lorsque le package qui installe est installé ou mis à niveau.
la source
Si vous traitez avec RHEL et ses dérivés (qui fournit le
crontabs
package), vous pouvez explicitement désactiver un travail en mettant son nom dans lejobs.deny
fichier.Depuis la page de manuel crontabs / run-parts :
la source
Si vous ne voulez pas non plus les user-crontabs, désactivez simplement crond dans votre liste de services.
Dans Debian et les versions basées sur Debian, il s'agit simplement de supprimer le lien symbolique du /etc/rcX.d approprié (pour le niveau d'exécution X).
Je ne sais pas comment vous gérez les services dans SUSE ou Gentoo.
la source