Wie entferne oder lösche ich einen einzelnen Cron-Job mit dem Linux-Befehl?

39

Ich habe für meine Site Cron-Jobs erstellt, die unten aufgeführt sind und einwandfrei funktionieren. Ich drucke alle Cronjobs mit diesem PHP-Skript:

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

Welche Ausgänge:

[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

Jetzt möchte ich einen einzelnen Cron-Job über den Befehl von meinem Server löschen oder entfernen. Zum Beispiel möchte ich den " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" Cron Job vom Server entfernen .

Ich habe versucht crontab -rBefehl, der alle Cron-Jobs von meinem Server entfernt, aber ich möchte bestimmte Cron-Jobs entfernen.

Können Sie mir bitte zur Lösung helfen?

Anumavu
quelle

Antworten:

61
  1. So fügen Sie einen Job zu crontab hinzu:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. So entfernen Sie einen Job von crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Alles von crontab entfernen:

    crontab -r
    

Nichts ist knifflig: -ist STDOUT unter Linux!

Greg Hanis
quelle
1
Greg: Willkommen bei Ask Ubuntu! ;-) Könnten Sie bitte meine Änderungen und auch die Bearbeitungshilfe überprüfen , um die Lesbarkeit Ihrer Antworten in Zukunft zu verbessern ... ;-)
Fabby
4
Bitte ersetzen Sie 1. Um einen Job zu crontab hinzuzufügen, verwenden Sie (crontab -u mobman -l 2> / dev / null; geben Sie "* / 5 * * * * perl /home/mobman/test.pl" aus) | crontab -u mobman - (Ref: stackoverflow.com/questions/4880290/… )
Yasiru G
1
@YasiruG Ich denke, crontab -l 2 > /dev/nullist nur notwendig, wenn Sie die Nachricht nicht sehen möchten, no crontab for <user>wenn es keinen vorhandenen Cron-Job gibt. Übrigens benötigen wir die Option nicht, -u mobmanwenn wir den Cron-Job für den aktuellen Benutzer hinzufügen möchten.
Taufe
21

Geben Sie an einer Root-Eingabeaufforderung Folgendes ein

crontab -e

Sie können nun die Datei bearbeiten und die zu entfernende Zeile entfernen. Sie können damit auch die crontab für Benutzer bearbeiten, wenn Sie die Aufforderung für diesen Benutzer haben.

Übrigens: Ich ziehe es vor, Cronjobs hinzuzufügen /etc/crontab. Scheint mir etwas flexibler.

Rinzwind
quelle
Dies scheint einfacher und sinnvoller zu sein als ein Skript-Assistent, aber ich wünschte, ich wäre mehr wie ein Assistent.
Jason Sebring
Ideal
7

View Users Cronjob

Verwenden Sie die folgende Syntax, um den Cronjob des waqleh-Benutzers anzuzeigen:

crontab -u waqleh -l

Root-Benutzer Cronjob anzeigen

Geben Sie einfach den folgenden Befehl ein:

crontab -l

Dies sollte den Inhalt des Crontab-Skripts auflisten.

View / etc / crontab

Ein Cronjob kann auch aus der Datei / etc / crontab ausgeführt werden. Geben Sie zum Anzeigen Folgendes ein:

less /etc/crontab

Entfernen Sie alle Cron-Jobs

Wenn und nur wenn Sie alle Cron-Jobs stoppen möchten, können Sie sie vollständig entfernen mit:

crontab -r

Dadurch wird die gesamte crontab-Datei entfernt. Seien Sie also vorsichtig, wenn dort andere Cron-Jobs aufgeführt sind!

Bestimmte Cron-Jobs entfernen

Öffnen Sie die Cron-Datei und löschen Sie die Cron, die Sie entfernen möchten

crontab -e

Jede Zeile repräsentiert einen Cron Job. Sie können alle Cron entfernen, indem Sie Strg + K verwenden, dann speichern und beenden

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

crontab -l listet die aktuellen Crontab-Jobs auf

grep -v eine Zeile filtern

crontab - fügt alle gedruckten Sachen in die crontab-Datei ein.

Diego D
quelle
0

Sie können crontabohne Argumente ausführen und die neue crontab über stdin füttern.

geirha
quelle
@qeirha .. Ich möchte bestimmte Cron-Jobs von meinem Server entfernen
anumavu
@anumavu, richtig, also lesen Sie es ein crontab -l, wie Sie es bereits getan haben, entfernen Sie den Job aus der Liste und schreiben Sie ihn zurück an crontab.
Geirha