Wyłącz opcję usuwania crontab w CLI

13

Jak na przykład wyłączyć określone polecenie crontab -r?

Zdarzyło mi się już dwa razy, że przypadkowo go uruchomiłem, ponieważ mój Eklucz jest obok Rklucza. Wystarczy ta mała literówka, a twojego crontab już nie ma.

user66638
źródło
2
Nie zapomnij wykonać kopii zapasowych ważnych plików!
wjandrea,
Jasne, mam @daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638 12.01.17
System kontroli wersji kodu źródłowego, taki jak Mercurial lub Git, służyłby nawet do zarządzania plikami skryptów i ochrony przed przypadkową zmianą lub usunięciem. Nie potrzebujesz nawet zdalnego repozytorium dla obu z nich. :-)
David Foerster,

Odpowiedzi:

16

Użyj opakowania wokół crontabpolecenia, na przykład ta funkcja wykona:

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

Ta funkcja sprawdza, czy -ristnieje w argumencie crontab; jeśli tak, kończy działanie z komunikatem "r" not allowed, w przeciwnym razie wykonuje polecenie.

Umieść go w swoim, ~/.bashrcaby załadować go po zainicjowaniu wszystkich interaktywnych bashsesji.

heemayl
źródło
27

Sugeruję uwzględnienie

alias crontab="crontab -i"

w twoim ~/.bashrcpliku (uruchom nową powłokę przed testowaniem!)

Oznacza to, że za każdym razem, gdy uruchamiasz crontab, zawsze wybierasz opcję „-i”. Jeśli wydasz teraz crontab -rpolecenie, zostanie ono przetworzone o crontab -ir, co spowoduje wyświetlenie monitu przed usunięciem pliku crontab:

nick@serv2:~$ crontab -r
crontab: really delete nick's crontab? (y/n) n
Nick Sillito
źródło