Wie man die Zeit- und Speichernutzung von Prozessen unter Linux begrenzt

Das Timeout-Skript ist ein nützliches Ressourcenüberwachungsprogramm zur Begrenzung von Zeit- und Speicherverbrauch von Prozessen in Linux. Es ermöglicht Ihnen, Programme unter Kontrolle auszuführen und Zeit- und Speichergrenzen durchzusetzen, wobei das Programm bei Verletzung dieser Parameter beendet wird.

Keine Installation erforderlich, führen Sie einfach einen Befehl zusammen mit seinen Argumenten unter Verwendung des Timeout-Programms aus, und es überwacht den Speicher- und Zeitverbrauch des Befehls, unterbricht den Prozess, wenn er die Grenzen überschreitet, und benachrichtigt Sie mit der vordefinierten Nachricht.

Um dieses Skript auszuführen, müssen Sie Perl 5 auf Ihrem Linux-System installiert haben und das /proc-Dateisystem eingehängt haben.

Um die installierte Version von Perl auf Ihrem Linux-System zu überprüfen, führen Sie den folgenden Befehl aus.

$ perl -v
Check Perl Version in Linux

Anschließend klonen Sie das Timeout-Repository auf Ihrem System mit dem Git-Befehl, wechseln dann in das lokale Repository mit dem cd-Befehl und rufen es als üblichen Linux-Befehl auf.

$ cd ~/bin
$ git clone https://github.com/pshved/timeout.git
$ cd timeout

Lassen Sie uns nun betrachten, wie das Timeout-Skript funktioniert.Grundlegende Speicherbegrenzung (100M virtueller Speicher):

Grundlegende Speicherbegrenzung (100M virtueller Speicher):

Dieses erste Beispiel zeigt, wie der Speicherverbrauch eines Prozesses auf 100M virtuellen Speicher begrenzt wird, indem das -m Flag verwendet wird. Die Standardeinheit für Speicher ist in Kilobytes.

Hier führt der stress-ng-Befehl 4 virtuelle Speicher-Stressoren (VMS) aus, die zusammen 40% des verfügbaren Speichers für 10 Minuten verwenden. Jeder Stressor verbraucht somit 10% des verfügbaren Speichers.

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Limiting Memory of Process

Angesichts der Ausgabe des oben stehenden Timeout-Befehls wurden die stress-ng-Arbeitsprozesse nach nur 1,16 Sekunden beendet. Dies liegt daran, dass der zusammengefasste Speicherverbrauch der VMS (438660 Kilobytes) größer ist als die erlaubte virtuelle Speicherauslastung für stress-ng und seine untergeordneten Prozesse.

Grundlegende Begrenzung der Prozesszeit:

Um die Zeitbegrenzung von Prozessen zu aktivieren, verwenden Sie das -t Flag wie gezeigt.

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Time Limiting of Process

Im obigen Beispiel werden die Arbeitsprozesse des stress-ng beim Überschreiten des definierten Werts von 4 CPU+SYS Zeit getötet.

Begrenzung sowohl von Zeit als auch Speicher eines Prozesses

Sie können auch beide Speicher und Zeit gleichzeitig begrenzen, wie folgt.

$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Timeout unterstützt auch einige erweiterte Optionen wie --detect-hangups, die die Hangup-Erkennung ermöglicht.

$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Sie können das RSS (Resident Set Size) Speicherlimit mit dem Schalter --memlimit-rss oder -s überwachen.

$ ./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

Zusätzlich können Sie den Exit-Code oder das Signal+128 eines Prozesses mit der Option --confess oder -c zurückgeben.

$ ./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

Weitere Informationen und Beispiele zur Verwendung finden Sie im timeout Github-Repository: https://github.com/pshved/timeout.

Sie finden möglicherweise auch die folgenden verwandten Artikel ebenso nützlich:

  1. Wie man die Top 15 Prozesse nach Speicherauslastung mit ‚top‘ im Batch-Modus findet
  2. CPUTool – Begrenzen und Steuern der CPU-Auslastung eines beliebigen Prozesses in Linux
  3. Wie man die CPU-Auslastung eines Prozesses in Linux mit dem CPULimit Tool begrenzt

Das timeout Skript ist ein einfaches Ressourcenüberwachungsprogramm, das im Wesentlichen die Zeit- und Speicherauslastung von Prozessen in Linux einschränkt. Sie können uns Feedback zum timeout Skript über das Kommentarformular unten geben.

Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/