Website-Suche

So begrenzen Sie die Zeit- und Speicherauslastung von Prozessen in Linux


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

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

Um dieses Skript ausführen zu können, müssen Sie Perl 5 auf Ihrem Linux-System installiert und das Dateisystem /proc gemountet haben.

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

$ perl -v

Klonen Sie als Nächstes das Timeout-Repository mit dem Befehl git auf Ihr System, wechseln Sie dann mit dem Befehl cd in das lokale Repository und rufen Sie es als normalen Linux-Befehl auf.

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

Schauen wir uns nun an, wie das Timeout-Skript funktioniert.

Grundlegende Speicherbegrenzung (100 MB virtueller Speicher):

In diesem ersten Beispiel wird gezeigt, wie Sie die Speicherauslastung eines Prozesses mithilfe des Flags -m auf 100 MB virtuellen Speicher begrenzen. Die Standardeinheit für den Arbeitsspeicher ist in Kilobyte.

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

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

Unter Berücksichtigung der Ausgabe des obigen timeout-Befehls wurden die stress-ng-Arbeitsprozesse nach nur 1,16 Sekunden beendet. Dies liegt daran, dass der kombinierte Speicherverbrauch des VMS (438660 Kilobyte) größer ist als die zulässige virtuelle Speicherauslastung für stress-ng und seine untergeordneten Prozesse.

Grundlegende zeitliche Begrenzung des Prozesses:

Um die Zeitbegrenzung des Prozesses zu aktivieren, verwenden Sie das Flag -t wie gezeigt.

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

Wenn im obigen Beispiel die CPU+SYS-Zeit den definierten Wert von 4 überschreitet, werden die Arbeitsprozesse beendet.

Begrenzung von Zeit und Speicher des Prozesses

Sie können auch sowohl den Arbeitsspeicher als auch die Zeit gleichzeitig wie folgt begrenzen.

$ ./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 Erkennung von Aufhängen ermöglichen.

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

Sie können das RSS-Speicherlimit (resident set size) mit den Optionen --memlimit-rss oder -s überwachen.

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

Um den Exit-Code oder das Signal+128 eines Prozesses zurückzugeben, verwenden Sie außerdem die Option --confess oder -c, wie gezeigt.

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

Weitere Informationen und ein Verwendungsbeispiel finden Sie im Github-Repository für die Zeitüberschreitung: https://github.com/pshved/timeout.

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

  1. So finden Sie die 15 besten Prozesse nach Speicherauslastung mit "top" im Batch-Modus
  2. CPUTool – Begrenzung und Kontrolle der CPU-Auslastung beliebiger Prozesse in Linux
  3. So begrenzen Sie die CPU-Auslastung eines Prozesses in Linux mit dem CPULimit Tool

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

Verwandte Artikel: