Почему `crontab -` удаляет crontab и можно ли его отменить?

8

Я поспешил и забыл е в , crontab -eпрежде чем я ударил Enter.

Появилось приглашение, поэтому я закрыл Ctrl+ D, так же, как я обычно выхожу из ввода.

Теперь, без предупреждения, весь мой crontab пуст.

Почему? По какой логике это произошло? Как закрыть подсказки, кроме Ctrl+, Dчтобы ничего не сохранялось?

Redsandro
источник
2
Что сказал подсказка?
Майкл Хэмптон

Ответы:

7

Control+Cв этом случае прервет crontabи не уничтожит текущие записи crontab. В противном случае голое -является общим признаком в Unix, что ввод следует читать со стандартного ввода, и Control+Dзакрывает стандартный ввод, что приводит к пустому файлу crontab, поскольку на стандартный ввод ничего не добавлялось.

Пользовательская запись в crontab в соответствии с

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

может помочь в борьбе с любыми такими будущими конфликтами, предоставив резервную копию данных crontab (или вы можете сойти с ума с контролем версий, или какой бы сложной ни была ваша резервная копия).

thrig
источник
15

Вы заменили свой crontab содержимым из stdin, который был пустым. Это по сути так же, как crontab < /dev/null.

Нажатие Ctrl + C может быть лучшей привычкой.

Ваш crontab, скорее всего, ушел. Резервное копирование может быть где-то внутри /var/spool/cron, но я не знаю ни одного демона cron, который бы поддерживал резервные копии. Вы должны создать резервные копии, /var/spool/cronесли это важно для вас.

RVS
источник