Отключить опцию удаления crontab в CLI

13

Например, как отключить определенную команду crontab -r?

Со мной уже дважды случалось, что я случайно запускаю это, потому что мой Eключ находится рядом с Rключом. Этой маленькой опечатки достаточно, и ваш crontab ушел.

user66638
источник
2
Не забудьте сделать резервные копии важных файлов!
17
Конечно, у меня есть @daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638
Система контроля версий исходного кода, такая как Mercurial или Git, была бы даже для управления файлами сценариев и защиты от случайного изменения или удаления. Вам даже не нужен удаленный репозиторий ни для одного из двух. :-)
Дэвид Фёрстер

Ответы:

16

Используйте обертку вокруг crontabкоманды, например, эта функция будет делать:

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

Эта функция проверяет, -rсуществует ли в аргументе crontab; если это так, завершается с сообщением "r" not allowed, в противном случае выполняет команду.

Вставьте его в свой, ~/.bashrcчтобы загрузить его при инициализации всех интерактивных bashсеансов.

heemayl
источник
27

Я предлагаю вам включить

alias crontab="crontab -i"

в вашем ~/.bashrcфайле (запустите новую оболочку перед тестированием!)

Это означает, что каждый раз, когда вы запускаете crontab, вы всегда выбираете опцию «-i». Если вы сейчас дадите crontab -rкоманду, она обрабатывается по адресу crontab -ir, который запрашивает перед удалением файла crontab:

nick@serv2:~$ crontab -r
crontab: really delete nick's crontab? (y/n) n
Ник Силлито
источник