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?
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?
Antworten:
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, und 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 Nummern, 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 .
*/15 * * * * /path/to/command
tun @reboot /path/to/command
können, um beim Start etwas auszuführen.
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
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.
Ich empfehle KDE Task Scheduler ( 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.
KDE Task Scheduler funktioniert nicht unter Ubuntu. 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.
I can't install gnome schedule on Ubuntu 16.04
@ askubuntu.com/questions/785657/… an . Es gibt ein Paket zum Herunterladen @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… . $ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
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 crontab -e
die Liste bereits Cron-Jobs enthält, können Sie diese mit dem folgenden Befehl anhängen:
echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root
Beispiel für das Ausführen eines Skripts test_cron.sh
von cron jede Minute unter Ubuntu 18.04 unter Verwendung 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, da myname
ich test_cron
jede Minute eine neue Aufgabe hinzugefügt habe, die 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)