So verwenden Sie at und Batch unter Linux zum Planen von Befehlen

Ein Terminalfenster auf einem Linux-System.

Fatmawati Achmad Zaenuri/Shutterstock



Wenn Sie einen Linux-Job planen möchten, der nur einmal ausgeführt wird, |_+_| ist übertrieben. Die |_+_| Befehlsfamilie ist das, was Sie brauchen! Und wenn Sie Prozesse nur ausführen möchten, wenn Ihr System über freie Ressourcen verfügt, können Sie |_+_| verwenden.

So planen Sie Linux-Jobs

Die |_+_| Dämon unterhält eine Liste der Jobs, die zu bestimmten Zeiten ausgeführt werden . Diese Aufgaben und Programme werden zu den geplanten Zeiten im Hintergrund ausgeführt. Dies bietet Ihnen große Flexibilität bei der Planung von Aufgaben, die wiederholt werden müssen. Ob Sie eine Aufgabe stündlich, täglich zu einer bestimmten Uhrzeit oder einmal im Monat oder Jahr ausführen müssen, Sie können sie in |_+_| einrichten.





Dies hilft jedoch nicht, wenn Sie eine Aufgabe so planen möchten, dass sie nur einmal ausgeführt wird. Sicher kannst du richten Sie es in |_+_| . ein , aber dann müssen Sie daran denken, zurückzugehen und die zu entfernen crontab-Eintrag nachdem die Aufgabe ausgeführt wurde, was unpraktisch ist.

Wenn Sie unter Linux mit einem Problem zu kämpfen haben, ist dies fast eine Garantie, dass auch jemand anderes damit zu kämpfen hat. Da es schon so lange Unix-ähnliche Betriebssysteme gibt, besteht zum Glück auch eine ausgezeichnete Chance, dass jemand eine Lösung für Ihr Problem entwickelt hat.



Für das oben beschriebene Problem haben sie es und es heißt |_+_|.

VERBUNDEN: So planen Sie Aufgaben unter Linux: Eine Einführung in Crontab-Dateien

Installieren des at-Befehls

Wir mussten |_+_| . installieren auf Ubuntu 18.04 und Manjaro 18.1.0 (es war bereits auf Fedora 31 installiert).



So installieren Sie |_+_| Verwenden Sie unter Ubuntu diesen Befehl:

cron

Anzeige

Nachdem die Installation abgeschlossen ist, können Sie |_+_| . starten Dämon mit diesem Befehl:

at

Auf Manjaro installieren Sie |_+_| mit diesem Befehl:

batch

Geben Sie nach Abschluss der Installation diesen Befehl ein, um |_+_| . zu starten Dämon:

cron

Bei jeder Distribution können Sie diesen Befehl eingeben, um sicherzustellen, dass |_+_| Daemon läuft:

cron

So verwenden Sie den at-Befehl interaktiv

Um |_+_| zu verwenden, müssen Sie ihm ein Datum und eine Uhrzeit für die Ausführung zuweisen. Sie können diese sehr flexibel schreiben, auf die wir später in diesem Artikel eingehen.

Obwohl wir |_+_| . verwenden werden interaktiv müssen Sie Datum und Uhrzeit im Voraus angeben. Wenn Sie nichts in die Befehlszeile eingeben oder etwas eingeben, das kein Datum und keine Uhrzeit ist, |_+_| antwortet mit verstümmelter Zeit, wie unten gezeigt:

cron at

Anzeige

Datums- und Uhrzeitangaben können explizit oder relativ sein. Angenommen, Sie möchten, dass ein Befehl in einer Minute ausgeführt wird. |_+_| weiß, was jetzt bedeutet, also können Sie |_+_| . verwenden und füge eine Minute hinzu, etwa so:

at

|_+_| druckt eine Nachricht und ein |_+_| Eingabeaufforderung und wartet darauf, dass Sie die Befehle eingeben, die Sie planen möchten. Betrachten Sie jedoch zunächst die folgende Nachricht:

Es sagt dir |_+_| startet eine Instanz des |_+_| Schale und Wille führe die Befehle darin aus . Ihre Befehle werden nicht in der Bash-Shell ausgeführt, die mit dem |_+_| . kompatibel ist Shell, hat aber einen umfangreicheren Funktionsumfang.

Wenn Ihre Befehle oder Skripte versuchen, eine von Bash bereitgestellte Funktion oder Einrichtung zu verwenden, aber |_+_| nicht, sie werden scheitern.

Es ist einfach zu testen, ob Ihre Befehle oder Skripte in |_+_| ausgeführt werden. Verwenden Sie die |_+_| Befehl zum Starten eines |_+_| Hülse:

at

Die Eingabeaufforderung ändert sich in ein Dollarzeichen (|_+_|), und Sie können jetzt Ihre Befehle ausführen und überprüfen, ob sie richtig funktionieren.

Anzeige

Um zur Bash-Shell zurückzukehren, geben Sie |_+_| . ein Befehl:

at

Sie werden keine Standardausgabe oder Fehlermeldungen von den Befehlen sehen. Dies liegt daran, dass die |_+_| Shell startet als Hintergrundaufgabe und läuft ohne irgendeine Art von Bildschirmoberfläche.

Jede Ausgabe der Befehle – ob gut oder schlecht – wird Ihnen per E-Mail zugesendet. Es wird über das interne Mailsystem an denjenigen gesendet, der das |_+_| . betreibt Befehl. Dies bedeutet, dass Sie dieses interne E-Mail-System einrichten und konfigurieren müssen.

Viele (die meisten) Linux-Systeme haben kein internes E-Mail-System, da es selten benötigt wird. Diejenigen, die dies tun, verwenden normalerweise ein System wie sendmail oder Postfix . Wenn Ihr System kein internes E-Mail-System hat, können Sie Skripte in Dateien schreiben lassen oder die Ausgabe in Dateien umleiten, um die Protokollierung hinzuzufügen.

Wenn der Befehl keine generiert Standardausgabe oder Fehlermeldungen , Sie erhalten sowieso keine E-Mail. Viele Linux-Befehle zeigen den Erfolg durch Stille an, sodass Sie in den meisten Fällen keine E-Mail erhalten.

VERBUNDEN: Was sind stdin, stdout und stderr unter Linux?

Jetzt ist es an der Zeit, einen Befehl in |_+_| einzugeben. Für dieses Beispiel verwenden wir eine kleine Skriptdatei namens |_+_| das löscht |_+_|, |_+_| und |_+_| Dateien. Geben Sie den Pfad zum Befehl wie unten gezeigt ein, und drücken Sie dann die Eingabetaste.

Anzeige

Eine weitere Eingabeaufforderung wird angezeigt, und Sie können beliebig viele Befehle hinzufügen. Es ist normalerweise bequemer, Ihre Befehle in einem einzigen Skript zu haben und dieses Skript einfach aus |_+_| aufzurufen.

Drücken Sie Strg+D, um |_+_| . zu sagen Sie sind mit dem Hinzufügen von Befehlen fertig. |_+_| zeigt , was bedeutet Ende der Übertragung . Die Jobnummer und die geplante Ausführung des Jobs werden Ihnen wie unten gezeigt mitgeteilt:

Geben Sie nach Ausführung des Jobs Folgendes ein, um Ihre internen E-Mails zu überprüfen:

at

Kommt keine Mail, müssen Sie von Erfolg ausgehen. In diesem Fall können Sie natürlich überprüfen, ob die |_+_| , |_+_| und |_+_| Dateien wurden gelöscht, um zu bestätigen, dass der Befehl funktioniert hat.

Geben Sie Folgendes ein, um das Ganze erneut auszuführen:

at

Geben Sie nach einer Minute Folgendes ein, um Ihre E-Mails erneut zu überprüfen:

atd

Hey, wir haben Post! Um die erste Nachricht zu lesen, drücken Sie 1 und dann die Eingabetaste.

Anzeige

Wir haben eine E-Mail von |_+_| . erhalten weil die Befehle im Skript Fehlermeldungen generiert haben. In diesem Beispiel gab es keine zu löschenden Dateien, da sie bei der vorherigen Ausführung des Skripts entfernt wurden.

Drücken Sie D+Enter, um die E-Mail zu löschen und Q+Enter, um das E-Mail-Programm zu beenden.

Datums- und Zeitformate

Bei den Zeitformaten, die Sie mit |_+_| verwenden können, sind Sie sehr flexibel. Hier einige Beispiele:

    Lauf um 11:00 Uhr:
    • at
    Lauf morgen um 11:00 Uhr:
    • at
    Lauf nächste Woche um 11:00 Uhr an diesem Tag:
    • at
    Ausführen zu dieser Zeit, an diesem Tag, nächste Woche:
    • at
    Lauf am nächsten Freitag um 11:00 Uhr:
    • now
    Läuft nächsten Freitag um diese Zeit:
    • at
    Lauf um 11:00 Uhr an diesem Tag, nächsten Monat:
    • at
    Lauf um 11:00 Uhr an einem bestimmten Datum:
    • at
    Ab jetzt 30 Minuten laufen:
    • sh
    Ab jetzt in zwei Stunden laufen:
    • sh
    Führen Sie morgen um diese Zeit aus:
    • sh
    Laufen Sie zu dieser Zeit am Donnerstag:
    • sh
    Lauf um 12:00 Uhr:
    • sh
    Lauf um 12:00 Uhr:
    • sh
    Wenn Sie ein Brite sind, können Sie sogar einen Befehl zur Teezeit (16:00 Uhr) planen:
    • $

Blick in die Job-Warteschlange

Sie können |_+_| . eingeben Befehl, um die Warteschlange der geplanten Jobs anzuzeigen, wie unten gezeigt.

Für jeden Befehl in der Warteschlange, |_+_| zeigt die folgenden Informationen an:

    Job-ID Geplantes Datum Geplante Zeit Stellen Sie den Job in die Warteschlange ein. Die Warteschlangen sind mit a, b usw. gekennzeichnet. Normale Aufgaben, die Sie mit |_+_| . planen gehe in die Warteschlange a, während Aufgaben mit |_+_| . geplant werden (wird später in diesem Artikel behandelt) in die Warteschlange gehen b. Die Person, die den Job geplant hat.

Verwenden von at in der Befehlszeile

Du musst nicht |_+_| . verwenden interaktiv; Sie können es auch für den Befehl verwenden. Dies erleichtert die Verwendung innerhalb von Skripten.

Sie können Befehle wie folgt an |_+_| weiterleiten:

exit

Der Job wird bis zum |_+_| akzeptiert und eingeplant, und die Jobnummer und das Ausführungsdatum werden wie zuvor gemeldet.

VERBUNDEN: Wie man Pipes unter Linux verwendet

Verwenden von at mit Befehlsdateien

Sie können auch eine Befehlsfolge in einer Datei speichern und diese dann an |_+_| übergeben. Dies kann eine reine Textdatei mit Befehlen sein – es muss kein ausführbares Skript sein.

Sie können die |_+_| (Datei) wie folgt, um einen Dateinamen an |_+_| zu übergeben:

sh

Sie können das gleiche Ergebnis erzielen, wenn Sie die Datei nach |_+_| umleiten:

at

Geplante Jobs aus der Warteschlange entfernen

Um einen geplanten Job aus der Warteschlange zu entfernen, können Sie |_+_| . verwenden Befehl. Wenn Sie zuerst die Warteschlange anzeigen möchten, um die Nummer des Jobs zu finden, den Sie entfernen möchten, können Sie |_+_| . verwenden . Verwenden Sie dann diese Jobnummer mit |_+_|, wie unten gezeigt:

at sweep.sh *.bak

So sehen Sie eine detaillierte Ansicht der Jobs

Wie bereits erwähnt, können Sie Jobs weit in die Zukunft planen. Manchmal vergisst du vielleicht, was ein Job tun wird. Die |_+_| Befehl zeigt Ihnen die Jobs in der Warteschlange, aber nicht, was sie tun werden. Wenn Sie eine Detailansicht eines Jobs sehen möchten, können Sie die |_+_| (Katze) Option.

Zuerst verwenden wir |_+_| um die Jobnummer zu finden:

*.tmp

Anzeige

Jetzt verwenden wir die Jobnummer 13 mit dem |_+_| Möglichkeit:

*.o

Hier ist eine Aufschlüsselung der Informationen, die wir über den Job erhalten:

    Erste Linie:Dies sagt uns, dass die Befehle unter dem |_+_| . ausgeführt werden Hülse. Zweite Reihe:Wir sehen, dass die Befehle sowohl mit einer Benutzer- als auch mit einer Gruppen-ID von 1000 ausgeführt werden. Dies sind die Werte für die Person, die das |_+_| . ausgeführt hat Befehl. Dritte Zeile:Die Person, die E-Mails erhält, die |_+_|sendet. Vierte Zeile:Der Benutzermaske ist 22. Dies ist die Maske, die verwendet wird, um die Standardberechtigungen für alle Dateien festzulegen, die in diesem |_+_| . erstellt wurden Sitzung. Die Maske wird von 666 abgezogen, was uns 644 ergibt (das oktale Äquivalent von |_+_|). Restliche Daten:Die Mehrheit sind Umgebungsvariablen.

    Ergebnisse eines Tests.Ein Test prüft, ob auf das Ausführungsverzeichnis zugegriffen werden kann. Wenn dies nicht möglich ist, wird ein Fehler ausgegeben und die Jobausführung abgebrochen. Die auszuführenden Befehle.Diese werden aufgelistet, und der Inhalt der geplanten Skripte wird angezeigt. Beachten Sie, dass das Skript in unserem obigen Beispiel zwar für die Ausführung unter Bash geschrieben wurde, es jedoch in einem |_+_| . ausgeführt wird Hülse.

Der Batch-Befehl

Die |_+_| Befehl funktioniert ähnlich zum |_+_| Befehl, jedoch mit drei wesentlichen Unterschieden:

  1. Sie können nur die |_+_| . verwenden Befehl interaktiv.
  2. Anstatt Jobs so zu planen, dass sie zu einem bestimmten Zeitpunkt ausgeführt werden, fügen Sie sie der Warteschlange hinzu und |_+_| Befehl führt sie aus, wenn das System durchschnittliche Belastung kleiner als 1,5 ist.
  3. Aus den oben genannten Gründen geben Sie niemals ein Datum und eine Uhrzeit mit dem |_+_| . an Befehl.

Wenn Sie |_+_| . verwenden Befehl rufen Sie ihn mit dem Namen ohne Befehlszeilenparameter wie folgt auf:

at

Fügen Sie als Nächstes Aufgaben hinzu, wie Sie es mit dem |_+_| . tun würden Befehl.

Kontrollieren des Zugriffs auf das at-Kommando

Die |_+_| und |_+_| Dateien steuern, wer die |_+_| . verwenden kann Familie von Befehlen. Diese befinden sich innerhalb der |_+_| Verzeichnis. Standardmäßig sind nur die |_+_| Datei existiert und wird erstellt, wenn |_+_| ist installiert.

So funktionieren diese:

  • |_+_|: Listet Anwendungen und Entitäten auf, die |_+_| . nicht verwenden können Jobs zu planen.
  • |_+_|: Listet auf, die |_+_| . verwenden können Jobs zu planen. Wenn die |_+_| Datei existiert nicht, |_+_| verwendet nur die |_+_| Datei.
Anzeige

Standardmäßig kann jeder |_+_| verwenden. Wenn Sie einschränken möchten, wer es verwenden kann, verwenden Sie das |_+_| Datei, um diejenigen aufzulisten, die es können. Dies ist einfacher, als alle hinzuzufügen, die |_+_| . nicht verwenden können zum |_+_| Datei.

Hier ist, was die |_+_| Datei sieht so aus:

at

Die Datei listet Komponenten des Betriebssystems auf, die |_+_| nicht verwenden können. Viele von ihnen werden aus Sicherheitsgründen daran gehindert, sodass Sie keine aus der Datei entfernen möchten.

Jetzt bearbeiten wir die |_+_| Datei. Wir werden |_+_| . hinzufügen und |_+_|, aber niemand anderes darf |_+_| verwenden.

Zuerst geben wir Folgendes ein:

at

Im Editor fügen wir die beiden Namen wie unten gezeigt hinzu und speichern dann die Datei.

Wenn jemand anderes versucht, |_+_| zu verwenden, wird ihm mitgeteilt, dass er keine Berechtigung hat. Angenommen, ein Benutzer namens |_+_| gibt folgendes ein:

*.bak

Er würde abgelehnt werden, wie unten gezeigt.

Anzeige

Nochmal, |_+_| ist nicht im |_+_| Datei. Sobald du jemanden in die |_+_| . steckst Datei, allen und allen anderen wird die Berechtigung zur Verwendung von |_+_| verweigert.

Ideal für Einzelstücke

Wie Sie sehen können, sind beide |_+_| und |_+_| sind ideal für Aufgaben, die Sie nur einmal ausführen müssen. Nochmals als kurzer Rückblick:

  • Wenn Sie etwas tun müssen, das nicht regelmäßig ist, planen Sie es mit |_+_|.
  • Wenn Sie eine Aufgabe nur ausführen möchten, wenn die Systemlast niedrig genug ist, verwenden Sie |_+_|.
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
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Was ist MIL-SPEC Fallschutz?
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
  • › So finden Sie Ihr Spotify Wrapped 2021
Profilfoto von Dave McKay Dave McKay
Dave McKay benutzte zum ersten Mal Computer, als Lochstreifen in Mode waren, und programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute hauptberuflich Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Sein Schreiben wurde von howtogeek.com, cloudavvyit.com, itenterpriser.com und opensource.com veröffentlicht. Dave ist ein Linux-Evangelist und Open-Source-Verfechter.
Vollständige Biografie lesen

Interessante Artikel