Wie stoppe ich einen gerade laufenden Cron Job?

45

Wie kann ich einen Cron-Job stoppen, der gerade ausgeführt wird?

nhinkle
quelle
2
Die folgenden drei Antworten interpretieren diese Frage auf drei Arten. @GURU, könnten Sie bitte klarstellen, was Sie tun möchten? Möchten Sie einen Prozess beenden, der von Cron gestartet wurde, der gerade ausgeführt wird, oder möchten Sie die Ausführung des Jobs in Zukunft verhindern?
Crawfordor

Antworten:

29

Sie können dies genauso tun, wie Sie jeden Prozess stoppen würden.

cronSie haben folgende Möglichkeiten, um einen aktuell ausgeführten Job zu stoppen :

pkill process-name

oder wenn Sie die PID kennen (Sie können sie durch Ausführen ermitteln ps):

kill 1234

(Ersetzen der tatsächlichen PID)

Dennis Williamson
quelle
1
wie liste ich die aktuell laufenden cron jobs auf?
UWU_SANDUN
5
@UWU_SANDUN: Sie können pgrepoder grepdie Ausgabe von verwenden ps. Ein Prozess, von dem aus er ausgeführt wird, hat nichts Besonderes cron. Sie würden nur unter einem eigenen Namen nach dem Prozess suchen. Sie können auch tun, ps fauxww | grep -A 1 '[C]RON'und Zeilen unterhalb der Zeile (n) zeigen Jobs an, die von ausgeführt werden cron. Sie können die Zahl 1 höher einstellen, um ggf. Unterprozesse anzuzeigen.
Dennis Williamson
Beachten Sie, dass Sie cygwin als Administrator ausführen müssen, um Prozesse abzubrechen. Weitere Informationen dazu finden Sie hier .
takanuva15
Mit Ubuntu ich getippt , was @ takanuva15 vorgeschlagen, ps fauxww | grep -A 1 '[C]RON'. Hier werden die aktuellen Cron-Jobs aufgelistet, die ausgeführt werden. Anschließend können Sie die PID notieren und ausführen # kill -9 PID. Vielen Dank!
Russellhoff
@russellhoff: -9sollte nur als letzter Ausweg verwendet werden, da dadurch verhindert wird, dass der Prozess beim Beenden bereinigt wird.
Dennis Williamson
17

So beenden Sie die Ausführung von cron job. Rufen Sie zunächst die Prozess-ID Ihres Befehls mit ab

top -p $(pgrep -d',' your_command)

z.B:-

top -p $(pgrep -d',' httpd)

und Renn

kill PIDdurch PIDProzess-ID ersetzen

Miqdad Ali
quelle
14

Seltsamerweise hat niemand diese Methode erwähnt:

$ crontab -e

Löschen Sie im geöffneten Editor die Zeile der Aufgabe, die Sie stoppen möchten, oder fügen Sie ein #Zeichen ein, speichern Sie und beenden Sie sie

z.B

Vor

* * * * * some_script1
* * * * * some_script2

nach

* * * * * some_script1
#* * * * * some_script2

oder

* * * * * some_script1

Starten Sie den Dienst neu, nachdem Sie Änderungen von vorgenommen haben

sudo service cron reload
laike9m
quelle
16
Dadurch wird ein momentan ausgeführter Cron-Job nicht gestoppt, sondern es werden zukünftige Cron-Jobs gestoppt, die von Cron gestartet werden.
Ivan
10

Wenn Sie Redhat (RHEL) / Fedora Core / Cent OS Linux verwenden, verwenden Sie den folgenden Befehl:

/etc/init.d/crond stop

Wenn Sie Debian oder Ubuntu Linux verwenden, geben Sie den folgenden Befehl ein:

/etc/init.d/cron stop

PS: Sie sollten root sein, um diese Dinge zu tun

Sen
quelle
2
Ich denke, es stoppt alle Cron. Um bestimmte Cron zu stoppen, kann ich den Befehl kennen
können Sie uns einen Befehl vorschlagen sen
Ich denke nicht, dass es auf direktem Wege möglich ist. Vielleicht sollten wir einen Hack machen.
Sen
3

Sie können die Cron-Tabelle bearbeiten und die betreffende Aufgabe auskommentieren. Wechseln Sie zu dem Benutzer, der die Aufgabe steuert, exportieren Sie den gewünschten Editor in die Umgebung und verwenden Sie dann crontab -l:

$ su - root
...
# EDITOR=vi; export EDITOR
# crontab -l
mfe
quelle
1
Das listet die Crontab auf. Verwenden Sie crontab -ezu bearbeiten es. Für Systeme, die es haben, ist es vorzuziehen, sudoanstelle von zu verwenden su. Auch crontab -ewürde für den Benutzer (oder root) Crontab arbeiten, aber nicht das System Crontab (zB /etc/cron*).
Dennis Williamson
1

crontab -r

würde alle Crontabs entfernen, die ausgeführt werden, oder Sie können einfach die Befehle in der Crontab kommentieren, die gestoppt werden müssen.

Halbmond
quelle
0

Überprüfen Sie zunächst den Arbeitsprozess mit diesem Befehl.

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

Die Ausgabe dieses Befehls ist

599  599 cron
4288  599 \_ CRON

und jetzt beenden Sie den Prozess mit diesem Befehl

pkill -s 4288
aemre
quelle
0

Ich arbeite für Linux

pkill -9 crontab

Beendet alle Prozesse mit dem Prozessnamen crontab

Sayka
quelle