So führen Sie einen Befehl zu einem bestimmten Zeitpunkt in Linux aus

So führen Sie einen Befehl zu einem bestimmten Zeitpunkt in Linux aus

Neulich habe ich rsync verwendet, um eine große Datei auf ein anderes System in meinem LAN zu übertragen. Da es sich um eine sehr große Datei handelt, dauert die Fertigstellung etwa 20 Minuten. Ich möchte nicht länger warten und auch nicht STRG+C drücken, um den Vorgang abzubrechen. Ich wollte nur wissen, ob es im Linux-Betriebssystem eine einfache Möglichkeit gibt, einen Befehl für eine bestimmte Zeit auszuführen und ihn automatisch zu beenden, wenn die Zeit abgelaufen ist – daher dieser Beitrag. Bitte lesen Sie weiter.

Führen Sie in Linux einen Befehl zu einem bestimmten Zeitpunkt aus

Wir können dies auf zwei Arten tun.

Methode 1 – Verwenden des Timeout-Befehls

Die gebräuchlichste Methode ist die Verwendung des Timeout-Befehls. 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 und daher auf allen GNU/Linux-Systemen vorinstalliert.

Angenommen, Sie möchten einen Befehl nur 5 Sekunden lang ausführen und dann beenden. Dazu verwenden wir:

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

Beispielsweise wird der folgende Befehl nach 10 Sekunden beendet.

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

Sie können das Suffix „s“ nach den Sekunden auch weglassen. Die folgenden Befehle sind dieselben wie oben.

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

Andere mögliche Suffixe sind:

  • m steht für Minuten.
  • h steht für Stunden.
  • d steht für Tag.

Wenn Sie den Befehl tail -f /var/log/pacman.log ausführen, wird er so lange ausgeführt, bis Sie ihn manuell durch Drücken von STRG+C beenden. Wenn Sie es jedoch mit dem Timeout-Befehl ausführen, wird es nach dem angegebenen Zeitintervall automatisch beendet. Wenn der Befehl nach dem Timeout immer noch ausgeführt wird, können Sie wie unten gezeigt ein Kill-Signal senden.

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

In diesem Fall sendet der Timeout-Befehl, wenn der Tail-Befehl nach 10 Sekunden immer noch ausgeführt wird, nach 20 Sekunden ein Kill-Signal und wird beendet.

Weitere Einzelheiten finden Sie auf der Manpage.

$ man timeout

Manchmal kann die Ausführung eines bestimmten Programms sehr lange dauern und Ihr System einfrieren. In diesem Fall können Sie mit diesem Trick den Vorgang nach einer gewissen Zeit automatisch beenden.

Methode 2 - Verwenden des Zeitlimitprogramms

Zeitlimit Führt den angegebenen Befehl mit den angegebenen Argumenten aus und beendet den Prozess mit dem angegebenen Signal nach der angegebenen Zeit. Zuerst sendet es ein Warnsignal und dann, nach einer Zeitüberschreitung, ein Kill-Signal.

Anders als Timeout hat Timelimit mehr Optionen. Sie können eine Reihe von Argumenten übergeben, beispielsweise „killsig“, „warnsig“, „killtime“, „warntime“ usw. Es ist in den Standard-Repositories von Debian-basierten Systemen verfügbar. Sie können es also mit dem folgenden Befehl installieren:

$ sudo apt-get install timelimit

Für Arch-basierte Systeme ist es in AUR verfügbar. Sie können es also mit jedem AUR-Helfer wie Pacaur, Packer, Yay, Yaourt usw. installieren.

Für andere Distributionen laden Sie bitte hier den Quellcode herunter und installieren Sie ihn manuell. Führen Sie nach der Installation von timelimit den folgenden Befehl aus, um die Ausführung für einen bestimmten Zeitraum, beispielsweise 10 Sekunden, durchzuführen:

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

Wenn Sie timelimit ohne Argumente ausführen, werden die Standardwerte verwendet: warntime=3600 Sekunden, warnsig=15 Sekunden, killtime=120 Sekunden, killsig=9. Weitere Einzelheiten finden Sie in den Manpages am Ende dieses Handbuchs und auf der Projektwebsite.

$ man timelimit

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Analysieren Sie die grundlegenden Modulverwaltungs- und Zeitverwaltungsvorgänge des Linux-Kernels
  • So ermitteln Sie die Ausführungszeit eines Befehls oder Prozesses in Linux
  • Detaillierte Erläuterung von 2 Methoden zum Synchronisieren der Netzwerkzeit im Linux/CentOS-System
  • 15 Linux-Befehlsaliase, die Ihnen Zeit sparen
  • Freigabe von Befehlen zur Synchronisierung der Datums- und Uhrzeiteinstellung unter Linux
  • Detaillierte Erläuterung der Zeitsynchronisierungseinstellungen des Linux NTP-Servers
  • Linux-Batch-Befehl zum Löschen von Dateien nach Zeit (Dateien vor N Tagen löschen)
  • Tutorial zum Konfigurieren und Verwenden des i3-Fenstermanagers unter Linux
  • Verwenden Sie die Tools iptables und firewalld, um Verbindungsregeln für die Linux-Firewall zu verwalten
  • 8 Befehle zur effektiven Verwaltung von Prozessen in Linux
  • Hinweise zur Zeitverwaltung des Linux-Kernel-Gerätetreibers

<<:  JavaScript implementiert eine Box, die der Mausbewegung folgt

>>:  Detaillierter Informationsaustausch über das MySQL-Protokollsystem

Artikel empfehlen

So lösen Sie das Problem „Nginx 503-Dienst vorübergehend nicht verfügbar“

In letzter Zeit tritt nach dem Aktualisieren der ...

N Möglichkeiten, Elemente mit CSS zu zentrieren

Inhaltsverzeichnis Vorwort Zentrieren von Inline-...

jQuery implementiert einen einfachen Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von j...

Die Prinzipien und Mängel der MySQL-Volltextindizierung

Der MySQL-Volltextindex ist ein spezieller Index,...

Implementierung des WeChat-Applet-Nachrichten-Pushs in Nodejs

Auswählen oder Erstellen einer Abonnementnachrich...

Detaillierte Erläuterung des Prozesses der Verwendung von GPU in Docker

Inhaltsverzeichnis tf-gpu herunterladen Erstellen...

Detailliertes Beispiel für das Linux-Allround-Systemüberwachungstool dstat

Umfassendes Systemüberwachungstool dstat dstat is...

Optimierung des MySQL Thread_Stack-Verbindungsthreads

MySQL kann nicht nur über das Netzwerk, sondern a...

React+Typescript implementiert die Countdown-Hook-Methode

Zunächst wird setInterval als Hook gekapselt 👇 im...

Warum wird für die Webseitenkodierung UTF-8 statt GBK oder GB2312 verwendet?

Wenn Sie die Wahl haben, sollten Sie UTF-8 verwen...

Analyse von MySQL-Latenzproblemen und Datenlöschungsstrategieprozess

Inhaltsverzeichnis 1. MySQL-Replikationsprozess 2...