So legen Sie ein Zeitlimit für Linux-Befehle fest

Für Systemadministratoren, die für die Steuerung von Linux-Servern verantwortlich sind, ist die Ressourcenverwaltung eine wichtige Aufgabe. Manchmal beanspruchen Linux-Befehle einen großen Teil der Systemressourcen und müssen gestoppt werden.

Glücklicherweise können Sie die Laufzeit Ihrer Befehle mithilfe von Dienstprogrammen wie timelimit begrenzen . In diesem Artikel wird erläutert, warum Sie Ihren Befehlen Zeitlimits hinzufügen sollten und wie Sie mithilfe von Befehlen wie Zeitlimit und Zeitlimit eine Zeitbeschränkung hinzufügen können.

Warum die Laufzeit eines Befehls begrenzen?

Es gibt mehrere Gründe, warum Sie Ihre Befehle möglicherweise zeitlich begrenzt ausführen müssen. Erstens führen Sie möglicherweise einen älteren Computer oder Server aus und möchten nicht, dass Ihr System seine Ressourcen für unerwünschte Verarbeitung verschwendet.

Zweitens werden zeitgebundene Aufgaben wie Dateiübertragungen nach einer bestimmten Zeit beendet, aber ihre Prozesse werden nicht sofort gestoppt. Um zu verhindern, dass das Programm zusätzliche CPU-Zeit und Speicher benötigt, können Sie ein Limit hinzufügen, das den Prozess nach Abschluss der Übertragung stoppt.

Limit hinzufügen mit dem Timeout-Befehl

Der Befehl timeout ist die erste Wahl vieler Linux-Benutzer, um ihren Befehlen eine zeitliche Beschränkung hinzuzufügen. Da dieses Tool Teil des GNU Core Utilities- Pakets ist, ist es auf fast jeder Linux-Distribution vorinstalliert.

Die grundlegende Syntax des Timeout-Befehls lautet:

 timeout limit command

… wobei limit die Zeitdauer ist, für die der Befehl ausgeführt werden soll, und command der Linux-Befehl ist, den Sie mit einem Zeitlimit ausführen möchten.

Wenn Sie beispielsweise Prozessdetails mit dem Befehl top 10 Sekunden lang abrufen möchten:

 timeout 10s top

Der oberste Befehl endet nie und Sie müssen ihn manuell mit Strg + C beenden. Der oben genannte Befehl wird 10 Sekunden lang oben ausgeführt. Sobald der Timer abgelaufen ist, stoppt das Timeout seine Ausführung. Beachten Sie, dass das Zeitlimit als Standardzeiteinheit Sekunden dauert, was bedeutet, dass 10 und 10 Sekunden gleich sind.

Sie können m , h und d auch für Minuten , Stunden und Tage verwenden.

Manuelles Senden von Kill-Signalen mit Zeitüberschreitung

Standardmäßig sendet der Timeout-Befehl SIGTERM als Kill-Signal. SIGTERM steht für Signal Terminate, wodurch der Prozess sofort beendet wird.

Sie können auch andere Signale mit dem Flag -s senden. So senden Sie beispielsweise das SIGKILL-Signal:

 timeout -s SIGKILL 10 top

Die Angabe des Signals mit seiner Signalnummer ist ebenfalls möglich. Der folgende Befehl sendet das SIGKILL-Signal ebenfalls an den obersten Befehl.

 timeout -s 9 10 top

… wobei 9 die Signalnummer für SIGKILL ist.

So erhalten Sie eine Liste aller verfügbaren Signale:

 kill -l

Einige Befehle werden auch nach dem Hinzufügen eines Zeitlimits nicht vollständig beendet. In solchen Situationen wird das Problem durch Hinzufügen eines Kill-Signals mit dem Standard-Timeout-Befehl behoben.

 timeout -k 15 10 top

Der oben genannte Befehl führt zuerst den obersten Befehl 10 Sekunden lang aus. Wenn der Befehl nicht stoppt, sendet er nach 15 Sekunden ein Kill-Signal an den Prozess.

Weitere Informationen : So beenden Sie nicht reagierende Programme unter Linux

Einschränken der Befehlslaufzeit Mit Zeitlimit

Im Gegensatz zum Befehl timeout gehört timelimit nicht zu den Standardpaketen, die in Linux-Distributionen vorinstalliert sind. Daher müssen Sie timelimit manuell auf Ihrem System installieren.

So installieren Sie auf Debian-basierten Distributionen:

 sudo apt install timelimit

Timelimit ist in den offiziellen Arch-Repositories nicht verfügbar. Sie können es jedoch mit einem AUR-Paketmanager wie yay installieren.

 sudo yay -S timelimit

Verwandte: So installieren Sie Pakete unter Arch Linux

So installieren Sie auf Fedora:

 sudo dnf install timelimit

Auf RHEL und CentOS:

 sudo yum install timelimit

Wenn Sie das Paket alternativ immer noch nicht auf Ihrem System installieren können, laden Sie den Quellcode von der offiziellen Website herunter und installieren Sie ihn manuell.

Download : Zeitlimit

So führen Sie den Befehl top 10 Sekunden lang mit timelimit aus:

 timelimit -t10 top

Timelimit verwendet mehrere Argumente wie Warntime , Warnsig , Killtime und Killsig . Wenn der Benutzer diese Argumente nicht angibt , werden die Standardwerte verwendet: Warntime = 3600 Sekunden, Warnsig = 15 , Killtime = 120 und Killsig = 9 .

Verwalten der Lebensdauer eines Befehls unter Linux

Das Überwachen der Befehle und das Übernehmen der Kontrolle über die Prozesse wird wichtig, wenn Ihr Linux-Computer über begrenzte Ressourcen verfügt. Dienstprogramme wie Timeout und Timelimit sind ein Lebensretter, da Sie Ihren Befehlen zeitliche Einschränkungen hinzufügen können.

Wie bei der Befehlslaufzeit können Sie auch die Bildschirmzeit Ihres Systems einschränken. Wenn Sie ein Elternteil sind, der nicht möchte, dass Ihr Kind unnötige Zeit vor einem Computer verschwendet, ist die Begrenzung der Bildschirmzeit die am besten geeignete Wahl.