Wie richte ich einen Cron-Job ein?


Zur akzeptierten Antwort gehen


Ich möchte eine Aufgabe planen, die regelmäßig ausgeführt wird, und habe gehört, dass dies mit Cron möglich ist.

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


540





2010-08-16




Anzahl der Antworten: 7


Setzen Sie ein Shell - Skript in einem dieser Ordner: /etc/cron.daily , /etc/cron.hourly , /etc/cron.monthly oder /etc/cron.weekly .

Wenn Ihnen dies nicht ausreicht, können Sie spezifischere Aufgaben hinzufügen, z. B. zweimal im Monat oder alle 5 Minuten. Gehen Sie zum Terminal und geben Sie Folgendes ein:

 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 auszuführenden Befehl und seinen Zeitplan definieren. Das Format ist recht einfach, wenn Sie den Überblick haben. Die Struktur ist:

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

Für alle Zahlen, die Sie verwenden können, werden Listen, z. B. 5,34,55 im Minutenfeld, um 5, 34 und 55 nach jeder definierten Stunde ausgeführt.

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

So führen Sie jeden Montag um 5:30 Uhr nachmittags einen Befehl aus:

 30 17 * * 1 /path/to/command
 

oder alle 15 Minuten

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

Beachten Sie, dass der Wochentag von 0 bis 6 reicht, wobei 0 für Sonntag steht.

Sie können hier mehr lesen .


662



Wenn der Job, den Sie ausführen möchten, mit den gleichen Berechtigungen wie Ihr Benutzer ausgeführt werden kann, empfehle ich die Verwendung einer Benutzer-Crontab, die Sie ausführen können EDITOR="gedit" crontab -e (wobei die Crontab-Datei mit gedit bearbeitet wird) oder einfach crontab -e (wobei der Standardeditor verwendet wird). 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 .

Um einen Cron-Job hinzuzufügen, der als root ausgeführt wird, können Sie die crontab von root bearbeiten, indem Sie ausführen sudo crontab -e .

Am flexibelsten ist die Verwendung der System-Crontab, /etc/crontab die Sie nur mit Root-Rechten bearbeiten können. In dieser Datei muss der Benutzer jeden Befehl wie angegeben ausführen, damit Sie Ihre Befehle als root (falls Sie diese Berechtigungsstufe benötigen) oder als anderer Benutzer im System ausführen können.

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

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

(Beachten Sie die Hinzufügung des Benutzers zur Zeile)

Sie können den Inhalt der System-Crontab-Datei mit sehen cat /etc/crontab .

Weitere Informationen finden Sie unter: https://help.ubuntu.com/community/CronHowto


102


2010-08-16

Wenn Sie es vorziehen, eine grafische Benutzeroberfläche zu verwenden, können Sie im Software Center Geplante Aufgaben installieren (oder ausführen sudo apt-get install gnome-schedule ). Es wird eine leistungsstarke Benutzeroberfläche zum Hinzufügen von Cron-Aufgaben bieten.

Beachten Sie, dass bei Verwendung dieser Methode Aufgaben standardmäßig als Ihr eigener Benutzer und nicht als Root ausgeführt werden. Das ist normalerweise eine gute Sache.


53


2010-08-16

Ich empfehle KDE Task Scheduler ( kde-config-cron )
Installieren Sie kde-config-cron

. Greifen Sie über die Systemeinstellungen im Taskplaner- Modul darauf zu.

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


Bildbeschreibung hier eingeben


26


2013-01-31

KDE Task Scheduler funktioniert unter Ubuntu nicht. Es funktioniert nur in KDE-Systemen wie KUbuntu. Für Nicht-KDE-Systeme bevorzugen Sie die Verwendung von gnome-schedule

 $ sudo apt-get install gnome-schedule
 

Die App ist Geplante Aufgaben im Dash.


11


2014-02-11

Ich wollte einen Cron-Job so einrichten, dass er ein Bash-Skript durchläuft, sodass beim Ausführen des Skripts ein Cron-Job hinzugefügt wird.

Ich habe festgestellt, dass, wenn Sie Gebrauch machen von:

 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 Basis 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 den richtigen Besitz für die Datei festlegen:

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

Und stellen Sie die richtigen Berechtigungen ein:

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

Wenn sich beim Ausführen crontab -e bereits Cron-Jobs in der Liste befinden, können Sie sie mit dem folgenden Befehl an die Liste anhängen:

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

11


2016-09-27

Beispiel für das Ausführen eines Skripts test_cron.sh von cron jede Minute unter Ubuntu 18.04 mithilfe eines symbolischen Links:

test_cron.sh Datei:

 #!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log
 

Wenn Sie Umgebungsvariablen in Ihrem Skript wie $USER in Pfaden verwenden möchten, ist es besser, einen präzisen Pfad einzugeben, da bash Ihre Variablen zur Ausführungszeit nicht kennt.

myname ist Benutzername (Teil der Root-Gruppe, ich bin nicht sicher, ob Root-Berechtigungen erforderlich sind).

Ermöglichen Sie Benutzern das Festlegen von Cron-Jobs. Bei Bedarf wird eine Datei erstellt:

 sudo nano /etc/cron.allow

root
myname
 

Der Pfad zum Skript lautet /home/myname/shell/test_cron.sh

Ich habe den Besitzer gewechselt und es ausführbar gemacht:

 sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh
 

Ich habe einen symbolischen Link hinzugefügt:

 sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron
 

Angemeldet als myname ich neue Aufgabe hinzugefügt habe, die test_cron jede Minute ausgeführt werden soll.

 crontab -e

*/1 * * * * test_cron
 

So überprüfen Sie, ob der Befehl in der Liste enthalten ist:

 crontab -l

*/1 * * * * test_cron
 

Ausführung überprüfen

 grep -i cron /var/log/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
 

2


2018-11-17