Wie deaktiviere ich vorübergehend den Cron-Job eines oder mehrerer Benutzer? Insbesondere möchte ich die Cron-Rechte des Benutzers nicht aussetzen - lediglich keine seiner Jobs entlassen.
Ich arbeite mit SLES 11 SP2- und SP3-Systemen
Wie deaktiviere ich vorübergehend den Cron-Job eines oder mehrerer Benutzer? Insbesondere möchte ich die Cron-Rechte des Benutzers nicht aussetzen - lediglich keine seiner Jobs entlassen.
Ich arbeite mit SLES 11 SP2- und SP3-Systemen
Antworten:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
sollte den Trick machen. Wiederherstellen mit chmod 600
und touch
(Sie müssen die Zeit der Datei ändern, damit cron sie erneut lädt).
Zumindest bei Debian und wahrscheinlich bei Vixie cron im Allgemeinen ist dies chmod 400 /var/spool/cron/crontabs/$username
ebenfalls der Trick, da diese Implementierung darauf besteht, dass die Berechtigungen genau 600 betragen. Dies dauert jedoch nur so lange, bis der Benutzer den crontab
Befehl ausführt.
Wenn Sie einen robusten Weg suchen, gibt es meines Erachtens nichts Besseres, als die Crontab vorübergehend aus dem Weg zu räumen oder die Berechtigungen zu ändern und sie vorübergehend hinzuzufügen /etc/cron.deny
.
chmod
.
touch $username
nach dem hinzugefügt chmod
. Aber das hat nicht geholfen. (Übrigens hast du Recht cron.deny
)
chgrp root /var/spool/cron/crontabs
Wie wäre es mit so etwas, um einen Benutzer crontab zu deaktivieren:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
und wieder aktivieren:
crontab -u [username] /tmp/[username].cron.tmp
Dies hat den zusätzlichen Vorteil, dass Sie es als dieser Benutzer ausführen können, ohne root zu benötigen (entfernen Sie einfach den Parameter -u).
Wenn Sie Debian verwenden, gilt dies nur für Debian AFAIK :
Sie können dies tun, indem Sie dem Namen des Cronjobs einen Punkt hinzufügen.
Auf das Verhalten wird in den offiziellen Debian-Dokumenten verwiesen:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
Ein Cron-Job-Dateiname darf keine Punkte oder Pluszeichen (. Oder +) enthalten, da dies dazu führt, dass Cron die Datei ignoriert. Anstelle von sollten Unterstriche (_) verwendet werden. und + Zeichen.
Wenn Sie nur alle cron
Jobs für eine Weile vollständig stoppen möchten, z. B. während der Systemwartung, mit der sie möglicherweise schlecht interagieren, sind die Befehle normalerweise
systemctl stop crond.service
und wieder aufzunehmen
systemctl start crond.service
Ich nehme an, Sie benötigen Root- oder Wheel-Berechtigungen, um diese auszuführen. Führen Sie sie bei Bedarf über sudo aus oder melden Sie sich als root an (letzter Ausweg).
Overkill für die spezifische gestellte Frage, bietet aber "One-Stop-Shopping" und erfordert kein Spielen mit dem Dateisystem oder temporären Dateien.
Ich stimme zu, der Weg über systemctl ist derjenige, den man nehmen muss. Auf Himbeere wären Zehenbefehle
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
Dienst. Das OP wollte in der Lage sein, die Crontabs der Benutzer zu deaktivieren.
-u user
diecrontab
Befehlsschaltfläche verwenden und#
den Jobs ein Kommentarzeichen voranstellen, um sie für den angegebenen Benutzer zu deaktivieren?