Ich benutze Crontab zum ersten Mal. Sie möchten einige sehr einfache Test-Cron-Tasks schreiben und ausführen.
$crontab * * * * * echo "Hi"
produziert nichts.
crontab */1 * * * * echo "hi"
sagt */1: No such file or directory
.
Wie liste ich die aktuell ausgeführten Cron-Tasks auf (nicht nur die, die ich besitze, sondern auch die, die von anderen Benutzern wie root gestartet wurden)?
Und wie lösche ich eine bestimmte Cron-Aufgabe?
cron
administration
xyz
quelle
quelle
Antworten:
Sie können nicht so verwenden
crontab
. Hier erfahren Sieman crontab
, wie Sie dieses Dienstprogramm richtig aufrufen.Sie möchten
crontab -e
die Cron-Einträge des aktuellen Benutzers bearbeiten (Sie können Zeilen hinzufügen / ändern / entfernen). Hiermit könnencrontab -l
Sie die aktuelle Liste der konfigurierten Aufgaben anzeigen.Wenn Sie die Crontabs anderer Benutzer sehen möchten, ist dies nicht möglich, ohne bei Standardinstallationen als Root angemeldet zu sein. Unter Wie liste ich alle Cron-Jobs für alle Benutzer auf, um alle aufzulisten (als root).
Hinweis: Seien Sie sehr vorsichtig, wenn Sie Shell-Globbing-Zeichen in der Befehlszeile verwenden (
*
und?
insbesondere).*
wird auf die Liste der Dateien im aktuellen Verzeichnis erweitert, was unerwartete Auswirkungen haben kann. Wenn Sie*
etwas als Argument übergeben möchten , zitieren Sie es ('*'
).quelle
mail
von der Befehlszeile sollten Sie Ihre lokale Mail - Box zuzugreifen, falls konfigurierte.) Um zu sehen , die ‚hallo‘ in der grafischen Umgebung, können Sie die Aufgabe gestellt , könnten als:* * * * * export DISPLAY=:0; xmessage 'hi'
.Es gibt zwei Möglichkeiten, die eigenen zu bearbeiten
crontab
:interaktiv, mit
crontab -e
, diecrontab
in dem von$VISUAL
oder$EDITOR
, oder angegebenen Editor öffnenNicht-interaktiv, mit
crontab crontab.txt
, die einfach die importierencrontab
Einträge aus der Dateicrontab.txt
, ersetzt die bestehende aktive crontab für den aktuellen Benutzer.Das Problem, das Sie haben, ist, dass Sie einfach den
crontab
falschen Befehl verwenden.Das Folgende betrifft nicht interaktive Crontab-Manipulationen:
Um bestimmte Aufgaben programmgesteuert zu entfernen , können Sie beispielsweise Folgendes tun
Wo
PATTERN
ist ein regulärer Ausdruck, der zu den Aufgaben passt, die Sie entfernen möchten? Hiercrontab -l
geben Sie Ihre aktuellecrontab
.Wenn Sie Einträge in einer Datei mit dem Namen haben
crontab-fragment.txt
, die Sie aus der aktiven Crontab entfernen möchten,Dies liest die aktuelle crontab und filtert (entfernt) alle Zeilen, die auch in der Datei
crontab-fragment.txt
im aktuellen Verzeichnis vorkommen (unter Verwendung eines vollständigen Zeilenfolgenvergleichs). Das Ergebnis wird gespeichertcrontab.txt
und von dort geladen, um die aktuelle Crontab zu ersetzen.Um fügen Sie eine oder mehrere Aufgabe , so etwas wie
Dies setzt voraus, dass die Datei
crontab-fragment.txt
die Einträge enthält, die Sie hinzufügen möchten. Es liest die aktuelle Crontab, hängt die Einträgecrontab-fragment.txt
an diese an und erstellt siecrontab.txt
. Diecrontab.txt
Datei ersetzt dann die aktuelle crontab.quelle
Wenn Sie die crontab interaktiv ändern möchten, führen Sie den Befehl
crontab -e
ohne andere Option aus. Dadurch wird ein Editor für eine Kopie der Crontab gestartet. Wenn Sie den Editor verlassen , wird die bearbeitete Kopie zur neuen Crontab. Sie können über die UmgebungsvariablenVISUAL
undEDITOR
steuern, welcher Editor gestartet wird . Führen Sie den folgenden Befehl aus, um Ihre Crontab aufzulistencrontab -l
.Wenn Sie die crontab in einem Skript ändern möchten, legen Sie
VISUAL
undEDITOR
den Pfad zu einem Skript oder einem Shell-Snippet fest, mit dem die angegebene Datei geändert wird. Der Editored
ist hier eine Möglichkeit, odersed -i
wenn Ihre Implementierungsed
diese Option hat. Wenn Sie bedingungslos eine Zeile hinzufügen möchten, können Sie verwendenecho … >>
. Achten Sie beim Zitieren darauf; Wenn Sie sich nicht sicher sind, schreiben Sie ein Skript und übergeben Sie den Namen des Skripts alsEDITOR
.quelle
Dies ist ein bisschen spät, aber für andere, die hier suchen. Es gibt einfachere Möglichkeiten, als die Eingabe- / Ausgabestreams mit
VISUAL
und zu bearbeitenEDITOR
.Sie können einfach Ihren Cron-Zeitplan in eine Datei schreiben, 1 Job pro Zeile, und den Befehl verwenden,
crontab [filename]
damit Siecat
Ihre Jobsfilename
als Teil Ihres Skripts einlesen können. Rufen Sie am Ende schließlich crontab auf, wenn Sie möchten.In der Tat ist dies die häufigste Verwendung als
man crontab
Hinweis, indem Sie es zuerst auflistenquelle
Wenn Sie Einträge
crontab
durch Automatisierung oder über die Befehlszeile hinzufügen möchten , können Sie dies tun (Festlegen der gewünschten Zeiten).Dann:
die crontabs nachladen.
quelle
/var/spool/cron
. Ein besserer Weg wäre durch dencrontab(1)
Befehl.Versuchen Sie es mit diesem Befehl:
Dann fügen Sie Ihren Cron Job hinzu:
in dieser Datei.
quelle
Ich möchte die Art und Weise hervorheben, wie ich sie im Folgenden beschreibe, obwohl dies bereits in einem anderen Kommentar erwähnt wurde. Ich fand es äußerst nützlich, wenn ich Einträge zu einer Datei hinzufügte und die Datei dann zu crontab hinzufügte. Diese Datei würde die beiden folgenden Einträge enthalten und der Dateiname wäre
hello-world-crontab.txt
.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
Dann habe ich den folgenden Befehl ausgeführt, um diese Einträge zur crontab hinzuzufügen.
$ crontab hello-world-crontab.txt
Im nächsten Schritt müssen Sie überprüfen, ob diese Einträge hinzugefügt wurden.
$ crontab -l
Eine kurze Erklärung, was jeder Eintrag bewirkt:
/home/user/greeting.txt
jeden Tag um 9 Uhr in die Akte .0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
quelle