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:
- So finden Sie die 15 besten Prozesse nach Speicherauslastung mit "top" im Batch-Modus
- CPUTool – Begrenzung und Kontrolle der CPU-Auslastung beliebiger Prozesse in Linux
- 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.


