Warum entfernt `crontab -` crontab und kann es abgebrochen werden?

8

Ich beeilte mich und vergaß das E- In, crontab -ebevor ich traf Enter.

Eine Eingabeaufforderung wurde angezeigt, sodass ich mit Ctrl+ schloss D, genau wie ich normalerweise Eingabeaufforderungen beende.

Jetzt ist meine gesamte Crontab ohne Vorwarnung leer.

Warum? Welche Logik hat dies verursacht? Wie soll ich andere Eingabeaufforderungen als Ctrl+ schließen, Ddamit nichts gespeichert wird?

Redsandro
quelle
2
Was hat die Eingabeaufforderung gesagt?
Michael Hampton

Antworten:

7

Control+Cwird in diesem Fall crontabdie aktuellen crontab-Einträge abbrechen und nicht löschen. Andernfalls ist das Bare -unter Unix ein häufiger Hinweis darauf, dass Eingaben von der Standardeingabe gelesen werden sollten, und Control+Dschließt die Standardeingabe, was zur leeren crontab-Datei führt, da bei der Standardeingabe nichts eingespeist wurde.

Ein Benutzer-Crontab-Eintrag nach dem Vorbild von

@daily crontab -l > $HOME/.cron.`hostname`

kann gegen solche zukünftigen Probleme helfen, indem Sie eine Sicherungskopie der Crontab-Daten bereitstellen (oder Sie können die Versionskontrolle in den Griff bekommen oder wie komplex die Sicherung sein soll).

Thrig
quelle
15

Sie haben Ihre Crontab durch Inhalt von stdin ersetzt, der leer war. Es ist im Wesentlichen das gleiche wie crontab < /dev/null.

Das Drücken von Strg + C ist möglicherweise eine bessere Angewohnheit.

Ihre Crontab ist höchstwahrscheinlich weg. Backup könnte irgendwo drin sein /var/spool/cron, aber ich kenne keinen Cron-Daemon, der Backups verwaltet. Sie sollten Backups einrichten, /var/spool/cronwenn dies für Sie wichtig ist.

rvs
quelle