Recuperar trabajos cron eliminados accidentalmente con crontab -r

64

Entré en crontab -rlugar de crontab -ey todos mis crontrabajos han sido eliminados.

¿Cuál es la mejor manera (o hay alguna) de recuperar esos trabajos?

Teerath Kumar
fuente
30
¿Soy solo yo o no tendría más sentido que crontab -r pregunte sí / no por defecto?
user1446688
44
Creo que tener un sí / no sería una gran idea. especialmente porque e & r están uno al lado del otro ... y crontab -ees un comando cron realmente común.
JustinP
44
En más de 7 años de trabajo administrativo nunca me ha pasado esto. Ahora tengo miedo. Es hora de comenzar a hacer copias de seguridad de los crontabs regularmente.
Caja
77
Esto ya me ha pasado dos veces. ¡Es la peor idea que se haya tenido epara editar y reliminar sin absolutamente ningún aviso!
DaniG2k
99
Lo primero que hay que hacer alias crontab=crontab -i,. Pero crontab debería haber hecho ese valor predeterminado, dado que e & r están uno al lado del otro ...
anishsane

Respuestas:

49

crontab -r elimina el único archivo que contiene los trabajos cron.

Entonces, si no realizó una copia de seguridad, sus únicas opciones de recuperación son:

  • En RedHat / CentOS, si sus trabajos se han activado antes, puede encontrar el inicio de sesión cron /var/log/cron. El archivo lo ayudará a reescribir los trabajos nuevamente.
  • Otra opción es recuperar el archivo usando una herramienta de recuperación de archivos. Sin embargo, es menos probable que tenga éxito, ya que la partición del sistema suele estar ocupada y los sectores correspondientes probablemente ya se han sobrescrito.
  • En Ubuntu / Debian, si su tarea se ha ejecutado antes, intente grep CRON /var/log/syslog
SkyDan
fuente
No podría votarte, pero esta respuesta fue de alguna manera útil para mí. thankx
Teerath Kumar
1
@RajaRassani Sin embargo, puede marcar la respuesta correcta con una marca de verificación. ¡Gracias por la retroalimentación!
SkyDan
esto me acaba de pasar :) un fastidio total ... Yo uso servidores virtuales y los respaldo regularmente ... así que voy a hacer una copia de seguridad ... y obtener los crontabs eliminados
JustinP
+1 por ser sencillo:}
namezero
Puede probar suerte buscando una copia de seguridad realizada por el editor en /tmp/crontab.wpMhKS (por supuesto, el nombre puede cambiar). Puede que no sea la versión más reciente, pero en mi caso ayudó mucho
Jong Bor
21

Si no tiene ningún /var/log/cronarchivo, puede recuperar los comandos (pero no los tiempos) del syslog.

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

A continuación, puede averiguar la mayoría de los tiempos mirando los sellos de fecha.

maullar
fuente
1
En ubuntu el archivo es /var/log/syslog.
Aurelijus Rozenas
@ Aurelijus Rozenas Accidentalmente agregué sys a la ruta del directorio, debería ser / var / log / syslog, corrigí mi publicación.
Miau
2
grep 'CRON.*(yourusername)' /var/log/syslog
aidan
@Aidin eres mi salvador! Nota personal: nunca edite el archivo crontab mientras el espacio del servidor esté lleno.
Shadoath
1
Uf que estaba cerca! Ahora agregué un cron para respaldar mi crontab todos los días :)
SidJ
-5

vi /var/spool/cron/*user*o si eres el rootusuario entoncesvi /var/spool/cron/root

usuario120610
fuente
3
Esto es peor Edita los archivos de cola sin notificar cronque el archivo ha sido editado. Tampoco funcionará cuando el usuario haya eliminado accidentalmente su crontabporque no hay ningún archivo para editar.
roaima
Voté de mi parte por indicar realmente la ubicación del crontab. Tenía una copia de seguridad completa del sistema y podía recuperar fácilmente mis cronjobs. ¡Gracias!
Cookie