видалений файл вкладки Cron і його потрібно відновити


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. Візьміть наступну команду і грепте її
  7. Визначте систематичність часу виконання другої команди
  8. помістіть цей запис у свій новий crontab
  9. виконати cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Повторіть, поки ви не покриєте всі команди

Тепер ви також повинні виконати греп на старих хронологах, щоб з’ясувати завдання, які можуть виконуватися лише раз на місяць.


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

1
Перш ніж випадково щось видалити, завжди створюйте резервну копію!
Давид Хорват

4

Сценарій для повного відновлення кронатобу

Я створив 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? Це пряма відповідь на питання.
Ден Грін-Лейпцигер

Я використовую ваш сценарій. Дивовижно, велике спасибі!
MeV

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

1

У вас є варіанти, але жоден не особливо гарний. Якщо ви про це не думали, якщо у вас на останній версії на розроблювальній машині ви можете скопіювати її звідти ... Я це кажу лише тому, що я часто забуваю про копії, які можуть бути на інших машинах, Я припускаю, що ви вже пробували це.

Якщо ваш файл занадто сильно налаштований, щоб зробити його простою реконструкцією практично, ви завжди можете спробувати деякі криміналістики низького рівня. Спробуйте googling для навчальних посібників на основі 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.