Linux-Laptop mit einer Bash-Eingabeaufforderung

Fatmawati Achmad Zaenuri/Shutterstock.com

OK, das ist genug Computerzeit. Mit dem Befehl |_+_| können Sie Prozessen Zeitlimits zuweisen, indem Sie eine maximale Zeit festlegen, für die sie ausgeführt werden können. Hier ist ein Tutorial, um die Ausführung von Programmen mit diesem Befehl einzuschränken.



Ich habe die Windows Explorer-Aufgabe beendet

Was bedeutet Timeout für Sie?

Die |_+_| Befehl ermöglicht es Ihnen begrenzen Sie die Zeitdauer ein Programm läuft für. Aber warum willst du das tun?

Ein Fall ist, wenn Sie genau wissen, wie lange ein Prozess laufen soll. Ein häufiger Anwendungsfall ist |_+_| Steuern Sie ein Protokollierungs- oder Datenerfassungsprogramm, damit die Protokolldateien nicht unerbittlich Ihren Festplattenspeicher verschlingen.

Ein anderer Fall ist, wenn Sie nicht wissen, wie lange ein Prozess ausgeführt werden soll, aber Sie wissen, dass er nicht auf unbestimmte Zeit ausgeführt werden soll. Möglicherweise haben Sie die Angewohnheit, Prozesse auszuführen, das Terminalfenster zu minimieren und sie zu vergessen.

Einige Programme – sogar einfache Dienstprogramme – können Netzwerkverkehr auf einem Niveau erzeugen, das die Leistung Ihres Netzwerks beeinträchtigen kann. Oder sie binden die Ressourcen auf einem Zielgerät und verlangsamen dessen Leistung. (|_+_|, ich schaue dich an.) Diese Art von Programmen für längere Zeit laufen zu lassen, während du nicht an deinem Computer bist, ist schlechte Praxis.

Anzeige

|_+_| ist Teil von GNU Core Utils also Linux und Unix-ähnlich Betriebssysteme wie macOS haben alle eine Zeitüberschreitung direkt integriert. Es gibt nichts zu installieren; Sie können es direkt aus der Box verwenden.

Erste Schritte mit Timeout

Hier ist ein einfaches Beispiel. Mit seinen standardmäßigen Befehlszeilenoptionen ist beispielsweise das |_+_| Der Befehl wird ausgeführt, bis Sie ihn durch Drücken von Strg+C stoppen. Wenn Sie es nicht unterbrechen, geht es einfach weiter.

timeout

Durch die Verwendung von |_+_| können wir sicherstellen, dass |_+_| läuft nicht immer weiter, frisst Netzwerkbandbreite und belästigt jedes Gerät, das gepingt wird.

Dieser nächste Befehl verwendet |_+_| Zeitlimit |_+_|. Wir erlauben 15 Sekunden Laufzeit für |_+_|.

timeout

Nach 15 Sekunden |_+_| beendet die |_+_| Sitzung und wir kehren zur Eingabeaufforderung der Befehlszeile zurück.

Timeout mit anderen Zeiteinheiten verwenden

Beachten Sie, dass wir hinter der 15 kein s hinzufügen mussten. |_+_| geht davon aus, dass der Wert in Sekunden angegeben ist. Sie könnten ein s hinzufügen, aber es macht wirklich keinen Unterschied.

Anzeige

Um einen in Minuten, Stunden oder Tagen gemessenen Zeitwert zu verwenden, fügen Sie ein m, ein h oder ein d hinzu.

Um den Ping drei Minuten lang laufen zu lassen, verwenden Sie den folgenden Befehl:

timeout

|_+_| läuft drei Minuten vor |_+_| tritt ein und stoppt die |_+_| Sitzung.

Ping-Sitzung, die in einer Terminal-Witwe ausgeführt wird

Einschränken der Datenerfassung mit Timeout

Einige Datenerfassungsdateien können sehr schnell groß werden. Um zu verhindern, dass solche Dateien unhandlich oder sogar problematisch werden, begrenzen Sie die Zeit, die das Capture-Programm ausführen darf.

In diesem Beispiel verwenden wir |_+_|, a Netzwerkverkehr erfassen Werkzeug. Auf den Testmaschinen, auf denen dieser Artikel recherchiert wurde, |_+_| wurde bereits in Ubuntu Linux und Fedora Linux installiert. Es musste auf Manjaro Linux und Arch Linux mit dem folgenden Befehl installiert werden:

ping

Wir können laufen |_+_| für 10 Sekunden mit den Standardoptionen und leiten Sie die Ausgabe mit dem folgenden Befehl in eine Datei namens capture.txt um:

timeout

Testversion von MS Office
Anzeige

(|_+_| hat seine eigenen Optionen, um den erfassten Netzwerkverkehr in einer Datei zu speichern. Dies ist ein schneller Hack, da wir über |_+_| und nicht über |_+_| sprechen.)

|_+_| beginnt mit der Erfassung des Netzwerkverkehrs und wir warten 10 Sekunden. Und 10 Sekunden kommen und gehen und |_+_| läuft noch, und capture.txt nimmt immer noch an Größe zu. Es dauert eine hastige Strg+C, um |_+_| anzuhalten.

Überprüfen der Größe von capture.txt mit |_+_| zeigt, dass es innerhalb von Sekunden auf 209K angewachsen ist. Diese Datei wuchs schnell!

ping

Was ist passiert? Warum nicht |_+_| stoppen |_+_|?

chrome save satz von tabs

Es hat alles mit Signalen zu tun.

Das richtige Signal senden

Wenn |_+_| möchte ein Programm stoppen, das es sendet SIGTERM-Signal . Dies fordert das Programm höflich auf, sich zu beenden. Einige Programme können das SIGTERM-Signal ignorieren. Wenn das passiert, müssen wir |_+_| . mitteilen etwas energischer sein.

Wir können das tun, indem wir |_+_| . fragen um stattdessen das SIGKILL-Signal zu senden.

Das SIGKILL-Signal kann nicht abgefangen, blockiert oder ignoriert werden – es kommt immer durch. SIGKILL fordert das Programm nicht höflich auf, zu stoppen. SIGKILL versteckt sich mit Stoppuhr und Cosh um die Ecke.

Anzeige

Wir können die |_+_| . verwenden (Signal-)Option, um |_+_| . zu sagen um das SIGKILL-Signal zu senden.

timeout

Diesmal, sobald 10 Sekunden verstrichen sind, |_+_| ist gestoppt.

Zuerst höflich fragen

Wir können |_+_| . fragen zu versuchen, das Programm mit SIGTERM zu stoppen und SIGKILL nur einzusenden, wenn SIGTERM nicht funktioniert hat.

Dazu verwenden wir die |_+_| (töten nach) Option. Die |_+_| Option erfordert einen Zeitwert als Parameter.

In diesem Befehl fragen wir |_+_| lassen |_+_| 30 Sekunden laufen und dann mit dem SIGTERM-Signal beenden. Wenn |_+_| nach 40 Sekunden noch läuft, bedeutet dies, dass das diplomatische SIGTERM ignoriert wurde und |_+_| sollte SIGKILL einsenden, um den Job zu beenden.

|_+_| ist ein Dienstprogramm, das Überwachen Sie die Kernel-Ringpuffernachrichten und zeigen Sie sie in einem Terminalfenster an.

ping

Anzeige

|_+_| läuft 30 Sekunden lang und stoppt, wenn es das SIGTERM-Signal empfängt.

Wir wissen, dass nicht SIGKILL aufgehört hat |_+_| denn SIGKILL hinterlässt immer einen Ein-Wort-Nachruf im Terminalfenster: Getötet. Das ist in diesem Fall nicht passiert.

Abrufen des Exit-Codes des Programms

Gut erzogene Programme geben beim Beenden einen Wert an die Shell zurück. Dies wird als Exit-Code bezeichnet. Normalerweise wird dies verwendet, um der Shell – oder dem anderen Prozess, der das Programm gestartet hat – mitzuteilen, ob das Programm während der Ausführung auf Probleme gestoßen ist.

|_+_| bietet seinen eigenen Exit-Code, aber das ist uns möglicherweise egal. Wir interessieren uns wahrscheinlich mehr für den Exit-Code des Prozesses als |_+_| kontrolliert wird.

Dieser Befehl lässt |_+_| fünf Sekunden laufen. Es pingt einen Computer namens Nostromo an, der sich im Testnetzwerk befindet, mit dem dieser Artikel recherchiert wurde.

Was ist meine CPU?
timeout

Der Befehl wird fünf Sekunden lang ausgeführt und |_+_| beendet es. Wir können dann den Exit-Code mit diesem Befehl überprüfen:

ping

Anzeige

Der Exit-Code ist 124. Dies ist der Wert |_+_| verwendet, um anzuzeigen, dass das Programm mit SIGTERM beendet wurde. Wenn SIGKILL das Programm beendet, lautet der Exitcode 137.

Wenn wir das Programm mit Strg+C unterbrechen, wird der Exit-Code von |_+_| ist null.

ping timeout

Wenn die Ausführung des Programms endet Vor |_+_| beendet es, |_+_| kann den Exit-Code des Programms zurück an die Shell übergeben.

Dazu muss das Programm von selbst zum Stillstand kommen (mit anderen Worten, es ist nicht beendet durch |_+_|), und wir müssen das |_+_| . verwenden Möglichkeit.

Wenn wir die |_+_| . verwenden (count) Option mit einem Wert von fünf |_+_| wird nur fünf Anfragen abfeuern. Wenn wir |_+_| . geben eine Dauer von einer Minute, |_+_| wird sich definitiv von selbst beendet haben. Wir können dann den Exit-Wert mit |_+_| überprüfen.

ping timeout

excel automatisch berechnen ausschalten

|_+_| vervollständigt seine fünf Ping-Anfragen und beendet sich. Der Exit-Code ist null.

Anzeige

Um zu überprüfen, ob der Exit-Code von |_+_| kommt, erzwingen wir |_+_| um einen anderen Exit-Code zu generieren. Wenn wir versuchen, Ping-Anfragen an eine nicht vorhandene IP-Adresse zu senden, |_+_| wird mit einem Fehler-Exit-Code fehlschlagen. Wir können dann |_+_| . verwenden um zu überprüfen, ob der Exit-Code ungleich Null ist.

ping timeout

Die |_+_| Befehl kann das nicht vorhandene Gerät offensichtlich nicht erreichen, meldet den Fehler und schließt sich. Der Exit-Code ist zwei. Dies ist der Exit-Code |_+_| verwendet für allgemeine Fehler.

Grundregeln festlegen

|_+_| geht es darum, der Ausführung von Programmen Grenzen zu setzen. Wenn die Gefahr besteht, dass die Protokolldateien Ihre Festplatte überlaufen oder Sie vergessen, dass Sie ein Netzwerktool ausgeführt haben, packen Sie sie in |_+_| und lassen Sie Ihren Computer sich selbst regulieren.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN