GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

Neulich habe ich eine große Datei mit rsync auf ein anderes System in meinem lokalen Netzwerk übertragen. Da es sich um eine sehr große Datei handelt, dauerte die Fertigstellung etwa 20 Minuten. Ich möchte nicht so lange warten und den Vorgang auch nicht manuell durch Drücken von STRG + C beenden. Ich habe mich nur gefragt, ob es einfache Möglichkeiten gibt, einen Befehl für eine bestimmte Zeit auszuführen und ihn automatisch zu beenden, sobald die Zeit in Unix-ähnlichen Betriebssystemen abgelaufen ist - daher dieser Beitrag. Lesen Sie weiter.

Einen Befehl für eine bestimmte Zeit in Linux ausführen

Wir können dies auf zwei Arten tun.

Methode 1 – Verwendung des Befehls „timeout“

Die gebräuchlichste Methode ist die Verwendung von timeout Befehl dazu. Für diejenigen, die es nicht wissen, der Timeout-Befehl begrenzt effektiv die absolute Ausführungszeit eines Prozesses. Der Timeout-Befehl ist Teil des GNU-Coreutils-Pakets, daher ist er in allen GNU/Linux-Systemen vorinstalliert.

Nehmen wir an, Sie möchten einen Befehl nur für eine bestimmte Zeit ausführen und ihn dann automatisch beenden, sobald die Zeit abgelaufen ist. Dazu verwenden wir:

$ timeout <time-limit-interval> <command>

Der folgende Befehl wird beispielsweise nach 10 Sekunden beendet.

$ timeout 10s tail -f /var/log/pacman.log

Sie müssen auch nicht das Suffix "s" für Sekunden angeben. Der folgende Befehl ist derselbe wie oben.

$ timeout 10 tail -f /var/log/pacman.log

Die anderen verfügbaren Suffixe sind:

  • bin minutenlang,
  • 'h' für Stunden
  • 'd' für Tage.

Wenn Sie dieses tail -f /var/log/pacman.log ausführen Befehl, wird es weiter ausgeführt, bis Sie es manuell beenden, indem Sie STRG+C drücken. Wenn Sie es jedoch zusammen mit timeout ausführen Befehl, wird es nach dem angegebenen Zeitintervall automatisch beendet.

Für den Fall, dass der Befehl auch nach Ablauf der Zeit noch ausgeführt wird, können Sie einen Kill senden Signal wie unten.

$ timeout -k 20 10 tail -f /var/log/pacman.log

Wenn Sie in diesem Fall den tail-Befehl nach 10 Sekunden noch ausführen, sendet der timeout-Befehl nach 20 Sekunden ein Kill-Signal und beendet ihn.

Der Tmeout-Befehl kann besonders nützlich sein, wenn Sie Hardwareprobleme beheben. Führen Sie beispielsweise den folgenden Befehl aus, um alle Meldungen aus dem Ringpuffer des Kernels anzuzeigen, jedoch nur für 10 Sekunden.

$ timeout 10 dmesg -w

Weitere Einzelheiten finden Sie in den Manpages.

$ man timeout

Manchmal kann es lange dauern, bis ein bestimmtes Programm abgeschlossen ist, und Ihr System einfrieren. In solchen Fällen können Sie mit diesem Trick den Vorgang nach einer bestimmten Zeit automatisch beenden.

Ziehen Sie auch die Verwendung von Cpulimit in Betracht , eine einfache Anwendung, um die CPU-Auslastung eines Prozesses zu begrenzen. Weitere Einzelheiten finden Sie unter folgendem Link.

  • So begrenzen Sie die CPU-Nutzung eines Prozesses in Linux

Methode 2 – Verwenden des Programms „Zeitlimit“

Das Timelimit-Dienstprogramm führt einen bestimmten Befehl mit den bereitgestellten Argumenten aus und beendet den erzeugten Prozess nach einer bestimmten Zeit mit einem bestimmten Signal. Zuerst wird die Warnung übergeben Signal und dann nach dem Timeout wird der Kill gesendet Signal.

Im Gegensatz zum Timeout-Dienstprogramm bietet Timelimit mehr Optionen. Sie können eine Reihe von Argumenten wie killsig, warnsig, killtime, warntime usw. übergeben.

Es ist in den Standard-Repositories von Debian-basierten Systemen verfügbar. Sie können es also mit dem Befehl installieren:

$ sudo apt-get install timelimit

Für Arch-basierte Systeme ist es im AUR verfügbar. Sie können es also mit jedem AUR-Hilfsprogramm wie Pacaur installieren , Packer , Juhu , Yourt usw.

Für andere Distributionen laden Sie die Quelle hier herunter und manuell installieren.

Führen Sie nach der Installation des Timelimit-Programms den folgenden Befehl für eine bestimmte Zeit aus, z. B. 10 Sekunden:

$ timelimit -t10 tail -f /var/log/pacman.log

Wenn Sie timelimit ohne Argumente ausführen, werden die Standardwerte verwendet:warntime=3600 Sekunden , warnsig=15 , killtime=120 , killsig=9 .

Weitere Einzelheiten finden Sie in den Manpages und auf der Website des Projekts am Ende dieses Handbuchs.

$ man timelimit

Und das ist alles für heute. Ich hoffe, das war nützlich. Weitere gute Sachen folgen. Bleiben Sie dran!

Prost!


Linux
  1. Linux time Command Tutorial für Anfänger (mit Beispielen)

  2. So verwenden Sie den Su-Befehl unter Linux

  3. Wie führe ich eine Anwendung für eine festgelegte Zeit in der Shell aus?

  4. So planen Sie Aufgaben mit at in Linux

  5. Wie kann ich tcpdump so planen, dass es für einen bestimmten Zeitraum ausgeführt wird?

So führen Sie Linux-Befehle im Hintergrund aus

Timeout-Befehl in Linux

Letzter Befehl in Linux

Linux-Timeout-Befehl für Anfänger erklärt (mit Beispielen)

So führen Sie Windows 95 unter Linux aus

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus