Existem duas maneiras de editar uma crontab
:
interativamente, usando crontab -e
, que abrirá o crontab
no editor especificado por $VISUAL
ou $EDITOR
, ou
de forma não interativa, usando crontab crontab.txt
, que simplesmente importará as crontab
entradas do arquivo crontab.txt
, substituindo o crontab ativo existente para o usuário atual.
O problema que você tem é que você está simplesmente usando o crontab
comando errado.
O seguinte diz respeito à manipulação não interativa de crontab:
Portanto, para remover tarefas específicas programaticamente, você pode fazer algo como
$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt
onde PATTERN
é uma expressão regular que corresponderá às tarefas que você deseja remover. Aqui, crontab -l
você fornecerá seu atual crontab
.
Ou, se você tiver entradas em um arquivo chamado crontab-fragment.txt
que deseja remover do crontab ativo,
$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt
Isso lê o crontab atual e filtra (remove) qualquer linha que também ocorra no arquivo crontab-fragment.txt
no diretório atual (usando uma comparação de cadeias de linhas completas). O resultado é salvo crontab.txt
e carregado a partir daí para substituir o crontab atual.
Para adicionar uma ou várias tarefas , faça algo como
$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt
Isso pressupõe que o arquivo crontab-fragment.txt
contenha as entradas que você deseja adicionar. Ele lê o crontab atual, acrescenta as entradas de crontab-fragment.txt
para isso e cria crontab.txt
. O crontab.txt
arquivo substitui o crontab atual.