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 Ihres Kontos zugreifen müssen, können Sie einen neuen Benutzer erstellen und dieses Benutzerkonto nur für diese Aufgabe verwenden. Wenn für Ihre Aufgabe jedoch root erforderlich ist, verwenden Sie die crontab von root ( su
/ sudo su
für root und 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).
Warum nicht die Datei direkt bearbeiten? Wo befindet es sich?
Die Benutzer-Crontab-Dateien befinden sich in /var/spool/cron/crontabs
, aber ihre Berechtigungen sind so festgelegt, dass sie nicht ohne Superuser-Berechtigung durchlaufen werden können (wenn sie jedoch einmal geöffnet sind und der Cron-Prozess die Berechtigungen verliert, kann er weiterhin auf die Datei zugreifen).
Das System ist nicht für Endbenutzer vorgesehen, um diese Dateien direkt zu bearbeiten, und in der Tat weist der obere Teil der Datei eine strenge DO NOT EDIT THIS FILE
Warnung auf, die diesbezüglich angezeigt wird. Die Datei ist stattdessen für die Bearbeitung vorgesehen, crontab -e
wodurch ein temporärer Spiegel der Datei /tmp
zur Bearbeitung eingerichtet wird - ohne die ernste Warnung - und anschließend die permanente crontab-Datei selbst überprüft und installiert wird. Dies kann alles ohne Superuser-Berechtigung erfolgen.
Wenn Sie die Crontab-Datei direkt bearbeitet haben, weiß ich nicht, was das Ergebnis sein würde. Möglicherweise wird es erst beim nächsten Neustart wirksam, und Fehler können nur schwer behoben werden.
crontab -e
können Sie Ihren Benutzer crontab ohne sudo bearbeiten. Die Benutzer-Crontabs befinden sich in/var/spool/cron/crontabs
einem Verzeichnis, auf das ohne Superuser-Berechtigung nicht zugegriffen werden kann (jedoch so, dass das Verzeichnis nach dem Löschen von Berechtigungen noch gelesen werden kann). Selbst wenn Sie sudo verwenden, um die Datei direkt zu bearbeiten, wird oben die große Warnung "DIESE DATEI NICHT BEARBEITEN" angezeigt. Die Datei kann mit demcrontab
Befehl bearbeitet werden, der eine temporäre Kopie verwendet/tmp
und anschließend installiert wird es nach dem Speichern.Jeder Benutzer hat seine eigenen
crontab
.Um es zu sehen, tippe einfach
und ja du hast es richtig gesehen, wenn du ein hinzufügen willst
crontab
dann mach einfachZum ersten Mal werden Sie nach dem zu verwendenden Editor gefragt
crontab
. Als Anfänger würde ich die Verwendung von Nano empfehlen, da dies der einfachste zu verwendende Editor ist.Die Crontab selbst funktioniert so
Also, um zB nur am Montag alle 15 Minuten einen Job auszulösen, machst du es so
und JA, es ist sehr wichtig, dass Sie Ihren Cronjob in der Crontab des Benutzers ablegen, der über genügend Rechte verfügt, um ihn auszuführen.
Wenn Ihr Skript root oder ein spezieller Benutzer sein muss, stellen Sie sicher, dass Sie diesem Benutzer su zuweisen und dort den Cronjob hinzufügen.
Auch sehr wichtig!
cronjob ist doof! Ja, ich habe es gesagt. Vergewissern
application/command/script
Sie sich immer, dass Sie den vollständigen Pfad eingeben, mit dem Sie arbeiten, da Crontab nicht funktioniert.bashrc
. Sie müssen immer sicherstellen, dass Sie cron mitteilen, wo sich die Dateien und Verzeichnisse befinden.Um 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. Logge dich zB 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.
quelle