Wie kann ich aktuelle Crontab-Aufgaben sehen / stoppen?

20
  1. Wie kann ich Crontab-Aufgaben sehen, die gerade ausgeführt werden?
  2. Wie kann ich Crontab-Aufgaben, die gerade ausgeführt werden, manuell stoppen ?

Ist [diese] Frage zu den aktuell ausgeführten Cron-Prozessen?

Ja

Um einen Prozess manuell abzubrechen, müssen Sie pkill verwenden

Ich hatte über pkill / killall nachgedacht, aber einige meiner Befehle in der crontab-Datei sind jeweils! es bedeutet, dass nach Beendigung eines Befehls der nächste gestartet wird! beispielsweise:

sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now

Also, wenn ich töte wget, wird der Computer ausgeschaltet !!! -> Ich möchte einen Cron-Task vollständig töten, nicht einen Teil davon!

Das nächste pkillProblem: Was ist mit Skripten? (Ich habe einige Bash-Skripte importiert crontab -e) ->sudo pkill ???

Mini
quelle
Haben Sie eine Frage zu den aktuell ausgeführten Cron-Prozessen? oder die Liste der Cronjobs? Bitte bearbeiten Sie Ihre Frage, um diesbezüglich mehr Klarheit zu erhalten. Um den laufenden Cron-Job zu stoppen, gehen Sie ( askubuntu.com/q/272419/66980 )
Mohammad Etemaddar
Bearbeitet; 1. ja, gerade laufende cron-prozesse beobachten? (Ich möchte Prozesse in den Vordergrund stellen); 2. Dann möchte ich es manuell stoppen ?! (nicht vom Crontab-Zeitplan)
Mini
Sie können Ihrer Frage am besten zusätzliche Informationen hinzufügen, indem Sie sie mit der Schaltfläche " Bearbeiten" bearbeiten . Auf diese Weise ist es besser sichtbar, und Kommentare dienen hauptsächlich sekundären, vorübergehenden Zwecken. Kommentare werden unter verschiedenen Umständen entfernt. Alles, was für Ihre Frage wichtig ist, sollte in der Frage selbst enthalten sein.
guntbert

Antworten:

42

Verwenden Sie in crontab nur einen Befehl pro Zeile. Ändern Sie diese Crontab-Linie:

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

so sieht es aus:

00 10 * * * /path/to/my/crontab/script1.sh

und erstelle /path/to/my/crontab/script1.shmit diesem Inhalt:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

Vergessen Sie natürlich nicht, ihm die Ausführungserlaubnis zu geben:

chmod +x /path/to/my/crontab/script1.sh

Zweitens können Sie sehen, wie Crontab-Tasks in einem nützlichen und lesbaren Format ausgeführt werden, und zwar in der Ausgabe von:

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

Sie erscheinen in den ersten Zeilen in etwa so:

1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290  4289         \_ /bin/bash /path/to/my/crontab/script1.sh
4295  4289             \_ /usr/bin/wget LINK

Die erste Spalte enthält die PID, die zweite die Sitzungs-ID und die dritte den von cron gestarteten Befehl. Sie können alle Prozesse, die mit einer bestimmten Cron-Aufgabe zusammenhängen, mithilfe der Sitzungs-ID beenden. Im obigen Beispiel sollten Sie daher die Sitzungs-ID 4289 beenden:

pkill -s 4289
Eric Carvalho
quelle
1
Das bekomme ich, wenn ich den Befehl "Crontab-Tasks ausführen" sh ps: cmd: keyword not found ps: illegal argument: afx
ausführe
gibt cron also keine "handliche" möglichkeit, seine prozesse zu zeigen?
Cirelli94
@alecrust: Versuchen Sie dies ps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush
0

Einen Prozess manuell abzubrechen ist eine Möglichkeit pkill. pkill stoppt alle Prozesse, deren Name das folgende Muster enthält. Um beispielsweise alle wget-Prozesse zu stoppen, verwenden Sie:

sudo pkill wget
Mohammad Etemaddar
quelle
Ich hatte über pkill / killall nachgedacht, aber einige meiner Befehle in der crontab-Datei sind jeweils! es bedeutet, dass nach Beendigung eines Befehls der nächste gestartet wird! Zum Beispiel: sudo crontab -e=> 00 10 * * * /usr/bin/wget LINK ; shutdown -h now=> Also, wenn ich wget töte , wird der Computer ausgeschaltet !!! -> Ich möchte einen Cron-Task vollständig töten, nicht einen Teil davon! das nächste pkill Problem: Was ist mit Skripten? (Ich habe einige Bash-Skripte importiert crontab -e) ->sudo pkill ???
Mini
0

Ändere deinen Cronjob so

00 10 * * * /usr/bin/wget LINK && shutdown -h now

Dies sollte funktionieren, da dies &&bedeutet, dass der zweite Befehl erst ausgeführt wird, wenn der erste korrekt beendet wurde (Status 0 an die Konsole / das System zurückgeben), was nicht der Fall sein sollte (weil der Prozess vom Benutzer und beendet wurde es sollte einen anderen Wert als 0) zurückgeben.

s1mmel
quelle