Frage Wie richte ich einen Cron-Job ein?


Ich möchte eine Aufgabe planen, die regelmäßig ausgeführt wird und gehört habe, dass Cron der richtige Weg dafür ist.

Wie füge ich Cron-Jobs in Ubuntu hinzu?


486
2017-08-16 08:25


Ursprung




Antworten:


Fügen Sie ein Shell-Skript in einen dieser Ordner ein: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly oder /etc/cron.weekly.

Wenn Ihnen das nicht ausreicht, können Sie spezifischere Aufgaben hinzufügen, z. zweimal im Monat oder alle 5 Minuten. Gehe zum Terminal und tippe:

crontab -e

Dies öffnet Ihre persönliche Crontab (Cron-Konfigurationsdatei). Die erste Zeile in dieser Datei erklärt alles! In jeder Zeile können Sie einen Befehl zum Ausführen und seinen Zeitplan definieren, und das Format ist ziemlich einfach, wenn Sie den Dreh raushaben. Die Struktur ist:

minute hour day-of-month month day-of-week command

Für alle Nummern können Sie Listen verwenden, z. 5,34,55 im Minutenfeld bedeutet "Lauf um 5 Uhr nach, 34 nach und 55 nach der Stunde, die definiert ist".

Sie können auch Intervalle verwenden. Sie sind wie folgt definiert: */20. Dieses Beispiel bedeutet jeden 20., also in der Spalte Minuten entspricht 0,20,40.

Also jeden Montag um 5:30 Uhr einen Befehl auszuführen:

30 17 * * 1 /path/to/command

oder alle 15 Minuten

*/15 * * * * /path/to/command

Beachten Sie, dass der Wochentag von 0-6 geht, wobei 0 Sonntag ist.

Sie können mehr lesen Hier.


600
2017-08-16 08:58



Diese sind systemweit und laufen mit hohen Privilegien. Ich würde nichts dort hinstellen, außer es besteht dringender Bedarf nach Zugang oder Erlaubnis. Als Faustregel versuchen Sie, Dinge ohne Fähigkeiten zu tun. Daher mag ich diese Antwort besser: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/... - H Marcelo Morales
@Marcelo Morales, der auch die angegebenen Befehle als root ausführen wird! Wenn Sie auf der anderen Seite nicht sudo verwenden, dann erstellen Sie einen Benutzer crontab und dies wird als der Benutzer ausgeführt, der es erstellt hat! - LassePoulsen
* / 15 * * * * / Pfad / zu / Befehl war sehr praktisch für mich! Vielen Dank! - Andrew Odendaal
Es ist erwähnenswert, dass diese Änderungen automatisch angewendet werden, Sie müssen nichts neu starten / neu laden. - Molomby
Ein weiterer nützlicher Tipp ist, dass statt */15 * * * * /path/to/command, du kannst tun @reboot /path/to/command um etwas beim Start auszuführen. - Kenneth Worden


Wenn der Job, den Sie ausführen möchten, mit den gleichen Berechtigungen wie Ihr Benutzer ausgeführt werden kann, empfehle ich die Verwendung eines Benutzers Crontab, die Sie bearbeiten können, indem Sie ausgeführt werden EDITOR="gedit" crontab -e(das wird verwendet gedit um die Crontab-Datei zu bearbeiten) oder einfach crontab -e(der den Standardeditor verwendet) in einem Terminal.

Wenn Sie beispielsweise alle 10 Minuten etwas ausführen möchten, fügen Sie eine Zeile wie diese hinzu

*/10 * * * * /usr/bin/somedirectory/somecommand

und speichern Sie die Datei.

Sie können den Inhalt des Benutzers crontab mit sehen crontab -l.

Am flexibelsten ist es, das System crontab zu verwenden, das Sie bearbeiten können, indem Sie es ausführen sudo crontab -e in einem Terminal. Dadurch können Sie Ihre Befehle als root (falls Sie diese Berechtigungsebene benötigen) oder jeden anderen Benutzer auf dem System ausführen.

Dann wenn du alle 10 Minuten etwas laufen lassen willst WurzelZum Beispiel fügen Sie eine Zeile wie folgt hinzu

*/10 * * * * root /usr/bin/somedirectory/somecommand

und speichern Sie die Datei.(Beachten Sie die Hinzufügung des Benutzers zur Zeile)

Sie können den Inhalt der System-Crontab-Datei mit sehen sudo crontab -l.

Weitere Details unter: https://help.ubuntu.com/community/CronHowto


93
2017-08-16 09:21



Hier ist ein süßer interaktiver Cron-Manipulator, der Ihnen die englische Sprache zur Cron-Zeit geben wird crontab.guru - CTS_AE


Wenn Sie es bevorzugen, eine GUI zu verwenden, können Sie zum Software Center gehen und installieren Geplante Aufgaben (oder laufe sudo apt-get install gnome-schedule). Es wird eine leistungsfähige GUI zum Hinzufügen von Cron-Aufgaben zur Verfügung stellen.

Wenn Sie diese Methode verwenden, werden Tasks standardmäßig als eigener Benutzer und nicht als root ausgeführt. Das ist normalerweise eine gute Sache.


51
2018-01-31 23:59



für 16.04 anscheinend nicht verfügbar bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060 - TankorSmash
@TankorSmash Sie können es bekommen Hier - M. Becerra
Paketanforderungen können am 16.04 nicht erfüllt werden - Odysseus Ithaca


ich empfehle KDE-Taskplaner (kde-config-cron)  Install kde-config-cron. Zugang von der Systemeinstellungen in dem Taskplaner Modul dort.

Es verwaltet sowohl persönliche als auch System-Crontabs, und die Leichtigkeit der Erstellung der Zeitgrenzen hat mich sehr überrascht (siehe Screenshot unten). Ich denke, dieser Teil wird wirklich unterschätzt.

enter image description here


24
2018-02-11 14:35





KDE Taskplaner funktioniert nicht in regulärem Ubuntu. Es funktioniert nur in KDE-Systemen wie KUbuntu. Für nicht-KDE-Systeme verwenden Sie lieber gnome-schedule

$ sudo apt-get install gnome-schedule

Die App ist geplante Aufgaben im Dash.


11
2017-09-27 20:25



Es wird nicht für Ubuntu 16.04 gefunden - SaidbakR
Bitte schauen Sie sich um I can't install gnome schedule on Ubuntu 16.04 @ askubuntu.com/questions/785657/ .... Es gibt ein Paket zum Herunterladen @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/.... Einfach ausführen $ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb - Antonio


Ich wollte einen Cron-Job so einrichten, dass er ein Bash-Skript durchläuft, also würde das Ausführen des Skripts einen Cron-Job hinzufügen.

Ich habe festgestellt, dass wenn Sie Folgendes nutzen:

crontab -e 

Dann erstellt es die Datei:

/var/spool/cron/crontabs/root 

Dabei ist root der Name des Benutzers, der den Befehl crontab ausführt. Auf dieser Grundlage und zumindest in 14.04 können wir die folgenden Bash-Befehle ausführen, um einen neuen Cron-Job zu erstellen:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

Wir müssen auch die korrekte Eigentümerschaft für die Datei festlegen:

chown root:root /var/spool/cron/crontabs/root

Und legen Sie die richtigen Berechtigungen fest:

chmod 600 /var/spool/cron/crontabs/root

Wenn du rennst crontab -e Es gibt bereits Cron-Jobs in der Liste. Anschließend können Sie die Liste mithilfe des folgenden Befehls anhängen:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

8