Jak usunąć lub usunąć zadanie pojedynczego crona za pomocą polecenia linux?

39

Stworzyłem zadania crona dla mojej witryny, która jest wymieniona poniżej i działają dobrze. Wydrukuję wszystkie zadania crona za pomocą tego skryptu PHP:

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

Które wyjścia:

[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

Teraz chcę usunąć lub usunąć pojedyncze zadanie cron z mojego serwera za pomocą polecenia. Na przykład chcę usunąć zadanie crona 0 0 * * * wget php -q http://www.example.com/event_reminder.phpz serwera.

Próbowałem crontab -rpolecenia, które usuwa wszystkie zadania cron z mojego serwera, ale chcę usunąć określone zadanie cron.

Czy możesz mi pomóc w rozwiązaniu problemu?

anumavu
źródło

Odpowiedzi:

61
  1. Aby dodać pracę do crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Aby usunąć zadanie z crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Usuń wszystko z crontab:

    crontab -r
    

Nic nie jest trudne: -STDOUT w Linuksie!

Greg Hanis
źródło
1
Greg: Witamy w Ask Ubuntu! ;-) Czy mógłbyś przejrzeć moje zmiany, a także przejrzeć pomoc dotyczącą edycji, aby poprawić czytelność twoich odpowiedzi w przyszłości ... ;-)
Fabby
4
Proszę zamienić 1. Aby dodać zadanie do crontab za pomocą (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * perl /home/mobman/test.pl") | crontab -u mobman - (ref: stackoverflow.com/questions/4880290/… )
Yasiru G
1
@YasiruG Myślę, że crontab -l 2 > /dev/nulljest to konieczne tylko wtedy, gdy nie chcesz widzieć wiadomości, no crontab for <user>jeśli nie istnieje żadne zadanie cron. Nawiasem mówiąc, nie potrzebujemy tej opcji, -u mobmanjeśli chcemy dodać zadanie cron dla bieżącego użytkownika.
baptx
21

Z głównego pytania wpisz

crontab -e

Możesz teraz edytować plik i usunąć linię, którą chcesz usunąć. Możesz także użyć tego do edycji crontab dla użytkowników, jeśli pojawi się monit dla tego użytkownika.

Przy okazji: wolę dodawać cronjobs do /etc/crontab. Wydaje mi się trochę bardziej elastyczny.

Rinzwind
źródło
Wydaje się to łatwiejsze i ma więcej sensu niż tworzenie skryptów, ale chciałbym być bardziej czarodziejem.
Jason Sebring
Idealne do ręcznych zmian, ale dla automatyzacji sprawdź powyższy skrypt -
AFP_555
7

Zobacz użytkowników Cronjob

Użyj poniższej składni, aby wyświetlić cronjob użytkownika waqleh:

crontab -u waqleh -l

Zobacz Cronjob użytkownika root

Wystarczy wpisać następujące polecenie:

crontab -l

Powinno to wyświetlić zawartość skryptu crontab.

Zobacz / etc / crontab

Cronjob można również uruchomić z pliku / etc / crontab. Aby go wyświetlić, wprowadź:

less /etc/crontab

Usuń wszystkie zadania crona

Jeśli i tylko jeśli chcesz zatrzymać wszystkie zadania crona, możesz je całkowicie usunąć za pomocą:

crontab -r

Spowoduje to usunięcie całego pliku crontab, więc bądź ostrożny, jeśli masz tam inne zadania cron!

Usuń określone zadania CRON

Otwórz plik cron i usuń cron (s), które chcesz usunąć

crontab -e

każda linia reprezentuje zadanie cron. Możesz usunąć dowolny cron za pomocą ctrl + k, a następnie zapisać i wyjść

Waqleh
źródło
1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l wyświetla bieżące zadania crontab

grep -v odfiltruj jakąś linię

crontab - dodaje wszystkie wydrukowane rzeczy do pliku crontab.

Diego D.
źródło
0

Można uruchomić crontabbez argumentów i paszy nowy crontab za pośrednictwem standardowego wejścia.

geirha
źródło
@qeirha .. Chcę usunąć określone zadanie cron z mojego serwera
anumavu
@anumavu, tak, więc czytasz to za pomocą crontab -l, tak jak już to zrobiłeś, usuwasz zadanie z listy, a następnie zapisujesz je ponownie crontab.
geirha