Wenn Sie einen Linux-Job planen möchten, der nur einmal ausgeführt wird, cron
es ist übertrieben. das at
Befehlsfamilie ist das, was Sie brauchen! Und wenn Sie Prozesse nur ausführen möchten, wenn Ihr System über freie Ressourcen verfügt, du kannst verwenden batch
.
So planen Sie Linux-Jobs
das cron
Dämon hält eine Liste von Jobs, die Sie zu bestimmten Zeiten ausführen. Diese Aufgaben und Programme werden zur geplanten Zeit im Hintergrund ausgeführt. Dies gibt Ihnen große Flexibilität bei der Planung von Aufgaben, die wiederholt werden müssen.. Ob Sie eine Aufgabe einmal pro Stunde ausführen müssen, jeden Tag zu einer bestimmten Zeit, oder mindestens einmal im Monat oder im Jahr, du kannst es einstellen cron
.
Trotz dieses, Dies hilft nicht, wenn Sie eine Aufgabe so planen möchten, dass sie nur einmal ausgeführt wird. Natürlich, du kannst es einstellen cron
, aber dann müssen Sie daran denken, zurückzugehen und die zu entfernen crontab-Eintrag nachdem die Aufgabe ausgeführt wurde, was unpraktisch ist.
Mit Linux, wenn Sie mit einem Hindernis zu kämpfen haben, es ist fast eine Garantie, dass auch jemand anderes mit ihm gekämpft hat. Glücklicherweise, weil es schon so lange Unix-ähnliche Betriebssysteme gibt, Außerdem besteht eine große Chance, dass jemand eine Lösung für Ihr Problem gefunden hat.
Für das zuvor beschriebene Problem, sie haben es geschafft und es heißt at
.
VERBUNDEN: So planen Sie Aufgaben unter Linux: Einführung in Crontab-Dateien
Installieren des at-Befehls
Wir mussten installieren at
unter Ubuntu 18.04 und Manjaro 18.1.0 (es war bereits in Fedora . installiert 31).
Installieren at
unter Ubuntu, benutze diesen Befehl:
sudo apt-get installieren bei
Nach Abschluss der Installation, du kannst das starten at
Dämon mit diesem Befehl:
sudo systemctl enable --now atd.service
In Manjaro, du installierst at
mit diesem Befehl:
sudo pacman -Sy at
Nach Abschluss der Installation, Geben Sie diesen Befehl ein, um die zu starten at
Teufel:
sudo systemctl enable --now atd.service
In jeder Verteilung, Sie können diesen Befehl eingeben, um sicherzustellen, dass atd
der daemon läuft:
ps -e | grep atd
So verwenden Sie den at-Befehl interaktiv
Verwenden at
, Sie müssen ein Datum und eine Uhrzeit für die Ausführung zuweisen. Es gibt viel Flexibilität in der Art und Weise, wie Sie sie schreiben können, die wir später in diesem Beitrag behandeln werden.
Trotz dieses, auch wenn wir es benutzen werden at
interaktiv, Sie müssen das Datum und die Uhrzeit im Voraus angeben. Wenn Sie nichts in die Befehlszeile einfügen oder etwas eingeben, das kein Datum und keine Uhrzeit ist, at
antwortet mit “Unlesbare Zeit”, wie im Folgenden gezeigt:
bei
bei Banane
Datums- und Uhrzeitangaben können explizit oder relativ sein. Als Beispiel, Angenommen, Sie möchten, dass ein Befehl innerhalb einer Minute ausgeführt wird. at
weiß, was es bedeutet “jetzt”, damit du es verwenden kannst now
und gib ihm eine Minute, So:
jetzt + 1 Minute
at
eine Nachricht drucken und a at
und warten Sie, bis Sie die Befehle eingeben, die Sie programmieren möchten. Entscheiden , trotz dieses, bedenke die Nachricht, wie im Folgenden gezeigt:
Sagt Ihnen at
Starten Sie eine Instanz von sh
Schale und Wille führe die Befehle darin aus. Ihre Befehle werden nicht in der Bash-Shell ausgeführt, was mit dem kompatibel ist sh
Shell, hat aber einen reichhaltigeren Satz an Funktionen.
Wenn Ihre Befehle oder Skripte versuchen, eine von Bash bereitgestellte Funktion oder Einrichtung zu verwenden, aber sh
es nicht, wird versagen.
Es ist einfach zu testen, ob Ihre Befehle oder Skripte in ausgeführt werden sh
. Verwenden Sie die sh
Befehl zum Starten von a sh
Hülse:
NS
Die Eingabeaufforderung ändert sich in ein Dollarzeichen ($
), und jetzt können Sie Ihre Befehle ausführen und überprüfen, ob sie richtig funktionieren.
Um zur Bash-Shell zurückzukehren, Schreiben Sie die exit
Befehl:
Ausfahrt
Sie werden keine Fehlermeldungen oder Standardausgaben von den Befehlen sehen. Das ist weil sh
Shell startet als Hintergrundaufgabe und läuft ohne Bildschirmoberfläche.
Jede Ausgabe von den Befehlen, gut oder schlecht, es wird Ihnen per E-Mail zugesandt. Es wird über das interne Mailsystem an denjenigen gesendet, der die at
Befehl. Dies bedeutet, dass Sie dieses interne E-Mail-System installieren und konfigurieren müssen.
Eine Menge (die Mehrheit) der Linux-Systeme haben kein internes E-Mail-System, da wird selten gebraucht. Diejenigen, die normalerweise ein System wie . verwenden Mail senden Ö Suffix. Wenn Ihr System kein internes E-Mail-System hat, Sie können Skripte in Dateien schreiben lassen oder die Ausgabe in Dateien umleiten, um Datensätze hinzuzufügen.
Wenn der Befehl keine Fehlermeldung oder Standardausgabe erzeugt, du bekommst sowieso keine email. Viele Linux-Befehle zeigen Erfolg durch Stille an, also in den meisten Fällen, Sie erhalten keine E-Mail.
VERBUNDEN: Was sind stdin, stdout und stderr auf Linux?
Jetzt ist es an der Zeit, einen Befehl einzugeben at
. Für dieses Beispiel, Wir verwenden eine kleine Skriptdatei namens sweep.sh
das löscht die *.bak
, *.tmp
, und *.o
Aufzeichnungen. Geben Sie den Pfad zum Befehl ein, wie im Folgenden gezeigt, und drücken Sie dann die Eingabetaste.
Eine weitere Eingabeaufforderung erscheint und Sie können so viele Befehle hinzufügen, wie Sie möchten. Im Allgemeinen, Es ist bequemer, Ihre Befehle in einem einzigen Skript zu haben und dieses Skript einfach von innen aufzurufen at
.
Presione Strg + D zu sagen at
Sie haben das Hinzufügen von Befehlen abgeschlossen. at
zeigt an
Nachdem der Job ausgeführt wurde, Schreiben Sie Folgendes, um Ihre interne E-Mail zu überprüfen:
Wenn keine Post da ist, muss den Erfolg übernehmen. Auf jeden Fall, unter diesen Umständen, Sie können überprüfen und sehen, ob die *.bak
, *.tmp
, und *.o
Die Dateien wurden entfernt, um zu bestätigen, dass der Befehl funktioniert hat.
Geben Sie Folgendes ein, um alles noch einmal zu starten:
jetzt + 1 Minute
Nach einer Minute, Schreiben Sie Folgendes, um Ihre E-Mails zu überprüfen:
¡Oye, Wir haben Post! Um Nachricht Nummer eins zu lesen, Drücken Sie 1 und drücken Sie dann die Eingabetaste.
Wir haben eine E-Mail erhalten von at
weil die Befehle im Skript Fehlermeldungen generierten. In diesem Beispiel, Es gab keine Dateien zu entfernen, weil wir das Skript zuvor ausgeführt haben, beseitigte sie.
D drücken + Geben Sie ein, um die E-Mail zu entfernen und Q + Enter um das Mailprogramm zu beenden.
Datums- und Zeitformate
Bei den Zeitformaten, die Sie verwenden können, sind Sie sehr flexibel at
. Hier sind einige Beispiele:
- Lauf um 11:00 bin:
- Lauf morgen um 11:00 bin:
- Lauf um 11:00 ein. m. Ab diesem Tag nächste Woche:
- Laufen Sie zu dieser Zeit, an diesem Tag, nächste Woche:
- Lauf um 11:00 bin nächsten Freitag:
- Laufen Sie nächsten Freitag um diese Zeit:
- Lauf um 11:00 bin an diesem datum, nächsten Monat:
- Lauf um 11:00 bin an einem bestimmten datum:
- Lauf innerhalb 30 Protokoll:
- Innerhalb von zwei Stunden laufen:
- Lauf morgen um diese Zeit:
- Lauf zu dieser Zeit am Donnerstag:
- Lauf um 12:00 bin:
- Lauf um 12:00 pm:
- Wenn du Brite bist, Sie können sogar einen Befehl so planen, dass er zur Teezeit ausgeführt wird (4 P. M.):
Blick in die Job-Warteschlange
Du kannst das schreiben atq
Befehl zum Anzeigen der Warteschlange der geplanten Jobs, wie im Folgenden gezeigt.
Für jeden Befehl in der Warteschlange, atq
zeige die nächsten Informationen:
- Job-Identifikation
- Geplanter Termin
- Geplante Zeit
- Warteschlange, wo der Job ist. Warteschlangen werden als “ein”, “B”, etc. Normale Aufgaben, mit denen Sie planen
at
In die Warteschlange einsteigen “ein”, während die Aufgaben, mit denen Sie planen,batch
(die später in diesem Beitrag besprochen werden) In die Warteschlange einsteigen “B”. - Die Person, die den Job geplant hat.
Verwenden von at in der Befehlszeile
Sie sollten nicht verwenden at
interaktiv; Sie können es auch im Befehl verwenden. Dies macht es einfach, interne Skripte zu verwenden.
Sie können Befehle an weiterleiten at
, so was:
Echo "sh ~/sweep.sh" | bei 08:45 BIN
Der Auftrag wird angenommen und eingeplant von at
, und die Auftragsnummer und das Ausführungsdatum werden wie bisher gemeldet.
VERBUNDEN: Wie man Pipes unter Linux verwendet
Verwenden Sie bei mit Skripten
Sie können ein Skript auch in einer Datei speichern und dann an . weitergeben at
. Es kann eine Nur-Text-Skriptdatei sein, es muss kein ausführbares Skript sein.
Du kannst den ... benutzen -f
(Datei) wie folgt, um einen Dateinamen an . zu übergeben at
:
jetzt + 5 Minuten -f clean.txt
Sie können das gleiche Ergebnis erzielen, wenn Sie die Datei an umleiten at
:
jetzt + 5 Protokoll < clean.txt
Geplante Jobs aus der Warteschlange entfernen
So entfernen Sie einen geplanten Job aus der Warteschlange, du kannst den ... benutzen atrm
Befehl. Wenn Sie zuerst die Warteschlange sehen möchten, um die Nummer des Jobs zu finden, den Sie entfernen möchten, du kannst verwenden atq
. Anschließend, Verwenden Sie diese Arbeitsnummer mit atrm
, Wie nachfolgend dargestellt:
und
atrm 11
und
So zeigen Sie eine Detailansicht der Jobs an
Wie bereits erwähnt, kann Jobs in der Zukunft planen. Manchmal, Sie können vergessen, was ein Job tun wird. das atq
Der Befehl zeigt die Jobs in der Warteschlange an, aber nicht was sie tun werden. Wenn Sie eine Detailansicht eines Jobs sehen möchten, du kannst den ... benutzen -c
(Katze) Möglichkeit.
Entscheiden , wir werden verwenden atq
um die Jobnummer zu finden:
und
Jetzt, Wir werden die Jobnummer verwenden 13 mit dem -c
Möglichkeit:
bei -c 13
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
sh
Hülse. - Zweite Reihe: Wir sehen, dass die Befehle mit einer Benutzer- und Gruppen-ID von ausgeführt werden 1000. Dies sind die Werte für die Person, die das
at
Befehl. - Dritte Zeile: Die Person, die die E-Mails erhält.
at
senden. - Vierte Zeile: das Benutzermaske es ist 22. Dies ist die Maske, die verwendet wird, um die Standardberechtigungen für jede in diesem erstellte Datei zu bestimmen
sh
Sitzung. Die Maske wird abgezogen von 666, was gibt uns 644 (das identische Oktal vonrw-r--r--
). - Verbleibende Daten: Die meisten sind Umgebungsvariablen.
- Ergebnisse eines Tests. Ein Test prüft, ob das Laufverzeichnis eingegeben werden kann. Wenn er nicht kann, ein Fehler wird generiert und die Jobausführung wird 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 für die Ausführung in Bash . geschrieben wurde, läuft noch auf a
sh
Hülse.
Der Batch-Befehl
das batch
Befehl funktioniert ähnlich al at
Befehl, aber mit drei signifikanten Unterschieden:
- Sie können nur die
batch
Befehl interaktiv. - Anstatt Jobs so zu planen, dass sie zu einem bestimmten Zeitpunkt ausgeführt werden, fügt sie der Warteschlange hinzu und die
batch
Der Befehl führt sie aus, wenn die durchschnittliche Systemlast kleiner ist als 1,5. - Aufgrund der oben genannten, Geben Sie niemals ein Datum und eine Uhrzeit mit dem . an
batch
Befehl.
Wenn Sie das verwenden batch
Befehl, ruft es beim Namen ohne Befehlszeilenparameter wie diese auf:
Charge
Nächste, fügen Sie Aufgaben hinzu, so wie Sie es mit der at
Befehl.
Kontrollieren Sie den Zugriff auf das at-Kommando
das at.allow
und at.deny
die Dateien steuern, wer die at
Befehlsfamilie. Diese finden Sie in der /etc
Verzeichnis. Standard, nur der at.deny
Datei existiert und wird erstellt, wenn at
es ist installiert.
So funktionieren diese:
at.deny
: Listen Sie die Anwendungen und Entitäten auf, die nicht verwendet werden könnenat
um Jobs zu planen.at.allow
: Listen, die sie verwenden könnenat
um Jobs zu planen. Wenn erat.allow
Die Datei existiert nicht,at
benutze einfach dieat.deny
Verfahren.
Standardmäßig, jeder kann benutzen at
. Wenn Sie einschränken möchten, wer es verwenden kann, benutze el at.allow
Datei, um diejenigen aufzulisten, die das können. Das ist einfacher, als alle hinzuzufügen, die nicht verwenden können at
al at.deny
Verfahren.
Das ist was at.deny
die datei sieht so aus:
sudo weniger /etc/at.deny
Die Datei listet die Betriebssystemkomponenten auf, die sie nicht verwenden können at
. Viele von ihnen können dies aus Sicherheitsgründen nicht, Sie möchten also keine der Dateien entfernen.
Jetzt, wir werden die bearbeiten at.allow
Verfahren. Lass uns hinzufügen dave
und mary
, aber niemand sonst kann es benutzen at
.
Entscheiden , wir schreiben folgendes:
sudo gedit /etc/at.allow
Im Editor, wir fügen die beiden namen hinzu, wie im Folgenden gezeigt, und dann speichern wir die Datei.
Wenn jemand anderes versucht zu verwenden at
, Sie werden dir sagen, dass du keine Erlaubnis hast. Als Beispiel, Sagen wir, ein Benutzer namens eric
schreib das Folgende:
bei
Würde abgelehnt, wie im Folgenden gezeigt.
Wieder, eric
Ist nicht im at.deny
Verfahren. Sobald Sie jemanden in die at.allow
Datei, allen anderen wird die Nutzung verweigert at
.
Super für außergewöhnliche Anlässe
Wie du siehst, beide at
und batch
Sie sind ideal für Aufgaben, die Sie nur einmal ausführen müssen. Wieder, als kurzer Rückblick:
- Wenn Sie etwas anderes als ein normales Verfahren tun müssen, Programm mit
at
. - Wenn Sie eine Aufgabe nur ausführen möchten, wenn die Systemlast niedrig genug ist, verwenden
batch
.