GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie überwacht oder beendet man einen Prozess, der von Cron gestartet wurde?

Ich habe einige Bots, die vom System-Scheduler in bestimmten Zeitintervallen ausgeführt werden. Aber manchmal muss ich diese Bots aufgrund eines logischen Fehlers manuell stoppen. Wie kann ich diese vom Scheduler ausgeführten Prozesse finden und beenden?

Akzeptierte Antwort:

Sie können Prozesse nach Namen beenden. Unter Linux, *BSD und Solaris beispielsweise pkill myprogram beendet alle Prozesse, deren Name myprogram enthält (verwenden Sie pkill '^myprogram$' für eine genaue Übereinstimmung). Wenn Sie es als Nicht-Root-Benutzer ausführen, werden nur die Prozesse dieses Benutzers beendet, und es gibt weitere Optionen zur Steuerung des Abgleichs (Einzelheiten finden Sie im Handbuch Ihres Systems).

Wenn Sie gezielt auf vom Scheduler gestartete Prozesse abzielen möchten und die Prozesse manuell beenden, können Sie ps f ausführen (nur Linux) oder pstree (nur Linux) oder ptree um die Prozesse in einem Baum anzuzeigen und zu sehen, welche Prozesse von cron gestartet wurden.

Wenn Sie diese Prozesse automatisch mit einer hausgemachten Methode beenden möchten, lassen Sie sie ihre Prozess-ID in einer Datei speichern. Diese Art von Datei wird als PID-Datei bezeichnet, wenn sie verwendet wird, um nur eine einzige Instanz des Prozesses auszuführen (was möglicherweise gewünscht ist oder nicht). Wenn Sie mehrere Instanzen wünschen, speichern Sie die PIDs in separaten Dateien in einem gemeinsamen Verzeichnis; Hier ist ein Shell-Snippet, das dies tut:

pid_dir=/var/run/myprogram # must have been created e.g. at boot time
myprogram &
pid_file=$pid_dir/$!.pid
touch "$pid_file"
wait
rm "$pid_file"

Eine bessere Lösung, wenn Sie strenge Kriterien haben, um außer Kontrolle geratene Prozesse zu erkennen, besteht darin, ein allgemeines Überwachungsprogramm zu verwenden oder in einfachen Fällen nur die Dauer der Ausführung des Prozesses zu begrenzen. Möglicherweise finden Sie diese Links hilfreich:

  • „Monit kann einen Prozess starten, wenn er nicht läuft, einen Prozess neu starten, wenn er nicht antwortet, und einen Prozess stoppen, wenn er zu viele Ressourcen verbraucht.“
  • Ich brauche Hilfe bei einem Cronjob, um nach außer Kontrolle geratenen Prozessen zu suchen und sie zu beenden
  • Wie schränke ich die Ressourcennutzung ein, um CPU+RAM für einen bestimmten Prozess zu sparen?
  • Gibt es eine Möglichkeit, die Speichermenge zu begrenzen, die ein bestimmter Prozess in Unix verwenden kann?
Siehe auch:Debian – Wo speichert Debian den Verlauf der Netzwerkkonnektivität?
Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. So beenden Sie laufende Prozesse in Linux

  3. Wie kann man alle Prozesse mit einem bestimmten Teilnamen beenden?

  4. So beenden Sie den Zombie-Prozess

  5. Wie verwendet man Strg+C, um alle Hintergrundprozesse zu beenden, die in einem Bash-Skript gestartet wurden?

So beenden Sie Zombie-Prozesse in Linux

So finden Sie heraus, wie lange ein Prozess unter Linux läuft

So töten Sie Zombie-Prozesse in Ubuntu 20.04 LTS

Wie man einen Prozess unter Linux beendet

So töten Sie Zombie-Prozesse in Ubuntu

So beenden Sie Prozesse in Linux mit kill, killall und pkill