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

Planen Sie Jobs in Linux mit dem Befehl 'at'

Der at-Befehl in Linux kann verwendet werden, um Jobs zu planen, die nicht regelmäßig ausgeführt werden.

Es kann mit dem Konzept von Crontab in Linux verglichen werden, das eine bessere Möglichkeit zur Automatisierung wiederkehrender Aufgaben darstellt.

In diesem Tutorial zeige ich, wie Sie mit dem Befehl „at“ laufende Aufgaben und Befehle zu einem bestimmten Zeitpunkt in der Zukunft planen können.

Auf Befehl unter Linux installieren

Bevor Sie beginnen, sollten Sie überprüfen, ob „at“ auf Ihrem System installiert ist. Es ist nicht standardmäßig auf allen Betriebssystemen installiert.

Sie können dies überprüfen, indem Sie Folgendes eingeben:

at -V

Wenn die Software bereits installiert ist, wird die Versionsnummer zurückgegeben. Wenn nicht, kann es auf Debian-basierten Systemen installiert werden, indem Sie Folgendes eingeben:

sudo apt install at

Wenn Sie eine andere Linux-Distribution verwenden, müssen Sie diesen Befehl möglicherweise ändern, um den von Ihrer Distribution verwendeten Paketmanager widerzuspiegeln.

Erste Schritte

Das Dienstprogramm „at“ ist eigentlich eine Reihe von Befehlen, die zusammenarbeiten, um Jobs zu planen. Wie ich bereits erwähnt habe, bei wird für Situationen bevorzugt, in denen Ihre Aufgabe eher „einmalig“ als ein wiederkehrendes Ereignis ist.

Ich habe eine Tabelle mit einigen der grundlegenden Befehle erstellt, die mit at verbunden sind .

Befehl Funktion
at ermöglicht dem Benutzer, Aufgaben zu planen
atq listet Jobs in der Warteschlange für den angemeldeten Benutzer oder alle Benutzer auf, wenn sie als sudo ausgeführt werden
atrm entfernt Jobs nach angegebener Jobnummer
Stapel weist das System an, den Job nur dann zum angegebenen Zeitpunkt auszuführen, wenn die Systemlast auf einem bestimmten Niveau liegt (Lastdurchschnitt von <1,5)
Alle Tastenkombinationen [ Strg + a ] + ?

Verwendung des at-Befehls in Linux zum Planen von Jobs

Mit at hat ein eigenes einzigartiges Format. Wenn Sie einen Auftrag planen möchten, geben Sie Folgendes in Ihr Terminal ein:

at [time] [date/day]

Die Zeit ist obligatorisch, aber das Datum ist optional, wenn nichts eingegeben wird, wird basierend auf dem aktuellen Datum und der Systemzeit davon ausgegangen.

Wenn Sie die Eingabetaste drücken, werden Sie aufgefordert, Befehle einzugeben. Sie können so viele eingeben, wie Sie möchten. Geben Sie „Strg + D“ ein, um zu speichern und zu beenden.

Lassen Sie es mich Ihnen anhand von Beispielen zeigen.

Beispiel 1:Uhrzeit/Datum in natürlicher Sprache eingeben

Sie haben viele verschiedene Möglichkeiten, die Zeit einzugeben. Im Gegensatz zu crontab mit seinem etwas kniffligen Sternchen-basierten System erkennt „at“ „menschliche“ Eingaben effizienter.

Es gibt viele menschenähnliche Ausdrücke, die von der Software verstanden werden können. Viele davon sind ortsspezifisch. Es kann gängige Ausdrücke wie „Mitternacht“ oder „Mittag“ erkennen. Es kann auch zwischen AM und PM unterscheiden. Ebenso kann es verschiedene Formate für Tage und Datumsangaben erkennen, einschließlich Abkürzungen.

Es kann auch den Ausdruck „jetzt“ verwenden. Sie können einfach den Befehl wie unten eingeben und er wird den Befehl in 5 Minuten ausführen.

at now + 1 minutes
[email protected]:~$ at now + 1 min
warning: commands will be executed using /bin/sh
at> echo "Look at you, using at like a champ!" > message.txt
at> <EOT>
job 8 at Mon Jan  6 02:59:00 2020

Die Warnung vor bin/sh können Sie höchstwahrscheinlich ignorieren . Es könnte möglicherweise Kopfschmerzen verursachen, wenn Sie eine andere Shell verwenden. Die überwiegende Mehrheit der Linux-Distributionen wird mit Bash als System-Shell geliefert, die als „sh“ symbolisiert ist … Das ist eine lange Geschichte.

Also, es ist ungefähr eine Minute her, oder? Suchen Sie im Verzeichnis nach einer neuen Datei.

Sie sollten eine Datei mit dem Namen „message.txt“ haben, die unseren Text enthält.

[email protected]:~$ ls m*
message.txt

Sieht gut aus, aber hat es unsere Botschaft richtig erfasst? Sehen wir uns den Inhalt der Datei an:

[email protected]:~$ cat message.txt 
Look at you, using at like a champ!

Beispiel 2:Verwendung einer bestimmten Zeit/eines bestimmten Datums

Für Ihren ersten Job haben Sie die „relative“ Zeit „jetzt + [Zeit]“ verwendet. Dies ist eine großartige einfache Möglichkeit, einen Job zu planen, aber Sie möchten vielleicht genauer werden.

Lassen Sie uns dieses Mal 2 Jobs zu unterschiedlichen Zeiten planen.

Sie können die Datei message.txt (im vorherigen Beispiel erstellt) für die Demonstration verwenden. Jeder Auftrag ersetzt den Inhalt der Datei.

Sie können die aktuelle Zeit auf Ihrem Linux-System mit dem date-Befehl überprüfen.

Richten Sie den ersten Job für eine bestimmte Zeit ein (ab jetzt in 5 Minuten):

[email protected]:~$ at 3:45 
warning: commands will be executed using /bin/sh
at> echo "5 minutes later..." > message.txt
at> <EOT>
job 11 at Mon Jan  6 03:45:00 2020

Richten Sie den zweiten Job für eine bestimmte Zeit ein (ab jetzt in 10 Minuten):

[email protected]:~$ at 3:50
warning: commands will be executed using /bin/sh
at> echo "10 minutes later..." > message.txt    
at> <EOT>
job 12 at Mon Jan  6 03:50:00 2020

Bestätigen um 3:45:

[email protected]:~$ cat message.txt 
5 minutes later...

Bestätigen um 3:50:

[email protected]:~$ cat message.txt 
10 minutes later...

Beispiel 3:Alle Jobs in der Warteschlange mit atq anzeigen

Sie können die geplanten Jobs jederzeit mit dem Befehl atq überprüfen. Es listet alle derzeit geplanten Jobs für den angemeldeten Benutzer auf. Um alle Jobs auf dem System anzuzeigen, müssen Sie möglicherweise erhöhte Berechtigungen verwenden.

[email protected]:~$ atq
11    Mon Jan  6 03:45:00 2020 a christopher
12    Mon Jan  6 03:50:00 2020 a christopher

Jeder Job wird durch eine Job-ID, seine geplante Zeit und den zugeordneten Benutzer identifiziert.

Sie können den Inhalt des geplanten Jobs auch mit der Option -c anzeigen:

at -c jobnumber

Beispiel 4:Entfernen eines geplanten Jobs mit atrm

Wenn Sie sich entscheiden, einen Job abzubrechen, bevor er ausgeführt wird, können Sie dies tun, indem Sie den Befehl gefolgt von der entsprechenden Job-ID eingeben (die Sie mit dem Befehl atq erhalten).

[email protected]:~$ atrm 11
[email protected]:~$ atq
12    Mon Jan  6 03:50:00 2020 a christopher

Wie Sie sehen, wurde Job 11 aus der Warteschlange entfernt.

Beispiel 5:Verwenden Sie eine Datei für at-Befehl

Vielleicht haben Sie eine Reihe von Skripten, die Sie unregelmäßig ausführen möchten, und Cron ist nicht die richtige Wahl. Sie können mehrere Jobs eingeben, ohne die Standardeingabe zu verwenden.

Stellen wir uns ein Szenario vor, in dem die Personalabteilung eine Dokumentation der Computeraktivität eines Mitarbeiters anfordert, von dem sie glaubt, dass er gegen die Arbeitsrichtlinie verstößt. Möglicherweise möchten Sie, dass bestimmte Aktivitätsprotokolle oder andere Verlaufsinformationen zu bestimmten Zeiten einen Bericht für Sie erstellen.

Sie können sich Zeit sparen, indem Sie die erforderlichen Skripte in einer Textdatei auflisten und mit at ausführen.

[email protected]:~$ cat problem_employee_logs.txt 
path/to/get_browsing_history.sh
/whatever/path/get_activity_logs.sh

Du hast die Idee. Jetzt können Sie also -f zum ‚at‘-Befehl hinzufügen und den Dateinamen wie folgt einfügen:

[email protected]:~$ at now + 2 minutes -f problem_employee_logs.txt 
warning: commands will be executed using /bin/sh
job 16 at Mon Jan  6 05:42:00 2020

Beispiel 6:Führen Sie einen Job aus, wenn die CPU-Last unter einen Schwellenwert fällt

Batch-Jobs werden standardmäßig ausgeführt, wenn die durchschnittliche CPU-Last unter 1,5 fällt.

batch

Die Methode zur Eingabe von Batch-Jobs ist identisch mit „at ‘, außer dass keine Zeit angegeben werden muss.

Wenn Sie die Lastschwelle ändern möchten, können Sie dies mit dem folgenden Befehl tun:

atd -l [n]

Wobei n der Lastschwellenwert ist, den Sie auswählen möchten. Die Manpage empfiehlt, dass Sie es auf höher als n-1 ändern, wobei n die Anzahl der CPUs in Ihrem System ist.

Fazit

Danke fürs Lesen. Ich hoffe, dass sich Ihr Verständnis des at-Befehls verbessert hat. Wenn Sie Fragen haben oder uns mitteilen möchten, wie Sie diesen Befehl verwenden, sagen Sie es uns! Hinterlasse unten einen Kommentar.


Linux
  1. Planen Sie eine Aufgabe mit dem Linux-Befehl at

  2. Linux Tee-Befehl mit Beispielen

  3. JQ-Befehl in Linux mit Beispielen

  4. So planen Sie Aufgaben mit at in Linux

  5. Listen Sie die Datei mit dem Befehl ls in Linux mit vollständigem Pfad auf

Verwenden des Cat-Befehls unter Linux mit Beispielen

Verwenden des GREP-Befehls unter Linux mit Beispielen

So automatisieren Sie tägliche Jobs unter Linux mit (at)

Verwenden des Watch-Befehls unter Linux

Verwenden des tr-Befehls in Linux, um mit Charakteren zu spielen

So planen Sie Jobs mit Cron in Linux