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.


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 .


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.