Deshabilite la opción de eliminación de crontab en la CLI

13

¿Cómo desactivo un comando específico, por ejemplo crontab -r?

Ya me pasó dos veces que accidentalmente ejecuté eso, porque mi Eclave está al lado de la Rclave. Ese pequeño error tipográfico es suficiente y su crontab se ha ido.

usuario66638
fuente
2
¡No olvide hacer copias de seguridad de archivos importantes!
wjandrea
Claro, tengo @daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638
Un sistema de control de revisión de código fuente como Mercurial o Git sería incluso para administrar archivos de script y proteger contra la alteración o eliminación accidental. Ni siquiera necesita un repositorio remoto para ninguno de los dos. :-)
David Foerster

Respuestas:

16

Use un contenedor alrededor del crontabcomando, por ejemplo, esta función haría:

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

Esta función verifica si -rexiste en el argumento de crontab; si es así, sale con el mensaje "r" not allowed, de lo contrario ejecuta el comando.

Póngalo en su ~/.bashrcpara cargarlo al inicializar todas las bashsesiones interactivas .

heemayl
fuente
27

Sugiero que incluyas

alias crontab="crontab -i"

en su ~/.bashrcarchivo (¡comience un nuevo shell antes de probar!)

Esto significa que cada vez que ejecuta crontab, siempre selecciona la opción "-i". Si ahora da el crontab -rcomando, se procesa en crontab -ir, lo que solicita antes de eliminar el archivo crontab:

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