Odzyskiwanie zadań cron przypadkowo usuniętych za pomocą crontab -r

64

Wszedłem crontab -rzamiast crontab -ei wszystkie moje cronzadania zostały usunięte.

Jaki jest najlepszy (lub istnieje) sposób na odzyskanie tych miejsc pracy?

Teerath Kumar
źródło
30
Czy to tylko ja, czy nie ma większego sensu, aby crontab -r domyślnie pytał tak / nie?
user1446688,
4
Myślę, że świetny pomysł to tak / nie. tym bardziej, że e & r są obok siebie ... i crontab -ejest to bardzo popularne polecenie crona.
JustinP
4
Przez około 7 lat pracy administracyjnej nigdy mi się to nie zdarzyło. Teraz się boję. Czas zacząć regularnie tworzyć kopie zapasowe plików crontab.
Caja
7
Zdarzyło mi się to już dwa razy. To najgorszy pomysł, jaki kiedykolwiek miałem edo edycji i rdo usunięcia bez żadnego podpowiedzi !!
DaniG2k,
9
Pierwszą rzeczą do zrobienia, alias crontab=crontab -i. Ale crontab powinien był to zrobić domyślnie, biorąc pod uwagę, że e & r są obok siebie ...
anishsane

Odpowiedzi:

49

crontab -r usuwa jedyny plik zawierający zadania cron.

Jeśli więc nie utworzono kopii zapasowej, jedynymi opcjami odzyskiwania są:

  • W RedHat / CentOS, jeśli twoje zadania były wcześniej uruchamiane, możesz znaleźć cron zaloguj się /var/log/cron. Plik pomoże ci ponownie przepisać zadania.
  • Inną opcją jest odzyskanie pliku za pomocą narzędzia do odzyskiwania plików. Jest to mniej prawdopodobne, że zakończy się sukcesem, ponieważ partycja systemowa jest zwykle zajęta, a odpowiednie sektory prawdopodobnie zostały już nadpisane.
  • Na Ubuntu / Debian, jeśli twoje zadanie było wcześniej uruchamiane, spróbuj grep CRON /var/log/syslog
SkyDan
źródło
Nie mogłem głosować, ale ta odpowiedź była dla mnie bardzo przydatna. thankx
Teerath Kumar
1
@RajaRassani Możesz zaznaczyć, że odpowiedź jest poprawna za pomocą znacznika wyboru. Dzięki za informację zwrotną!
SkyDan
to właśnie mi się przydarzyło :) total bummer .. Korzystam z serwerów wirtualnych i regularnie wykonuję ich kopie zapasowe .. więc zamierzam stworzyć kopię zapasową .. i pobrać usunięte crontabs
JustinP
+1 za
prostotę
Możesz spróbować szczęścia w poszukiwaniu kopii zapasowej wykonanej przez edytor w /tmp/crontab.wpMhKS (oczywiście nazwa może się zmienić). Może nie jest to najnowsza wersja, ale w moim przypadku bardzo pomogła
Jong Bor
21

Jeśli nie masz /var/log/cronpliku, możesz odzyskać polecenia (ale nie czasy) z syslog.

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

możesz następnie ustalić większość czasów, sprawdzając znaczniki danych.

Miauczeć
źródło
1
W Ubuntu plik jest /var/log/syslog.
Aurelijus Rozenas
@ Aurelijus Rozenas Przypadkowo dodałem sys do ścieżki katalogu powinien to być / var / log / syslog, poprawiłem swój post.
Miau
2
grep 'CRON.*(yourusername)' /var/log/syslog
aidan
@Aidin, jesteś moim wybawcą! Uwaga do siebie: Nigdy nie edytuj pliku crontab, gdy przestrzeń serwera jest pełna.
Shadoath,
1
Uff, który był blisko! Dodałem teraz crona do codziennego tworzenia kopii zapasowej mojego crontaba :)
SidJ
-5

vi /var/spool/cron/*user*lub jeśli jesteś rootużytkownikiem, tovi /var/spool/cron/root

użytkownik120610
źródło
3
To jest gorsze. Edytuje pliki buforowania bez powiadamiania, cronże plik został edytowany. Nie zadziała również, gdy użytkownik przypadkowo go usunie, crontabponieważ nie ma pliku do edycji.
roaima
Głosuj za mną za podanie lokalizacji crontabu. Miałem kopię zapasową całego systemu i mogłem łatwo odzyskać moje cronjobs. Dzięki!
Cookie,