Auf verschiedenen Systemen, die ich verwalte, gibt es Cron-Skripte, die über das häufig verwendete /etc/cron.{hourly,daily,weekly}
Layout ausgeführt werden. Ich möchte wissen, ob es eine übliche Funktion zum Deaktivieren dieses Skripts gibt.
Wenn Sie etwas aus einem bestimmten Verzeichnis löschen, wird es natürlich deaktiviert, aber ich suche nach einer dauerhafteren Lösung. Das Löschen /etc/cron.daily/slocate
wird funktionieren, um die nächtliche Deaktivierung updatedb
auf meinem Heimcomputer (auf dem ich sie nie verwende slocate
) zu verhindern. Wenn ich das Paket slocate das nächste Mal aktualisiere, bin ich mir ziemlich sicher, dass es wieder angezeigt wird.
Die beiden Distributionen, an denen ich am meisten interessiert bin, sind Gentoo und OpenSUSE, aber ich hoffe, dass es einen weithin implementierten Mechanismus gibt. Beide Distributionen, wie ich sie habe, verwenden Vixie-Cron (nicht sicher, ob es wichtig ist).
quelle
chattr +i scriptname
nach demchmod
.lsattr
- um das Unheimliche zu entfernen (es listet die Attribute einer Datei auf).run-parts führt keine Jobs aus, deren Name einen Punkt enthält
werde den Trick machen.
quelle
In der Regel
cron.daily
wird über/etc/crontab
eine Zeile wie zrun-parts --report /etc/cron.daily
man run-parts
gibt Ihnen die Optionen.run-parts --test /etc/cron.daily
Zeigt an, welche Jobs ausgeführt werden, ohne dass sie ausgeführt werden.Ich bevorzuge es, ein Unterverzeichnis "Deaktiviert" zu erstellen und meine Jobs dorthin zu verschieben.
Wenn Sie ein Paket aktualisieren, wird der Job wahrscheinlich erneut ausgeführt oder die entfernten 'x'-Bits werden wiederhergestellt
quelle
Sie können slocate package entfernen, wenn Sie es nie verwenden.
quelle
Wenn Sie cfengine ( https://cfengine.com/ ) verwenden, können Sie dies mit disable tun. Sie schreiben einfach eine Versprechen-Datei für eine Gruppe von Hosts und diese wird beim nächsten cfagent-Lauf automatisch angewendet. Dies mit einer Marionette, einem Koch oder was auch immer zu tun, sollte auch ganz einfach sein.
quelle
Das /etc/cron.daily et. al. Skripte werden von einem Skript namens run-parts ausgeführt. Das Skript variiert. Zum Beispiel ist der oben erwähnte Schalter --test nicht auf dem Rechner, den ich gerade benutze.
Run-Parts ist ein Bash-Skript. Es ist ein allgemein nützliches Tool zum Ausführen aller Skripte in dem Verzeichnis, das als Argument angegeben ist. Es befindet sich normalerweise unter / usr / bin / run-parts.
Es hat ein Gewirr an Logik, um zu entscheiden, was ausgeführt werden soll. Dieser Code enthält die Antwort auf Ihre Frage, variiert aber auch. Sie müssen also den Code lesen, um sicher zu sein.
In der hier betrachteten Version gibt es eine Logik, die bei der Arbeit mit dem Verzeichnis <foo> nach <foo> /jobs.deny sucht. Wenn dies der Fall ist, wird die Ausführung von Skripten, die in dieser Datei erwähnt werden, allein in einer Zeile abgelehnt. Vorausgesetzt, Sie haben diese Funktionalität, ist sie fantastisch, da sie weiterhin funktioniert, wenn das zu installierende Paket installiert oder aktualisiert wird.
quelle
Wenn Sie sich mit RHEL und Derivaten (die das
crontabs
Paket bereitstellen ) befassen , können Sie einen Job explizit deaktivieren, indem Sie seinen Namen in diejobs.deny
Datei einfügen.Aus der Manpage crontabs / run-parts :
quelle
Wenn Sie die Benutzer-Crontabs auch nicht wollen, deaktivieren Sie crond einfach in Ihrer Service-Liste.
In Debian und Versionen, die auf Debian basieren, müssen Sie lediglich den Symlink von der entsprechenden Datei /etc/rcX.d (für Runlevel X) entfernen.
Ich weiß nicht, wie Sie mit Diensten in SUSE oder Gentoo umgehen.
quelle