Восстановление заданий cron, случайно удаленных с помощью crontab -r


64

Я вошел crontab -rвместо crontab -eи все мои cronработы были удалены.

Каков наилучший способ (или есть ли), чтобы восстановить эти рабочие места?


30
Это только у меня или для crontab -r больше смысла спрашивать да / нет по умолчанию ??
user1446688

4
Я думаю, что иметь приглашение да / нет было бы хорошей идеей. тем более, что e & r находятся рядом друг с другом .. и crontab -eэто действительно распространенная команда cron.
JustinP

4
За 7 или около того лет работы админа у меня никогда не было такого со мной. Теперь мне страшно. Время, чтобы начать резервное копирование crontabs регулярно.
Каха

7
Это случилось со мной уже дважды. Это худшая идея eдля редактирования и rудаления без каких-либо подсказок!
DaniG2k

9
Первое, что нужно сделать alias crontab=crontab -i. Но crontab должен был сделать это по умолчанию, учитывая, что e & r находятся рядом друг с другом ...
anishsane

Ответы:


49

crontab -r удаляет единственный файл, содержащий задания cron.

Поэтому, если вы не сделали резервную копию, ваши единственные варианты восстановления:

  • В RedHat / CentOS, если ваши задания были запущены раньше, вы можете найти журнал cron /var/log/cron. Файл поможет вам переписать задания еще раз.
  • Другой вариант - восстановить файл с помощью инструмента восстановления файлов. Однако это вряд ли будет успешным, поскольку системный раздел обычно занят и соответствующие сектора, вероятно, уже перезаписаны.
  • В Ubuntu / Debian, если ваша задача уже была запущена, попробуйте grep CRON /var/log/syslog

Я не мог проголосовать за тебя, но этот ответ был очень полезен для меня. Thankx
Teerath Кумар

1
@RajaRassani Вы можете пометить правильный ответ галочкой. Спасибо за обратную связь!
SkyDan

это только что случилось со мной :) полный облом ... я использую виртуальные серверы и регулярно их резервирую ... так что я собираюсь раскрутить резервную копию ... и получить удаленные crontabs
JustinP

+1 за простоту:}
namezero

Вы можете попытать счастья в поисках резервной копии, сделанной редактором в /tmp/crontab.wpMhKS (конечно, имя может измениться). Возможно, это не самая последняя версия, но в моем случае это очень помогло
Чон Бор

21

Если у вас нет /var/log/cronфайла, вы можете восстановить команды (но не время) из syslog.

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

затем вы можете выяснить большинство времени, глядя на отметки даты.


1
На убунту файл есть /var/log/syslog.
Аурелиус Розенас

@ Aurelijus Rozenas Я случайно добавил sys в путь к каталогу, он должен быть / var / log / syslog, я исправил свой пост.
Мяу

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

@ Айдин, ты мой спаситель! Примечание для себя: никогда не редактируйте файл crontab, когда на сервере достаточно места.
Шадоат

1
Фу, это было близко! Теперь я добавил cron для резервного копирования моего crontab каждый день :)
SidJ

-5

vi /var/spool/cron/*user*или если вы rootпользователь, тоvi /var/spool/cron/root


3
Это хуже Он редактирует файлы очереди без уведомления cronо том, что файл был отредактирован. Это также не будет работать, когда пользователь случайно удалил их, crontabпотому что нет файла для редактирования.
Ройма

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