Відновіть завдання cron, аварійно видалені crontab -r


64

Я crontab -rзамість цього ввійшов, crontab -eі всі мої cronроботи видалено.

Який найкращий спосіб (чи є такий) відновити ці робочі місця?


30
Це тільки я чи не було б більше сенсу для crontab -r запитувати так / ні за замовчуванням ??
— користувач1446688

4
Я думаю, що запрошення "так / ні" було б чудовою ідеєю. тим більше, що e & r знаходяться поруч один з одним .. і crontab -eце дійсно звичайна команда cron.
— JustinP

4
За 7 або більше років роботи адміністратора у мене ніколи цього не сталося. Зараз мені страшно. Час почати регулярно створювати резервні копії.
— Каджа

7
Це траплялося зі мною вже двічі. Це найгірша ідея, яка коли-небудь потрібна eдля редагування та rвидалення з абсолютно жодним підказом !!
— DaniG2k

9
Перше , що потрібно зробити, alias crontab=crontab -i. Але Crontab повинен був зробити це за замовчуванням, враховуючи, що e & r знаходяться поруч ...
— anishsane

Відповіді:


49

crontab -r видаляє єдиний файл, що містить завдання cron.

Тож якщо ви не зробили резервну копію, ваші єдині варіанти відновлення:

  • У RedHat / CentOS, якщо ваші завдання вже були запущені, ви можете знайти вхід у систему /var/log/cron. Цей файл допоможе вам знову написати завдання.
  • Інший варіант - відновити файл за допомогою інструмента відновлення файлів. Це, швидше за все, буде успішним, оскільки системний розділ, як правило, зайнятий, і відповідні сектори, ймовірно, вже були перезаписані.
  • У Ubuntu / Debian, якщо ваша задача виконувалася раніше, спробуйте grep CRON /var/log/syslog

Я не міг вас проголосувати, але ця відповідь була якоюсь корисною для мене. Thankx
— Teerath Кумар

1
@RajaRassani Ви можете відзначити правильну відповідь за допомогою галочки. Дякуємо за відгук!
— SkyDan

це щойно трапилося зі мною :) загальний об’єм .. Я використовую віртуальні сервери та регулярно
— створюю їх

+1 за те, що він прямолінійний:}
— namezero

Ви можете спробувати удачу, шукаючи резервну копію, зроблену редактором у /tmp/crontab.wpMhKS (звичайно, назва може змінитися). Це може бути не остання версія, але в моєму випадку вона дуже допомогла
— Ченг Бор

21

Якщо у вас немає /var/log/cronфайлу, ви можете відновити команди (але не таймінги) з syslog.

grep 'CRON.*(yourusername)' /var/log/syslog

Ви можете визначити більшість термінів, переглянувши позначки дати.


1
У ubuntu файл є /var/log/syslog.
— Aurelijus Rozenas

@ Aurelijus Rozenas Я випадково додав sys до каталогу, яким він повинен бути / var / log / syslog, я виправив свою публікацію.
— М'яв

2
grep 'CRON.*(yourusername)' /var/log/syslog
— помічник

@Aidin ти мій рятівник! Примітка до самостійної роботи: Ніколи не редагуйте файл crontab, поки серверне місце заповнене.
— Shadoath

1
Фу, що було близько! Зараз я додав cron для резервного копіювання мого crontab щодня :)
— SidJ

-5

vi /var/spool/cron/*user*або якщо ви rootтоді користувачvi /var/spool/cron/root


3
Це гірше. Він редагує файли котушки, не повідомляючи, cronщо файл відредагований. Він також не буде працювати, коли користувач випадково видалив їх, crontabоскільки немає файлу для редагування.
— roaima

Просимо подати заяву про те, що я фактично зазначив місце розташування crontab. У мене було ціле резервне копіювання системи і я міг легко отримати свої роботи. Дякую!
— Cookie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.