Восстановление заданий 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.