Désactiver l'option de suppression de crontab dans CLI

13

Comment désactiver une commande spécifique, par exemple crontab -r?

Il m'est déjà arrivé deux fois de le faire accidentellement, car ma Eclé est à côté de la Rclé. Cette petite faute de frappe suffit et votre crontab a disparu.

user66638
la source
2
N'oubliez pas de faire des sauvegardes de fichiers importants!
wjandrea
Bien sûr, j'ai @daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638
Un système de contrôle de révision du code source comme Mercurial ou Git serait même pour la gestion des fichiers de script et la protection contre toute altération ou suppression accidentelle. Vous n'avez même pas besoin d'un référentiel distant pour l'un ou l'autre. :-)
David Foerster

Réponses:

16

Utilisez un wrapper autour de la crontabcommande, par exemple, cette fonction ferait:

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

Cette fonction vérifie s'il -rexiste dans l'argument de crontab; si c'est le cas, quitte avec le message "r" not allowed, sinon exécute la commande.

Mettez-le dans votre ~/.bashrcpour le charger lors de l'initialisation de toutes les bashsessions interactives .

heemayl
la source
27

Je vous suggère d'inclure

alias crontab="crontab -i"

dans votre ~/.bashrcfichier (lancez un nouveau shell avant de tester!)

Cela signifie que chaque fois que vous exécutez crontab, vous sélectionnez toujours l'option "-i". Si vous donnez maintenant la crontab -rcommande, elle est traitée à crontab -ir, ce qui vous invite avant de supprimer le fichier crontab:

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