Prozesslistenverwaltung und automatische Prozessabschluss
- 4609
- 985
- Phoebe Jeorga
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
Softwareanforderungen und Konventionen verwendet
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…
- « Bash if Aussagen, wenn, elif, sonst, dann fi
- So verwenden Sie Bash -Unterschalen im Inneren, wenn Anweisungen »