Estou usando o crontab pela primeira vez. Deseja escrever algumas tarefas cron de teste muito simples e executá-las.
$crontab * * * * * echo "Hi"
não produz nada.
crontab */1 * * * * echo "hi"
diz */1: No such file or directory
.
Além disso, como faço para listar as tarefas cron atualmente em execução (não apenas as que possuo, mas as iniciadas por outros usuários, como root).
E como eu excluo uma tarefa cron específica?
cron
administration
xyz
fonte
fonte
Respostas:
Você não pode usar
crontab
assim. Useman crontab
para ler sobre a maneira correta de chamar este utilitário.Você deseja usar
crontab -e
para editar as entradas cron do usuário atual (você pode adicionar / modificar / remover linhas). Usecrontab -l
para ver a lista atual de tarefas configuradas.Quanto à visualização das crontabs de outros usuários, isso não é possível sem ser root nas instalações padrão. Consulte Como listar todos os trabalhos do cron para todos os usuários para obter algumas maneiras de listar tudo (como raiz).
Nota: tenha muito cuidado ao usar caracteres globbing do shell na linha de comando (
*
e?
especialmente).*
será expandido para a lista de arquivos no diretório atual, o que pode ter efeitos inesperados. Se você deseja passar*
como argumento para algo, cite-o ('*'
).fonte
mail
a partir da linha de comando deve acessar sua caixa de correio local, se configurado.) Para ver o 'oi' em ambiente gráfico, você pode definir a tarefa como:* * * * * export DISPLAY=:0; xmessage 'hi'
.Existem duas maneiras de editar uma
crontab
:interativamente, usando
crontab -e
, que abrirá ocrontab
no editor especificado por$VISUAL
ou$EDITOR
, oude forma não interativa, usando
crontab crontab.txt
, que simplesmente importará ascrontab
entradas do arquivocrontab.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
onde
PATTERN
é uma expressão regular que corresponderá às tarefas que você deseja remover. Aqui,crontab -l
você fornecerá seu atualcrontab
.Ou, se você tiver entradas em um arquivo chamado
crontab-fragment.txt
que deseja remover do crontab ativo,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 é salvocrontab.txt
e carregado a partir daí para substituir o crontab atual.Para adicionar uma ou várias tarefas , faça algo como
Isso pressupõe que o arquivo
crontab-fragment.txt
contenha as entradas que você deseja adicionar. Ele lê o crontab atual, acrescenta as entradas decrontab-fragment.txt
para isso e criacrontab.txt
. Ocrontab.txt
arquivo substitui o crontab atual.fonte
Se você deseja modificar o crontab interativamente, execute o comando
crontab -e
, sem nenhuma outra opção. Isso iniciará um editor em uma cópia do crontab; Quando você sair do editor , a cópia editada se tornará o novo crontab. Você pode controlar qual editor é iniciado pelas variáveis de ambienteVISUAL
eEDITOR
. Para listar seu crontab, executecrontab -l
.Se você deseja modificar o crontab em um script, defina
VISUAL
eEDITOR
no caminho para um script ou para um snippet de shell que modifique o arquivo fornecido no local. O editored
é uma possibilidade aqui, oused -i
se a sua implementaçãosed
tiver essa opção. Se você deseja adicionar uma linha incondicionalmente, pode usarecho … >>
. Tome cuidado ao citar; em caso de dúvida, escreva um script e passe o nome do script comoEDITOR
.fonte
É um pouco tarde, mas para outros que procuram aqui. Existem maneiras mais fáceis do que manipular os fluxos de entrada / saída com
VISUAL
eEDITOR
.Você pode simplesmente escrever sua programação cron em um arquivo, 1 trabalho por linha, e usar o comando
crontab [filename]
para poder colocarcat
seus trabalhos emfilename
como parte do seu script e, finalmente, chamar o crontab no final, se quiser.na verdade, esse é o uso mais comum como
man crontab
dicas, listando-o primeirofonte
Se você deseja adicionar entradas ao
crontab
por automação ou a partir da linha de comando, você pode fazer (definir os horários que deseja ter)Então:
para recarregar os crontabs.
fonte
/var/spool/cron
. Uma maneira melhor seria através docrontab(1)
comando.Experimente com este comando:
adicione seu trabalho cron:
nesse arquivo.
fonte
Gostaria de destacar a maneira que descrevo abaixo, apesar de já ter sido mencionado antes em outro comentário. Achei extremamente útil ao adicionar as entradas a um arquivo e adicionar o arquivo ao crontab. Esse arquivo conteria as duas entradas abaixo e o nome do arquivo seria
hello-world-crontab.txt
.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
Em seguida, executei o comando abaixo para adicionar essas entradas ao crontab.
$ crontab hello-world-crontab.txt
O próximo passo é verificar se essas entradas foram adicionadas.
$ crontab -l
Uma breve explicação sobre o que cada entrada faz:
/home/user/greeting.txt
todos os dias às 9h.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
fonte