Recupere tarefas cron removidas acidentalmente com crontab -r

64

Entrei em crontab -rvez de crontab -ee todos os meus crontrabalhos foram removidos.

Qual é a melhor maneira (ou existe) de recuperar esses trabalhos?

Teerath Kumar
fonte
30
Sou eu ou não faria mais sentido o crontab -r perguntar sim / não por padrão?
user1446688
4
Eu acho que ter uma solicitação sim / não seria uma ótima idéia. especialmente porque e & r estão próximos um do outro .. e crontab -eé um comando cron muito comum.
11117 JustinP
4
Em 7 anos ou mais de trabalho administrativo, nunca aconteceu isso comigo. Agora estou com medo. Hora de começar a fazer backup dos crontabs regularmente.
Caja
7
Isso já aconteceu comigo duas vezes. É a pior idéia que já tive epara editar e rremover sem absolutamente nenhum aviso !!
DaniG2k
9
Primeira coisa a fazer alias crontab=crontab -i. Mas crontab deve ter feito esse padrão, dado que e & r estão ao lado do outro ...
anishsane

Respostas:

49

crontab -r remove o único arquivo que contém os trabalhos cron.

Portanto, se você não fez um backup, suas únicas opções de recuperação são:

  • No RedHat / CentOS, se seus trabalhos foram acionados antes, você pode encontrar o cron login /var/log/cron. O arquivo ajudará você a reescrever os trabalhos novamente.
  • Outra opção é recuperar o arquivo usando uma ferramenta de recuperação de arquivos. Porém, é menos provável que isso seja bem-sucedido, pois a partição do sistema geralmente é ocupada e os setores correspondentes provavelmente já foram substituídos.
  • No Ubuntu / Debian, se sua tarefa já foi executada antes, tente grep CRON /var/log/syslog
SkyDan
fonte
Não pude votar em você, mas essa resposta foi útil para mim. thankx
Teerath Kumar
1
@RajaRassani Você pode marcar a resposta correta com uma marca de seleção. Obrigado pelo feedback!
SkyDan
isso acabou de acontecer comigo :) Que chatice total .. Eu uso servidores virtuais e os faço backup regularmente .. então eu vou girar um backup .. e obter os crontabs excluídos # #
JustinP JustinP
+1 por ser simples:}
namezero 13/04
Você pode tentar a sorte procurando um backup feito pelo editor em /tmp/crontab.wpMhKS (é claro que o nome pode mudar). Pode não ser a versão mais recente, mas no meu caso ajudou muito
Jong Bor
21

Se você não possui um /var/log/cronarquivo, pode recuperar os comandos (mas não os tempos) a partir do syslog.

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

você pode descobrir a maioria dos horários observando os carimbos de data.

Miau
fonte
1
No ubuntu, o arquivo é /var/log/syslog.
Aurelijus Rozenas 29/11
@ Aurelijus Rozenas acidentalmente adicionei sys ao caminho do diretório que deveria ser / var / log / syslog, corrigi minha postagem.
Meow
2
grep 'CRON.*(yourusername)' /var/log/syslog
Aidan
@Aidin você é meu salvador! Nota para si mesmo: nunca edite o arquivo crontab enquanto o espaço do servidor estiver cheio.
Shadoath 06/02
1
Ufa que estava perto! Agora adicionei um cron para fazer backup do meu crontab todos os dias :)
SidJ
-5

vi /var/spool/cron/*user*ou se você é o rootusuário entãovi /var/spool/cron/root

user120610
fonte
3
Isso é pior. Ele edita os arquivos de spool sem notificar cronque o arquivo foi editado. Também não funcionará quando o usuário tiver excluído acidentalmente a sua crontabporque não há arquivo para editar.
roaima
Voto positivo de mim por realmente indicar a localização do crontab. Eu tinha um backup completo do sistema e podia recuperar facilmente meus cronjobs. Obrigado!
Cookie