
Ich versuche, die Aktualisierung von awstats für meinen Webserver zu automatisieren und verstehe, dass ich dafür cron verwenden muss. Also hat jeder Benutzer eine Crontab-Datei?
Ich habe die Anweisungen befolgtHierGemeinschaft/AWStats
Dort steht, dass Sie zur Datei gehen sollen:/etc/crontab
Diese Datei enthält bereits einige Informationen. Ist das die Hauptdatei crontab
oder so etwas? Ich habe online einige Anweisungen zur Verwendung der Datei gesehen, die mit angezeigt wird crontab -e
.
Welche Datei muss verwendet werden und wie geht man dabei am besten vor?
Wenn ich als Nicht-Root-Benutzer eine Aufgabe plane, wird sie dann im angegebenen Zeitintervall ohne Probleme automatisch ausgeführt?
Muss ich den Server neu starten, nachdem ich den Cron-Job in der crontab
Datei gespeichert habe, bevor er funktioniert?
Antwort1
Welche Datei muss verwendet werden und wie geht man dabei am besten vor?
crontab -e
ist die beste Möglichkeit, dies zu tun – so können Sie Crontabs für einzelne Benutzer problemlos bearbeiten.
Wenn ich als Nicht-Root-Benutzer eine Aufgabe plane, wird sie dann im angegebenen Zeitintervall ohne Probleme automatisch 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, die Sie sich leisten können. Wenn Sie also für das, was Sie tun, keinen Root-Zugriff benötigen, verwenden Sie keinen Root-Zugriff. Wenn Sie nicht einmal Zugriff aufdeinDateien und Ordner des Kontos, dann können Sie einen neuen Benutzer erstellen und dieses Benutzerkonto verwendennurfür diese Aufgabe. Wenn Ihre Aufgabe hingegentutRoot erforderlich, Crontab von Root verwenden ( su
/ sudo su
zu Root, dann verwenden crontab -e
).
Muss ich den Server neu starten, nachdem ich den Cron-Job in der Crontab-Datei gespeichert habe, bevor er funktioniert?
Nein, die Arbeit beginnt sofort (also zum nächstmöglichen geplanten Zeitpunkt).
Warum bearbeiten Sie die Datei nicht direkt? Wo befindet sie sich?
Die Crontab-Dateien des Benutzers befinden sich in /var/spool/cron/crontabs
, ihre Berechtigungen sind jedoch so eingestellt, dass sie ohne Superuser-Berechtigung nicht aufgerufen werden können (nach dem Öffnen kann der Cron-Prozess jedoch weiterhin auf die Datei zugreifen, wenn er die Berechtigungen aufhebt).
Das System ist nicht dafür ausgelegt, dass Endbenutzer diese Dateien direkt bearbeiten können, und tatsächlich enthält die Datei oben eine strenge DO NOT EDIT THIS FILE
Warnung diesbezüglich. Die Datei ist stattdessen für die Bearbeitung über konzipiert, crontab -e
das ein temporäres Spiegelbild der Datei zur Bearbeitung einrichtet /tmp
– ohne die strenge Warnung – und anschließend die permanente Crontab-Datei selbst überprüft und installiert. Dies alles kann ohne Superuser-Berechtigung durchgeführt werden.
Wenn Sie die Crontab-Datei direkt bearbeitet haben, weiß ich nicht, was das Ergebnis wäre. Es ist möglich, dass es erst beim nächsten Neustart wirksam wird und etwaige Fehler schwer zu beheben sind.
Antwort2
Jeder Benutzer hat sein eigenes crontab
.
Um es anzuzeigen, geben Sie einfach
crontab -l
und, ja, Sie haben richtig gesehen, wenn Sie ein hinzufügen möchten, crontab
dann tun Sie einfach
crontab -e
beim ersten Mal werden Sie gefragt, welchen Editor Sie verwenden möchten crontab
. Da Sie, wie Sie sagen, ein Neuling sind, würde ich Ihnen empfehlen, nano zu verwenden, da dies der am einfachsten 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
Um beispielsweise nur montags alle 15 Minuten einen Job auszulösen, gehen Sie folgendermaßen vor
*/15 * * * mon /home/me/yourscript.sh
und JA, es ist sehr wichtig, dass Sie Ihren Cronjob in die Crontab des Benutzers einfügen, der über ausreichende Rechte verfügt, ihn auszuführen.
Wenn Ihr Skript also Root oder ein spezieller Benutzer sein muss, wechseln Sie unbedingt zu diesem Benutzer und fügen Sie den Cronjob dort hinzu.
Auch ganz wichtig!
Cronjob ist doof! Ja, das habe ich gesagt. Achten Sie immer darauf, den vollständigen Pfad zu dem von Ihnen verwendeten Pfad anzugeben application/command/script
, da Crontab oder ähnliches nicht funktioniert .bashrc
. Sie müssen immer sicherstellen, dass Sie Cron mitteilen, wo er die Dateien und Verzeichnisse finden kann.
Um den Rest Ihrer Fragen zu beantworten:
Natürlich läuft es von alleine, dafür ist es ja da. Aber Sie müssen prüfen, ob Cronjob das wirklich macht oder ob etwas fehlt. Melden Sie sich beispielsweise in einer Protokolldatei an, um zu sehen, ob es wirklich funktioniert.
Und NEIN, ein Neustart ist nicht nötig. Ein Neustart ist bei Linux normalerweise nur nötig, wenn Sie einen neuen Kernel installieren. Damit dieser funktioniert, müssen Sie neu starten. Fast alles andere kann unter Linux ohne Neustart durchgeführt werden.Natürlich gibt es Ausnahmen, aber im Allgemeinen ist diese Aussage richtig.