Deaktivieren Sie die Option zum Entfernen von crontab in der CLI

13

Wie deaktiviere ich beispielsweise einen bestimmten Befehl crontab -r?

Es ist mir schon zweimal passiert, dass ich das versehentlich ausgeführt habe, weil mein ESchlüssel neben dem RSchlüssel ist. Dieser kleine Tippfehler ist genug und Ihre Crontab ist weg.

user66638
quelle
2
Vergessen Sie nicht, wichtige Dateien zu sichern!
wjandrea
Sicher, ich habe @daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638
Ein Quellcode-Revisionskontrollsystem wie Mercurial oder Git kann sogar Skriptdateien verwalten und vor versehentlichem Ändern oder Löschen schützen. Sie benötigen nicht einmal ein Remote-Repository für eine der beiden. :-)
David Foerster

Antworten:

16

Verwenden Sie einen Wrapper um den crontabBefehl, zum Beispiel würde diese Funktion Folgendes tun:

crontab () { [[ $@ =~ -[iel]*r ]] && echo '"r" not allowed' || command crontab "$@" ;}

Diese Funktion prüft, ob -rdas Argument von crontab; Wenn ja, wird die Meldung beendet "r" not allowed, andernfalls wird der Befehl ausgeführt.

Legen Sie es in Ihr ~/.bashrc, um es nach der Initialisierung aller interaktiven bashSitzungen zu laden .

heemayl
quelle
27

Ich schlage vor, dass Sie einschließen

alias crontab="crontab -i"

in Ihrer ~/.bashrcDatei (vor dem Testen eine neue Shell starten!)

Dies bedeutet, dass Sie jedes Mal, wenn Sie crontab ausführen, die Option "-i" auswählen. Wenn Sie jetzt den crontab -rBefehl crontab -ireingeben , wird er bei ausgeführt , was vor dem Entfernen der crontab-Datei dazu auffordert:

nick@serv2:~$ crontab -r
crontab: really delete nick's crontab? (y/n) n
Nick Sillito
quelle