удалил файл cron tab и нужно его восстановить


11

Я запустил crontab -r вместо crontab -e и удалил свой файл crontab. У меня не было резервной копии и нового, чтобы восстановить удаленный файл.

Это возможно?

Благодарность,

Питер


7
параметры для редактирования и удаления не должны быть рядом друг с другом на клавиатуре. Слишком легко ошибиться, чтобы совершить быструю расправу.
einstiien

это именно то, что случилось со мной.

Ответы:


9

Попробуйте посмотреть / var / log / cron, чтобы увидеть, что было запущено, а затем попытаться воссоздать crontab из этого. Это грязно, но вы должны быть в состоянии восстановить все, что ранее запускалось. Не так много удачи для новых предметов, хотя. Удачи!


Отличный подход!
Алекс

5

Прежде всего: всегда делайте резервные копии!

Но, это так легко перепутать crontab -rи crontab -e. Я просто сделал это сам.

Вот что я сделал:

Вы можете попробовать посмотреть / var / log / cron и снова собрать свой crontab.

  1. Посмотрите на лог-файл
  2. Прими первую команду и сделай grep commandname1 /var/log/cron
  3. Выясните систематическое время выполнения команды
  4. Поместите эту запись в ваш новый crontab
  5. выполнить cat /var/log/cron | grep -v commandname1. Это исключит команду 1, которую вы уже рассмотрели.
  6. Возьми следующую команду и grep для нее
  7. Выясните систематическое время, когда была запущена вторая команда
  8. поместите эту запись в ваш новый crontab
  9. выполнять cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Повторяйте, пока не пройдете все команды

Теперь вы также должны выполнить grep для старых cronlogs, чтобы найти задания, которые могут выполняться только один раз в месяц.


1
По крайней мере, в Ubuntu (не уверен насчет других платформ, использующих anacron / Vixie cron), журнал хранится в /var/log/syslog/*.
Тимоти Гу

1
Прежде чем случайно что-то удалить, всегда создавайте резервную копию!
Давид Хорват

4

Скрипт для полного восстановления crontab

Я сделал PHP-скрипт, который полностью восстанавливает ваш crontab, основываясь на журнале.

Он выводит один экземпляр каждой команды cron, запущенной пользователем за последнюю неделю.

Я положил это здесь

https://github.com/dangreenisrael/recover_crontab

Вот пример вывода:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

1
Почему это было дано -1? Это прямой ответ на вопрос.
Дэн Грин-Лейпцигер

Я использовал твой сценарий. Удивительно, большое спасибо!
МэВ

Сценарий PHP не работает должным образом для команд, содержащих закрывающую скобку. Исправлено и перенесено на bash:zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
Разбитое соединение

1

У вас есть варианты, но ни один из них не особенно хорош. Если вы не подумали об этом, если у вас есть последняя версия на компьютере разработчика, вы можете скопировать ее оттуда ... Я говорю это только потому, что часто забываю о копиях, которые могут быть на других машинах, поэтому Я предполагаю, что вы уже попробовали это.

Если ваш файл слишком сильно настроен для того, чтобы просто перестроить его на практике, вы всегда можете попробовать низкоуровневую экспертизу. Попробуйте поискать учебники, основанные на Sleuthkit и UFS Explorer. Люди, использующие эти инструменты, находят самые разные степени с точки зрения простоты использования и показателей успешности, как обычно, YMMV.


1

Тьфу не могу оставить комментарий к первоначальному вопросу, но сотрудник только что показал мне отличный инструмент: создайте псевдоним во всем, что .profileвы используете, crontabчтобы быть crontab -i. -iФлаг запрашивает подтверждение перед удалением.

Таким образом, если вы это сделаете, crontab -eон продолжит редактировать как обычно, но если вы случайно это сделаете, crontab -rвас встретят с запросом подтверждения.


Это не помогает с непосредственной проблемой ...
vonbrand

0

Я так не думаю. Пришло время начать резервное копирование этого важного файла (со всеми остальными в / etc / var / spool / home ...).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.