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

So fügen Sie der Warteschlange Linux-Befehle hinzu und führen sie einzeln aus

Heute bin ich über ein cooles Linux-Befehlszeilenprogramm namens "Task Spooler" gestolpert . Wie der Name schon sagt, handelt es sich beim Task-Spooler um ein Unix-Batch-System, mit dem die Linux-Befehle der Warteschlange hinzugefügt und in numerischer Reihenfolge (genauer gesagt in aufsteigender Reihenfolge) nacheinander ausgeführt werden können. Bitte verwechseln Sie es nicht mit 'at' Befehl, der verwendet wird, um Linux-Befehle zu einem bestimmten Zeitpunkt auszuführen. Im Gegensatz zu at Befehl, Task-Spooler führt einen Befehl sofort aus der Warteschlange aus, sobald der vorherige Befehl beendet ist.

Dieses Dienstprogramm kann sehr nützlich sein, wenn Sie viele Befehle ausführen müssen, aber keine Zeit damit verschwenden möchten, auf die Beendigung eines Befehls zu warten und den nächsten Befehl auszuführen. Sie können sie alle in eine Warteschlange stellen und der Task Spooler führt sie nacheinander aus. In der Zwischenzeit können Sie anderen Aktivitäten nachgehen. Jeder Benutzer in jedem System hat seine/ihre eigene Auftragswarteschlange. Es ist auch sehr nützlich, wenn Sie wissen, dass Ihre Befehle von viel RAM abhängen, viel Festplattenverbrauch haben, viel Ausgabe liefern oder es aus irgendeinem Grund besser ist, sie nicht gleichzeitig auszuführen. Kurz gesagt, Task Spooler ist ein Befehlszeilenprogramm, um andere Befehle für die Batch-Ausführung in die Warteschlange zu stellen.

Herunterladen - Kostenloses E-Book:"Linux-Befehlszeilen-Spickzettel"

Lassen Sie mich Ihnen in diesem kurzen Tutorial zeigen, wie Sie Task Spooler in Unix-ähnlichen Betriebssystemen installieren und verwenden.

Aufgabenspooler auf Debian, Ubuntu, Linux Mint installieren

Task Spooler ist in den Standard-Repositories von Debian, Ubuntu und anderen DEB-basierten Systemen verfügbar. Sie können es also mit dem Befehl installieren:

$ sudo apt-get install task-spooler

Für andere Systeme können Sie die Task-Spooler-Quelldatei von diesem Link herunterladen und bauen Sie es als natives Paket für die von Ihnen verwendete Linux-Distribution und installieren Sie es wie in einer der folgenden Methoden beschrieben.

  • So erstellen Sie ganz einfach Linux-Pakete für mehrere Plattformen
  • Wie man mit CheckInstall Pakete aus der Quelle erstellt

Fügen Sie Linux-Befehle zur Warteschlange hinzu und führen Sie sie einzeln mit dem Task-Spooler aus

Sehen wir uns einige praktische Beispiele an. Alle hier bereitgestellten Beispiele wurden im Ubuntu 18.04 LTS-System getestet.

Hinweis: In Debian/Ubuntu-Systemen sollte Task Spooler mit dem Befehl 'tsp' ausgeführt werden, da es ein anderes Programm mit demselben Namen namens ts gibt (Time Stamping Authority Tool (Client/Server)). Für andere Linux-Distributionen als Ubuntu/Debian können Sie es mit dem Befehl „ts“ ausführen.

Führen Sie den tsp-Befehl aus:

$ tsp

Im Moment ist nichts in der Warteschlange. Lassen Sie uns der Warteschlange einige Befehle hinzufügen. Führen Sie dazu Folgendes aus:

$ tsp echo Welcome OSTechNix
$ tsp echo "Hello World"

Führen Sie nun den tsp-Befehl erneut aus, um die Befehle in der Warteschlange anzuzeigen:

$ tsp

Beispielausgabe:

ID State Output E-Level Times(r/u/s) Command [run=0/1]
0 finished /tmp/ts-out.jpHIG1 0 0.01/0.00/0.00 echo Welcome OSTechNix
1 finished /tmp/ts-out.8H6LLB 0 0.00/0.00/0.00 echo Hello World

Wie Sie in der obigen Ausgabe sehen, hat jeder Befehl eine eindeutige ID in (0, 1, 2 usw.) in aufsteigender Reihenfolge. Außerdem zeigt es den aktuellen Status von Befehlen (z. B. beendet oder ausgeführt) in der Warteschlange an. Die Echo-Befehle sind sehr einfach und kurz, daher haben wir das Ergebnis als 'fertig' erhalten.

Lassen Sie uns einen Befehl ausführen, dessen Ausführung mehr Zeit in Anspruch nimmt. Sehen Sie sich den folgenden Befehl an:

$ find / -type f -printf '%T+ %p\n' | sort | head -n 20

Dieser Befehl findet und zeigt die 20 ältesten Dateien im Root-Dateisystem (/) an.

Fügen Sie nun den obigen Befehl zur Warteschlange hinzu:

$ tsp find / -type f -printf '%T+ %p\n' | sort | head -n 20

Beispielausgabe:

2

Führen Sie nun den Befehl tsp aus, um die Liste der Befehle in der Warteschlange anzuzeigen.

$ tsp

Beispielausgabe:

ID State Output E-Level Times(r/u/s) Command [run=1/1]
2 running /tmp/ts-out.79rMXn find / -type f -printf %T+ %p\n
0 finished /tmp/ts-out.jpHIG1 0 0.01/0.00/0.00 echo Welcome OSTechNix
1 finished /tmp/ts-out.8H6LLB 0 0.00/0.00/0.00 echo Hello World

Hinzufügen von Linux-Befehlen zur Warteschlange mithilfe des Task-Spoolers

Wie Sie in der obigen Ausgabe sehen, wird der Befehl mit der ID 2 ausgeführt. Ebenso können Sie mit dem Task Spooler beliebig viele Befehle hinzufügen, die Sie ausführen möchten.

Aktualisierung:

Wie einer unserer Leser im Kommentarbereich erwähnt hat, sollte der find-Befehl wie folgt ausgeführt werden:

$ tsp sh -c "find Downloads/ -type f -printf '%T+ %p\n' | sort | head -n 20"

Geben Sie den folgenden Befehl ein, um die Ausgabe eines laufenden Jobs anzuzeigen und zu überprüfen, was vor sich geht:

$ tsp -c 2

Hier ist 2 die ID des laufenden Befehls. Drücken Sie STRG+C um zum Terminal zurückzukehren. Der laufende Befehl wird nicht abgebrochen. Es bringt Sie nur zurück zum Terminal. Der Job wird weiterhin im Hintergrund ausgeführt.

Mit -r können Sie einen Befehl (wird ausgeführt, beendet, in die Warteschlange gestellt) aus der Warteschlange entfernen Flag gefolgt von der ID wie unten.

$ tsp -r 2

Der obige Befehl entfernt den Befehl mit der ID 2 aus der Warteschlange.

Um alle Befehle aus der Warteschlange zu löschen, führen Sie einfach Folgendes aus:

$ tsp -C

Bitte beachten Sie, dass hier C ist Kapital . Der obige Befehl löscht die letzten abgeschlossenen Befehle aus der Warteschlange. Es werden keine laufenden Befehle oder die Befehle in der Warteschlange entfernt.

Denken Sie daran, dass Sie den Task Spooler in anderen Distributionen als Debian/Ubuntu mit ts ausführen müssen Befehl.

Weitere Einzelheiten finden Sie in den Manpages.

$ man ts

Oder,

$ man tsp

Empfohlene Lektüre:

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

Schlussfolgerung

Ich finde den Task-Spooler sehr nützlich, wenn ich mehrere Befehle ausführen muss. Ich bin nur ein fauler Kerl, um zu warten, bis ein Befehl beendet ist, und den anderen auszuführen. Mit dem Task-Spooler habe ich die Liste der auszuführenden Befehle in die Warteschlange gestellt und die Befehle aus der Warteschlange nacheinander in aufsteigender Reihenfolge ausgeführt. Ich kann auch jederzeit die Ausgabe jedes ausgeführten Befehls anhand seiner ID anzeigen. Bitte beachten Sie, dass nicht alle Befehle gleichzeitig ausgeführt werden. Stattdessen führt es Befehle nacheinander aus. Allerdings ist der Task Spooler für die Ausführung von Batch-Jobs geeignet.


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So erstellen Sie einen Alias ​​und verwenden den Alias-Befehl in Linux

  4. So speichern Sie Linux-Befehle und verwenden sie bei Bedarf

  5. Linux-Befehle:jobs, bg und fg

So führen Sie Linux-Startskripts und -Befehle automatisch aus

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

Die 40 nützlichen Linux-Server-Befehle für Anfänger und Profis

So verwenden Sie den Top-Befehl als Task-Manager in Linux

So installieren und verwenden Sie den Ack-Befehl unter Linux

Linux perf:So verwenden Sie den Befehl und den Profiler