Como remover ou excluir um único trabalho cron usando o comando linux?

40

Eu criei trabalhos cron para o meu site, que está listado abaixo e eles estão funcionando bem. Imprimo todo o trabalho cron usando este script PHP:

$cronfiles=exec('crontab -l',$output);
echo "<pre>";
print_r($output);

Quais saídas:

[0] => 0 0 * * * wget php -q http://www.example.com/report_send.php
[1] => 0 0 * * * wget php -q http://www.example.com/event_reminder.php
[2] => 0 0 * * * wget php -q http://www.example.com/user_reminder.php
[3] => * * * * * wget php -q http://www.example.com/cleardata.php

Agora eu quero excluir ou remover um único trabalho cron do meu servidor através do comando Por exemplo, eu quero remover a tarefa " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" cron do servidor.

Eu tentei o crontab -rcomando que remove todo o trabalho cron do meu servidor, mas eu quero remover um trabalho cron específico.

Você pode me ajudar por uma solução?

anumavu
fonte

Respostas:

61
  1. Para adicionar um trabalho ao crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Para remover um trabalho do crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Remova tudo do crontab:

    crontab -r
    

Nada é complicado: o -STDOUT no Linux!

Greg Hanis
fonte
11
Greg: Bem-vindo ao Ask Ubuntu! ;-) Poderia, por favor rever minhas edições e também rever a ajuda edição para melhorar a legibilidade de suas respostas no futuro ... ;-)
Fabby
4
Substitua 1. Para adicionar um trabalho ao crontab por (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | Agora você pode usar o crontab -u mobman - (ref: stackoverflow.com/questions/4880290/… )
Yasiru G
11
@YasiruG Eu acho que crontab -l 2 > /dev/nullé necessário apenas se você não quiser ver a mensagem no crontab for <user>se não houver um trabalho cron existente. A propósito, não precisamos da opção -u mobmanse queremos adicionar o trabalho cron para o usuário atual.
baptx
22

Em um tipo de prompt raiz

crontab -e

Agora você pode editar o arquivo e remover a linha que deseja remover. Você também pode usar isso para editar o crontab para usuários, se você tiver o prompt para esse usuário.

A propósito: eu prefiro adicionar cronjobs a /etc/crontab. Parece um pouco mais flexível para mim.

Rinzwind
fonte
Isso parece mais fácil e faz mais sentido do que a magia de script, mas eu gostaria de ter mais estilo de assistente.
Jason Sebring
Ótimo para alterações manuais, mas para automação, verifique o script acima -
AFP_555
7

Ver usuários Cronjob

Use a seguinte sintaxe para visualizar o cronjob do usuário waqleh :

crontab -u waqleh -l

Exibir Cronjob de usuário raiz

Basta digitar o seguinte comando:

crontab -l

Isso deve listar o conteúdo do script crontab.

Veja / etc / crontab

Um cronjob também pode ser executado no arquivo / etc / crontab. Para visualizá-lo, digite:

less /etc/crontab

Remova todas as tarefas cron

Se e somente se você quiser interromper todos os trabalhos cron, poderá removê-los completamente com:

crontab -r

Isso remove o arquivo crontab inteiro; portanto, tenha cuidado se houver outros trabalhos cron listados lá!

Remover tarefas cron específicas

Abra o arquivo cron e exclua os cron que você deseja remover

crontab -e

cada linha representa um trabalho cron. Você pode remover qualquer cron usando ctrl + k, em seguida, salve e saia

Waqleh
fonte
1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l lista os trabalhos atuais do crontab

grep -v filtrar alguma linha

crontab - adiciona todo o material impresso ao arquivo crontab.

Diego D
fonte
0

Você pode executar crontabsem argumentos e alimentar o novo crontab via stdin.

Geirha
fonte
@qeirha .. Eu quero remover a tarefa cron específicas do meu servidor
anumavu
@anumavu, certo, então você o lê crontab -l, como já fez, remove o trabalho da lista e depois escreve-o novamente crontab.
precisa saber é