Soll ich meine crontab-Datei in / tmp speichern?

11

Ich ssh zu einem Server und möchte einige tägliche Jobs (insbesondere zum Erneuern von Kerberos-Tickets, auch wenn ich mich abmelde und meine Programme weiterhin auf dem Bildschirm oder in tmux ausgeführt werden sollen) hinzufügen. Also renne ich crontab -eund füge folgendes hinzu:

00 00 * * * kinit -R
00 12 * * * kinit -R

Wenn ich es speichere, werde ich vom Herausgeber gefragt:

File Name to Write: /tmp/crontab.HMpG7V 

Können die Dateien /tmpnicht vom Betriebssystem gelöscht werden? Besonders nachdem ich mich vom Server abgemeldet habe?

Wo soll ich meine Crontab-Datei speichern? Kann ich die Crontab-Datei unter $ HOME oder einem besseren Speicherplatz speichern?

Tim
quelle
Kann ich die Crontab-Datei unter $ HOME speichern? Warum brauche ich einen Symlink?
Tim

Antworten:

15

crontab -eÖffnet eine Datei in / tmp anstelle der eigentlichen Crontab, damit diese Ihre neue Crontab auf Fehler überprüfen und verhindern kann, dass Sie Ihre tatsächliche Crontab mit diesen Fehlern überschreiben. Wenn keine Fehler vorliegen, wird Ihre tatsächliche Crontab aktualisiert. Wenn Sie crontab -enur direkt auf Ihre eigentliche Crontab schreiben, riskieren Sie, dass alle Ihre Cronjobs aufgrund eines Syntaxfehlers in Ihrer neuen Crontab nicht ausgeführt werden.

sudoedit, visudo, vipwUsw. arbeitet nach dem gleichen Prinzip.

Keine Sorge, Ihre eigentliche Crontab befindet sich an einem nichtflüchtigen Ort auf der Festplatte.

jayhendren
quelle
Wo wird meine Crontab-Datei irgendwann gespeichert? Was passiert mit meiner Crontab-Datei, wenn ich mich vom Server abmelde? (Ich bin kein Administrator und habe keinen Root-Zugriff auf den Server)
Tim
1
Ihre eigentliche Crontab lebt /var/spool(normalerweise) irgendwo in , aber Sie sollten Ihre eigentliche Crontab niemals berühren und Sie sollten es auch niemals brauchen - verwenden Sie crontab -estattdessen. Sie haben wahrscheinlich ohnehin nicht die richtige Zugriffsebene, um die rohe Crontab-Datei zu bearbeiten.
Jayhendren
Wenn Sie sich abmelden, passiert Ihrem Crontab nichts. es lebt nicht in / tmp.
Jayhendren
(1) Ist die Crontab-Datei für einzelne Benutzer oder für alle Benutzer? (2) Wie kann ich überprüfen, ob meine Bearbeitung der Crontab-Datei funktioniert?
Tim
Crontabs sind pro Benutzer. Um zu überprüfen, ob Ihr Cronjob ausgeführt wird, können Sie die Cron-Protokolle überprüfen. normalerweise in /var/log/cron.log, aber es können auch andere Speicherorte sein.
Jayhendren
5

/tmpHier wird die temporäre Crontab-Datei geschrieben. Nach dem Speichern und Beenden crontabwerden die Änderungen in ein anderes, geeigneteres Verzeichnis auf Ihrem System übertragen (normalerweise unter /var/spool/cron, wenn ich mich recht erinnere). Machen Sie sich also keine Sorgen, das Betriebssystem löscht möglicherweise Ihr / tmp, aber es wird Ihre Crontabs niemals entfernen.

Valmiky Arquissandas
quelle
1

Crontab-Dateien befinden sich in / var / spool / cron / crontabs / unter dem Benutzernamen oder der Benutzer-ID. Da Situationen auftreten können, in denen die hier befindliche Crontab nicht mehr mit Ihrem Anmeldekonto verbunden ist, wird empfohlen, eine Kopie in Ihrem Home-Verzeichnis zu speichern, z. B. /home/userid/.crontab, damit Sie sie bei Bedarf problemlos wiederherstellen können zu. Auf diese Weise können Sie es auch unter die Revisionskontrolle stellen, wenn Sie möchten.

Wenn Ihr Home-Verzeichnis auf ein anderes System verschoben wird, wird es häufig nicht von der Crontab aus dem Spool-Verzeichnis begleitet, es sei denn, Ihr Systemadministrator berücksichtigt dies. / Var / spool wird auch nicht immer gesichert oder wiederhergestellt, wenn ein System erneuert werden muss.

Daher wird empfohlen, eine Kopie Ihrer Crontab in Ihrem Home-Verzeichnis aufzubewahren.

Verwenden Sie Ihren bevorzugten Editor (pico, vi, emacs usw.), um ~ / .crontab zu bearbeiten, und verwenden Sie dann crontab, um ihn auf / var / spool / crontabs anzuwenden. So was:

% pico ~/.crontab; crontab ~/.crontab

Wenn Sie Aliase mögen, können Sie stattdessen einen ausführen.

JonathanS
quelle
1
Muss ich etwas tun, damit die Crontab-Datei meines Hauses Crontab-Dateien an einem anderen Speicherort überschreibt?
Tim
Führen Sie einfach "crontab ~ / .crontab" aus und Sie wenden es auf das in / var / spool / cron / crontabs an. Verwenden Sie pico, emacs oder vi, um ~ / .crontab vorab zu bearbeiten und Änderungen vorzunehmen.
JonathanS
Dies beantwortet die Frage nicht wirklich.
niemand
@AndrewMedico: Die Hauptfrage schien zu sein: "Wo soll ich meine Crontab-Datei speichern? Kann ich die Crontab-Datei unter $ HOME oder einem besseren Speicherplatz speichern?" Oder beziehen Sie sich hier auf Tims Frage im Kommentar?
JonathanS