it-swarm.com.de

Wie bearbeite ich eine Crontab-Datei richtig?

Ich versuche, die Aktualisierung von awstats für meinen Webserver zu automatisieren und verstehe, dass ich cron verwenden muss, um das einzurichten. So hat jeder Benutzer eine Crontab-Datei?

Ich habe die Anweisungen befolgt hier community/AWStats

Und es heißt, in die Datei zu gehen: /etc/crontab

Diese Datei enthält bereits einige Informationen. Ist das die Hauptdatei crontab oder so? Ich habe einige Anweisungen online gesehen, um die Datei zu verwenden, die mit crontab -e angezeigt wird.

Was ist die richtige Datei und wie geht das am besten?

Wenn ich eine Aufgabe als Benutzer ohne Rootberechtigung einplane, wird sie in dem angegebenen Zeitintervall ohne Probleme von selbst ausgeführt?

Muss ich den Server nach dem Speichern des Cron-Jobs in der Datei crontab neu starten, bevor er funktioniert?

50
timbram

Was ist die richtige Datei und wie geht das am besten?

crontab -e ist der beste Weg, dies zu tun - auf diese Weise können Sie Crontabs für jeden Benutzer einfach bearbeiten.

Wenn ich eine Aufgabe als Benutzer ohne Rootberechtigung einplane, wird sie in dem angegebenen Zeitintervall ohne Probleme von selbst ausgeführt?

Ja, und es wird mit den Berechtigungen dieses Benutzerkontos ausgeführt.

Grundsätzlich ist es am besten, geplante Aufgaben mit den niedrigsten Berechtigungen auszuführen, mit denen Sie davonkommen können. Wenn Sie also keine Root-Berechtigung benötigen, verwenden Sie keine Root-Berechtigung. Wenn Sie nicht einmal auf die Dateien und Ordner von Ihrem Konto zugreifen müssen, können Sie einen neuen Benutzer erstellen und dieses Benutzerkonto nur für diese Aufgabe verwenden. Auf der anderen Seite, wenn Ihre Aufgabe erfordert root ist, verwenden Sie die crontab von root (su/Sudo su, um root zu werden, und verwenden Sie dann crontab -e).

Muss ich den Server nach dem Speichern des Cron-Jobs in der Crontab-Datei neu starten, bevor er funktioniert?

Nein, es wird sofort funktionieren (na ja, der nächste geplante Zeitpunkt).

47
thomasrutter

Jeder Benutzer hat sein eigenes crontab.

Um es zu sehen, tippe einfach

crontab -l

und ja, Sie haben es richtig gesehen, wenn Sie ein crontab hinzufügen möchten, dann tun Sie es einfach

crontab -e

zum ersten Mal werden Sie gefragt, welcher Editor mit crontab verwendet werden soll. Als Anfänger würde ich die Verwendung von Nano empfehlen, da dies der einfachste zu verwendende Editor ist.

Die Crontab selbst funktioniert so

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR Sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

So kann z.B. um nur montags alle 15 minuten einen auftrag auszulösen, machst du es so

*/15 * * * mon /home/me/yourscript.sh

und JA, es ist sehr wichtig, dass Sie Ihren Cronjob in die Crontab des Benutzers legen, der über genügend Rechte verfügt, um ihn auszuführen.

Wenn es sich bei Ihrem Skript also um einen Root-Benutzer oder einen speziellen Benutzer handeln muss, stellen Sie sicher, dass Sie diesen Benutzer als su kennzeichnen und dort den Cronjob hinzufügen.

Auch sehr wichtig!

cronjob ist doof! Ja, ich habe es gesagt. Vergewissern Sie sich immer, dass Sie den vollständigen PFAD für den application/command/script eingeben, den Sie verwenden, da crontab mit .bashrc oder ähnlichem nicht funktioniert. Sie müssen immer sicherstellen, dass Sie cron mitteilen, wo sich die Dateien und Verzeichnisse befinden.

m den Rest Ihrer Fragen zu beantworten:

Natürlich läuft es von alleine, dafür ist es da. Aber Sie müssen überprüfen, ob Cronjob wirklich funktioniert oder ob etwas fehlt. Z.B. Loggen Sie sich in eine Logdatei ein, um zu sehen, ob es wirklich funktioniert.

Und NEIN, ein Neustart ist nicht erforderlich. Ein Neustart unter Linux ist normalerweise nur erforderlich, wenn Sie einen neuen Kernel installieren. Damit es funktioniert, müssten Sie neu starten. Fast alles andere ist unter Linux ohne Neustart möglich. Natürlich gibt es Ausnahmen, aber im Allgemeinen ist diese Aussage richtig.

24
s1mmel