Я поспешил и забыл е в crontab -e
прежде чем я ударил Войти.
Появилось приглашение, поэтому я закрыл Ctrl+Dтак же, как я обычно выхожу из подсказок ввода.
Теперь без предупреждения весь мой crontab пуст.
Зачем? По какой логике это произошло? Как мне закрыть другие приглашения, кроме Ctrl+D так что ничего не сохраняется?
Вы заменили ваш crontab содержимым из stdin, которое было пустым. По сути, это то же самое, что crontab < /dev/null
.
Нажатие Ctrl + C может быть лучшей привычкой.
Ваш crontab, скорее всего, ушел. Резервная копия может быть где-то в /var/spool/cron
, но я не знаю ни одного демона cron, поддерживающего резервные копии. Вам следует настроить резервные копии /var/spool/cron
если это важно для тебя.
Ctrl + C в этом случае прервется crontab
и не стирать текущие записи crontab. В противном случае голый -
является общим указанием в Unix, что ввод должен быть прочитан из стандартного ввода, и Ctrl + D закрывает стандартный ввод, что приводит к пустому файлу crontab, поскольку на стандартный ввод ничего не было передано.
Запись в crontab пользователя по строкам
@daily crontab -l > $HOME/.cron.`hostname`
может помочь против любых подобных ошибок в будущем, предоставив резервную копию данных crontab (или вы можете сойти с ума с контролем версий, или какой бы сложной вам ни была резервная копия).