32 votes

Désactiver de manière robuste certains cron.{heures, jours, semaines} script.

Sur les différents systèmes que j'administre, il y a des cron scripts qui sont exécutés via l'utilitaire communément appelé /etc/cron.{hourly,daily,weekly} disposition. Ce que je veux savoir, c'est s'il existe une fonctionnalité commune de "désactivation de ce script".

De toute évidence, il suffit de supprimer un élément d'un répertoire donné pour le désactiver, mais je cherche une solution plus permanente. Suppression de /etc/cron.daily/slocate fonctionnera pour désactiver le programme nocturne updatedb sur mon ordinateur personnel (où je n'utilise jamais slocate ), mais la prochaine fois que je mettrai à jour 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 telles que je les ai utilisées utilisent vixie-cron (je ne suis pas sûr que cela soit important).

53voto

jason saldo Points 5036

Vous devez être capable de chmod -x scriptname pour désactiver un script mais laisser le fichier en place.

7 votes

Cela peut être annulé ou non par le système de gestion des paquets. Vous pourriez rendre cela plus robuste en faisant chattr +i scriptname après la chmod .

0 votes

@mc0e merci de m'avoir appris l'existence des fichiers immuables, mais comme l'a dit quelqu'un ils sont effrayant . Si jamais j'oubliais ce que j'ai fait, cela pourrait entraîner des problèmes très frustrants.

2 votes

@JonathanY. : C'est ce que lsattr est de - supprimer le effrayant (il énumère les atteibutes d'un fichier).

18voto

chrisv Points 259

Run-parts n'exécute pas les travaux dont le nom contient un point, donc

mv /etc/cron.d/job /etc/cron.d/job.disabled

fera l'affaire.

1 votes

Malheureusement, cela posera le même problème lors de la mise à jour du programme - il vérifiera si la tâche cron existe, et comme elle n'existe pas sous son nom d'origine, elle sera recréée.

3 votes

Le fait de revenir lors de la mise à jour du programme est un effet secondaire de l'outil de paquetage utilisé, ne peut être corrigé par des moyens simples et n'est pas la faute de Cron. Certains systèmes de paquets détruisent les fichiers précédents, d'autres font la différence entre les nouveaux et les anciens, et vous invitent à vérifier s'il y a des changements. Quoi qu'il en soit, les mises à jour qui produisent des comportements inattendus devraient être une partie frustrante, mais routinière de l'administration des systèmes Unix à ce stade. Il y a tout simplement trop de paquets qui évoluent trop rapidement pour que l'on puisse examiner régulièrement l'impact de tous les changements sur chaque environnement individuel.

0 votes

Dans Debian, il existe une notion de détournement de dossier - c'est-à-dire que vous pouvez effectivement renommer le fichier alors qu'il est toujours géré par le gestionnaire de paquets. Peut-être qu'un mécanisme similaire existe dans Gentoo et/ou SUSE ?

12voto

Miscreant Points 101

Habituellement cron.daily est invoqué via /etc/crontab par une ligne comme par exemple

run-parts --report /etc/cron.daily

man run-parts vous donne les options.

run-parts --test /etc/cron.daily montre les travaux qui sont exécutés sans les exécuter.

Je préfère créer un sous-répertoire 'Disabled' et y déplacer mes travaux.

Dans tous les cas, si vous mettez à jour un paquet, il est probable que le travail se remette en place ou que les éléments supprimés soient restaurés.

1voto

Unkcp Points 41

Vous pouvez supprimer le paquet slocate si vous ne l'utilisez jamais.

0 votes

Ce n'était qu'un exemple, mais c'est un bon conseil, merci. (Je pensais que quelque chose pouvait dépendre de slocate, mais rien ne semble le faire).

0 votes

Supprimez slocate et installez mlocate à la place. C'est beaucoup mieux.

1voto

JatSing Points 511

Si vous utilisez cfengine ( https://cfengine.com/ ), vous pourriez le faire en désactivant. Il suffit d'écrire un fichier de promesses pour un groupe d'hôtes et il s'appliquera lors de la prochaine exécution de cfagent. Faire cela avec Puppet ou chef ou autre devrait également être assez simple.

0 votes

Intéressant. Je n'ai rencontré les outils de gestion de la configuration que de manière très indirecte. Je cherchais une solution générale du type "j'ai un système arbitraire de type Unix".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X