Prozesslistenverwaltung und automatische Prozessabschluss

Prozesslistenverwaltung und automatische Prozessabschluss

Da die optimale Nutzung/Maximierung von Abtrennung weiter wächst, wird es immer wichtiger, Prozesse gut zu verwalten. Ein Aspekt davon ist die automatische Prozessabgabe. Wenn ein Prozess verurteilt ist und zu viele Ressourcen verbraucht, kann er automatisch beendet werden.

Dies ist besonders für Server geeignet, die viele vorübergehende oder verfügbare Prozesse haben. Es ist auch gut geeignet, um Server zu testen, die viele Testversuche ausführen, und wenn sich solche Testversuche als instabil erweisen oder die in Tests testete Software unregelmäßig verhalten (beispielsweise mit zu viel Speicher)

In diesem Tutorial lernen Sie:

  • Wie man Prozesse automatisch verwaltet
  • Welche Ressourcen möchten Sie vielleicht überwachen und warum
  • Beispielcode zeigt, wie automatische Prozessabschlüsse bei Problemen mit Gedächtnisabschlüssen funktionieren können
Prozesslistenverwaltung und automatische Prozessabschluss

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Linux-Verteilungsunabhängige
Software BASH -Befehlszeile, Linux -basiertes System
Andere Jedes Dienstprogramm, das standardmäßig nicht in der Bash -Shell enthalten ist sudo apt-Get Installieren Sie den Dienstprogramm (oder yum install Für Redhat -basierte Systeme)
Konventionen # - Erfordert, dass Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden sudo Befehl
$-erfordert, dass Linux-Commands als regulärer nicht privilegierter Benutzer ausgeführt werden

Zu viel Gedächtnis! Oder besser, zu wenig Gedächtnis!

Es gibt zwei Hauptressourcen, die Sie wahrscheinlich immer im Auge behalten möchten, abhängig von der Software, die an anderer Stelle auf dem Server verwendet wird, und das ist Speicherverbrauch und Speicherplatz. Die CPU -Verwendung kann auch ins Bild kommen, aber es unterscheidet sich etwas von den anderen. Der Grund dafür ist, dass - wenn Ihnen der Speicherplatz ausgeht oder der Speicherplatz aus dem Speicherplatz ausgeht, wird Ihr Server beginnt, sich zu spielen.

Sie können ein undefiniertes Verhalten erhalten, da der Speicherplatz ausgeht, und wenn Ihnen der Speicher ausgeht, kann der OOM -Killer (automatische Prozess der automatischen Prozesstillung von Speicher) einige Prozesse ein- und abtöten, und so weiter.

Andererseits wird Ihr Server mit der CPU auch dann ausgeführt. Wenn es sich um ein echtes CPU -Hogging -Programm handelt, ist es möglicherweise unerschwinglich langsam, aber in den meisten Fällen können Sie immer noch einige Befehle eingeben.

Dieser Artikel konzentriert sich auf das Memory -Hogging -Prozessmanagement: Automatische Beendigung von Prozessen, die zu viel Speicher verbrauchen. Schauen wir uns zunächst an, wie wir den Speicherprozessnutzung überwachen können:

$ ps -eo PID, PMEM -SORT -RSS | Kopf -n10 PID %Mem 406677 19.5 373013 2.1 406515 2.0 406421 1.9 2254 1.8 406654 1.8 406554 1.7 406643 0.9 16622 0.7 


Hier haben wir angefordert ps Erstellen einer Liste der Top 10 PIDs. Wir haben angegeben, dass wir alle Prozesse sehen wollen (-e), und für jeden Prozess möchten wir die Prozess-ID (-o) sehen PID) und der Prozentsatz des Speichers, den es verbraucht (-O PMEM) oder insgesamt (mit kombinierten Optionen: -EO PID, PMEM).

Als nächstes forderten wir die Liste auf, die für uns vorgeschrieben werden soll (--Sortieren) und setzen Sie die RSS -Option (Option (-RSS) als Langformatspezifikation. Wir erfassen dann die Top 10 -Ergebnisse mithilfe von Head -n10. Wenn wir sehen wollten, welche Prozesse den Speicher verwenden, können wir auch hinzufügen ,Comm zum PID, PMEM Liste oder wir verwenden einfach PS -f | Grep Pid wobei PID die Nummer ist, wie in der ersten Spalte der aufgeführt ps Ausgabe, um die vollständigen Details für einen Prozess anzuzeigen.

Lassen Sie uns dies nun so automatisieren, dass die Prozesse, die mehr als 10% des Speichers verwenden, automatisch beendet werden.

Warnung: Führen Sie dies nicht auf einem Computer aus, ohne zu verstehen, was es tun wird und wie dies funktioniert. Informationen finden Sie hier als IS ohne Gewährleistung jeglicher Art. Sie können einige Prozesse beenden, die Sie nicht gewünscht haben oder nicht, beendet werden.

# PS -eo PMEM, PID -SORT -RSS | grep '^[\ t]*[1-9] [0-9] \.'| awk 'print $ 2' | xargs -i  Kill -9  

Erstens werden wir dies als root ausführen, um sicherzustellen, dass wir über genügend Privilegien verfügen, um einen relevanten Prozess abzugeben. Beachten Sie, dass wir die ausgetauscht haben PMEM (Prozentspeicher) und PID (Prozess -ID) herum. Dies erleichtert es etwas einfacher, einen regulären Ausdruck zu verwenden Grep. Unser grep -regulärer Ausdruck funktioniert wie folgt: Erstens suchen Sie nach einem Raum (suchen Sie nach einem Raum () oder ([…]) eine Registerkarte (\T), null oder mehr (*) mal.

Suchen Sie als nächstes nach der Nummer 1 Zu 9, mindestens einmal (mindestens einmal ist die Standardfrequenz, also kein Symbol ähnlich wie * wird eingesetzt!). Dies soll eine beliebige Zahl von erfassen 10 (beginnt mit 1) Zu 99 (beginnt mit 9). Als nächstes suchen wir nach einem anderen 0 Zu 9, Insgesamt suchen wir nach den Zahlen 10 Zu 99. Wir folgen dies durch einen wörtlichen Punkt (\., Tun nicht verwenden . Hier als einzelne Punkt ohne Präfix -Backslash bedeutet Jeder Charakter eher als ein wörtlicher Punkt!) um sicherzustellen, dass wir nur vor dem Dezimalpunkt festhalten.

Wir nehmen dann nur die zweite Spaltenausgabe (Druck $ 2, mit $ 2 Die zweite Spalte sein, $ 1 der erste usw.) durch die Nutzung awk. Schließlich geben wir dies an Xargs und schreibe aus Töte -9 in einem sauberen und leicht verständlichen Format. Wir hätten dies mit einer Kurzsyntax schreiben können, aber das ist schön, sauber und klar. Der -ICH Gibt an, was wir als Ersatz-String verwenden werden (ersetzen Sie das Auftreten desselben innerhalb des Befehls durch die Eingabe Xargs hat in diesem Fall aus der Pfeife erhalten) . Ich empfehle auch Im Allgemeinen als sicherer Swap/Ersetzen Sie Zeichenfolge.

Wenn Sie mehr darüber erfahren möchten Xargs, Bitte beachten Sie unsere XARGs für Anfänger mit Beispielen und Multi -Thread -Xargs mit Beispielenartikeln.

Das Ergebnis des Ausführens des Befehls ist, dass alle Prozesse, die mehr als 10% des Speichers verwenden, sofort mit einem starken beendet werden Töte -9 Befehl. Wenn Sie dasselbe automatisieren möchten, können Sie dies in eine Einstellung bringen während wahr; tun getan Schleife und einfach die ersetzen Mit dem obigen Befehl oder Sie können dies zu Ihrem Crontab oder anderen bereits bestehenden Überwachungsskripten hinzufügen.



Seien Sie vorsichtig, wenn Sie diese Befehle verwenden, es ist nicht ohne Risiko. Bestreben Sie zu verstehen, was Sie jederzeit tun! Möglicherweise möchten Sie auch 1 Minute vorstellen schlafen Um den Server mit Befehlen zu vermeiden:

# während wahr; do ps -eo pMEM, PID -SORT -RSS | grep '^[\ t]*[1-9] [0-9] \.'| awk 'print $ 2' | xargs -i  Kill -9 ; Schlaf 60; Erledigt 

Auf diese Weise überwachen wir alle Prozesse im Speicher regelmäßig und/oder fortlaufend und beenden alle Prozesse, die anfangen, Schurken zu werden, viel Speicher zu verwenden usw.

Abschluss

In diesem Artikel befassen wir uns mit der Verwendung von benutzerdefinierten Formatieren die Verwaltung von Prozessen auf automatisierte Weise ps Ausgabe sowie die Xargs Und töten Befehle. Wir haben auch untersucht, welche Ressourcen zu überwachen sind und warum. Schließlich haben wir gezeigt, wie automatische Prozessabschlüsse bei Problemen mit dem Speicher im Code geeignet sind. Genießen!

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Mastering -Bash -Skriptschleifen beherrschen
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Dinge zu installieren auf Ubuntu 20.04
  • Best Terminalspiele unter Linux
  • Vergleich von Linux Apache Pre -Onk -vs -Worker -MPMs
  • GNU/Linux Allgemeiner Fehlerbehebungsleitfaden für Anfänger
  • Hung Linux System? Wie man zur Befehlszeile entkommt und…
  • Bash -Hintergrundprozessmanagement verleihen
  • Wie man ein Signal an Kinderprozesse aus einer Bash verbreitet…