Desativar a opção de remoção do crontab na CLI

13

Como desabilito um comando específico, por exemplo crontab -r?

Já me aconteceu duas vezes que eu acidentalmente corro isso, porque minha Echave está próxima à Rchave. Esse pequeno erro de digitação é suficiente e seu crontab se foi.

user66638
fonte
2
Não se esqueça de fazer backups de arquivos importantes!
Wjandrea
É claro que eu tenho @daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638
Um sistema de controle de revisão de código-fonte como Mercurial ou Git seria ainda para gerenciar arquivos de script e proteger contra alterações ou exclusões acidentais. Você nem precisa de um repositório remoto para nenhum dos dois. :-)
David Foerster

Respostas:

16

Use um wrapper ao redor do crontabcomando, por exemplo, esta função faria:

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

Esta função verifica se -rexiste no argumento de crontab; nesse caso, sai com a mensagem "r" not allowed; caso contrário, executa o comando.

Coloque-o ~/.bashrcpara carregá-lo após a inicialização de todas as bashsessões interativas .

heemail
fonte
27

Eu sugiro que você inclua

alias crontab="crontab -i"

no seu ~/.bashrcarquivo (inicie um novo shell antes de testar!)

Isso significa que toda vez que você executa o crontab, sempre seleciona a opção "-i". Se você agora der o crontab -rcomando, ele será processado em crontab -ir, o que solicitará antes de remover o arquivo crontab:

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