Récupérer les tâches cron supprimées accidentellement avec crontab -r


64

Je suis entré crontab -rau lieu de crontab -eet tous mes cronemplois ont été supprimés.

Quel est le meilleur moyen (ou existe-t-il un) de récupérer ces emplois?


30
Est-ce juste moi ou ce serait plus logique pour crontab -r de demander oui / non par défaut ??
— user1446688

4
Je pense qu'avoir une invite oui / non serait une bonne idée. D'autant plus que e & r sont juste l'un à côté de l'autre crontab -e.
— JustinP

4
En 7 ans environ de travail administratif, cela ne m'est jamais arrivé. Maintenant j'ai peur. Il est temps de commencer à sauvegarder les crontabs régulièrement.
— Caja

7
Cela m'est déjà arrivé deux fois. C’est la pire idée d’avoir jamais eu eà éditer et rà enlever avec absolument aucune invite !!
— DaniG2k

9
Première chose à faire alias crontab=crontab -i. Mais crontab aurait dû faire ce défaut, étant donné que e & r sont côte à côte ...
— anishsane

Réponses:


49

crontab -r supprime le seul fichier contenant les tâches cron.

Donc, si vous n'avez pas fait de sauvegarde, vos seules options de récupération sont:

  • Sous RedHat / CentOS, si vos travaux ont déjà été déclenchés, vous pouvez trouver le journal cron /var/log/cron. Le fichier vous aidera à réécrire les tâches à nouveau.
  • Une autre option consiste à récupérer le fichier à l'aide d'un outil de récupération de fichier. Cela risque toutefois moins de réussir, car la partition système est généralement occupée et les secteurs correspondants ont probablement déjà été remplacés.
  • Sur Ubuntu / Debian, si votre tâche a été exécutée auparavant, essayez grep CRON /var/log/syslog

Je ne pouvais pas vous faire voter mais cette réponse était utile pour moi. Thankx
— Teerath Kumar

1
@RajaRassani Vous pouvez cocher la réponse est correcte avec une coche, cependant. Merci pour vos commentaires!
— SkyDan

cela m'est arrivé :) bummer ... j'utilise des serveurs virtuels et les sauvegarde régulièrement ... alors je vais lancer une sauvegarde .. et récupérer les crontabs supprimés
— JustinP

+1 pour être simple:}
— namezero

Vous pouvez tenter votre chance à la recherche d’une sauvegarde effectuée par l’éditeur dans /tmp/crontab.wpMhKS (bien entendu, le nom peut changer). Ce n'est peut-être pas la version la plus récente, mais dans mon cas, cela a beaucoup aidé
— Jong Bor

21

Si vous n'avez pas de /var/log/cronfichier, vous pouvez récupérer les commandes (mais pas les timings) à partir du fichier syslog.

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

vous pouvez ensuite déterminer la plupart des minutages en consultant les horodatages.


1
Sur Ubuntu le fichier est /var/log/syslog.
— Aurelijus Rozenas

@ Aurelijus Rozenas J'ai accidentellement ajouté sys au chemin du répertoire, il devrait être / var / log / syslog, j'ai corrigé mon post.
— Meow

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

@Aidin tu es mon sauveur! Remarque personnelle: ne modifiez jamais le fichier crontab lorsque l'espace du serveur est saturé.
— Shadoath

1
Ouf c'était proche! J'ai maintenant ajouté un cron pour sauvegarder ma crontab tous les jours :)
— SidJ

-5

vi /var/spool/cron/*user*ou si vous êtes l' rootutilisateur alorsvi /var/spool/cron/root


3
C'est pire. Il édite les fichiers de spool sans notifier cronque le fichier a été modifié. Cela ne fonctionnera pas non plus lorsque l'utilisateur aura accidentellement supprimé leur crontabfichier car il n'y a aucun fichier à éditer.
— Roaima

Upvote de ma part pour avoir indiqué l'emplacement de la crontab. J'avais une sauvegarde complète du système et pouvais facilement récupérer mes tâches cron. Merci!
— Cookie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.