Cron-Tab-Datei gelöscht und muss wiederhergestellt werden

11

Ich habe crontab -r anstelle von crontab -e ausgeführt und meine crontab-Datei gelöscht. Ich hatte kein Backup und war neu, um die gelöschte Datei wiederherzustellen.

Ist das möglich?

Vielen Dank,

Peter

gWaldo
quelle
7
Die Optionen zum Bearbeiten und Entfernen sollten auf der Tastatur nicht direkt nebeneinander liegen. Ein zu einfacher Fehler für einen schnellen Typer.
einstiien
Genau das ist mir passiert.

Antworten:

9

Schauen Sie sich / var / log / cron an, um zu sehen, was ausgeführt wurde, und versuchen Sie dann, die Crontab daraus neu zu erstellen. Es ist chaotisch, aber Sie sollten in der Lage sein, alles wiederherzustellen, was zuvor ausgeführt wurde. Nicht so viel Glück für neuere Artikel. Viel Glück!

rumz
quelle
Toller Ansatz!
Alex
5

Zuallererst: Machen Sie immer Backups!

Aber es ist so einfach zu verwechseln crontab -rund crontab -e. Ich habe das einfach selbst gemacht.

Das ist, was ich tat:

Sie können versuchen, einen Blick auf / var / log / cron zu werfen und Ihre Crontab erneut zu erstellen.

  1. Schauen Sie sich die Protokolldatei an
  2. Nehmen Sie den ersten Befehl und tun Sie es grep commandname1 /var/log/cron
  3. Finden Sie heraus, wie systematisch die Ausführungszeiten des Befehls sind
  4. Fügen Sie diesen Eintrag Ihrer neuen Crontab hinzu
  5. ausführen cat /var/log/cron | grep -v commandname1. Dies schließt den Befehl1 aus, den Sie bereits behandelt haben.
  6. Nehmen Sie den nächsten Befehl und greifen Sie danach
  7. Finden Sie heraus, wie systematisch die Zeiten sind, zu denen der zweite Befehl ausgeführt wurde
  8. Legen Sie diesen Eintrag in Ihre neue Crontab
  9. ausführen cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Wiederholen Sie diesen Vorgang, bis Sie alle Befehle ausgeführt haben

Jetzt sollten Sie das grep auch für ältere Cronlogs ausführen, um Jobs herauszufinden, die möglicherweise nur einmal im Monat ausgeführt werden.

Alex
quelle
1
Zumindest unter Ubuntu (nicht sicher, ob andere Plattformen Anacron / Vixie Cron verwenden) wird das Protokoll in gespeichert /var/log/syslog/*.
Timothy Gu
1
Erstellen Sie immer ein Backup, bevor Sie versehentlich etwas löschen!
Dávid Horváth
4

Skript für die vollständige Wiederherstellung von Crontab

Ich habe ein PHP-Skript erstellt, das eine vollständige Wiederherstellung Ihrer Crontab basierend auf dem Protokoll ausführt.

Es gibt eine einzelne Instanz jedes Cron-Befehls aus, den der Benutzer in der letzten Woche ausgeführt hat.

Ich habe es hierher gebracht

https://github.com/dangreenisrael/recover_crontab

Hier ist eine Beispielausgabe:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh
Dan Green-Leipciger
quelle
1
Warum wurde dies -1 gegeben? Es ist eine direkte Antwort auf die Frage.
Dan Green-Leipciger
Ich habe dein Skript verwendet. Erstaunlich, vielen Dank!
MeV
Das PHP-Skript funktioniert nicht ordnungsgemäß für Befehle, die schließende Klammern enthalten. zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
Behoben
1

Sie haben Optionen, aber keine sind besonders hübsch. Falls Sie nicht daran gedacht haben, wenn Sie eine aktuelle Version auf einem Entwicklungscomputer haben, können Sie diese von dort kopieren ... Ich sage das nur, weil ich oft Kopien vergesse, die sich möglicherweise auf anderen Computern befinden Ich gehe davon aus, dass Sie das bereits versucht haben.

Wenn Ihre Datei zu stark angepasst ist, um sie einfach neu zu erstellen, können Sie jederzeit eine einfache Forensik ausprobieren. Versuchen Sie, nach Tutorials zu suchen, die auf Sleuthkit und UFS Explorer basieren . Menschen, die diese Tools verwenden, finden sehr unterschiedliche Grade in Bezug auf Benutzerfreundlichkeit und Erfolgsraten, also wie üblich YMMV.

Geo Ego
quelle
1

Ugh kann keinen Kommentar auf die ursprüngliche Frage posten, aber ein Kollege hat mir gezeigt , nur ein großes Werkzeug: machen Sie einen Alias in was auch immer .profileSie verwenden crontabzu sein crontab -i. Das -iFlag fordert vor dem Löschen eine Bestätigung an.

Wenn Sie dies tun crontab -e, wird die Bearbeitung wie gewohnt crontab -rfortgesetzt. Wenn Sie dies jedoch versehentlich tun, werden Sie mit einer Bestätigungsaufforderung begrüßt.

KR
quelle
Das hilft nicht bei dem unmittelbaren Problem ...
vonbrand
0

Das glaube ich nicht. Es ist Zeit, mit dem Sichern dieser wichtigen Datei zu beginnen (mit allen anderen in / etc / var / spool / home ...).

Dom
quelle