cron tab dosyasını sildi ve kurtarmanız gerekiyor


11

Crontab -e yerine crontab -r'yi çalıştırdım ve crontab dosyamı sildim. Silinen dosyayı kurtarmak için yeni bir yedeklemem yoktu.

Mümkün mü?

Teşekkürler,

Peter


7
düzenleme ve kaldırma seçenekleri klavyede yan yana olmamalıdır. Hızlı bir yazım hatası yapmak çok kolay bir hata.
einstiien

tam da başıma gelen buydu.

Yanıtlar:


9

Nelerin çalıştığını görmek için / var / log / cron'a bakmayı ve ardından crontab'ı bundan yeniden oluşturmayı deneyin. Dağınık ama daha önce çalışmış olan her şeyi geri yükleyebilmelisiniz. Olsa da yeni öğeler için çok şans. İyi şanslar!


Harika bir yaklaşım!
Alex

5

Her şeyden önce: Daima yedekleyin!

Ancak, karıştırmak çok kolaydır crontab -rve crontab -e. Bunu kendim yaptım.

Ben de öyle yaptım:

/ Var / log / cron dosyasına bir göz atmayı ve crontab'ınızı yeniden oluşturmayı deneyebilirsiniz.

  1. Günlük dosyasına bir göz atın
  2. İlk komutu al ve yap grep commandname1 /var/log/cron
  3. Komutun çalıştırıldığı zamanların ardındaki sistematiği anlayın
  4. Bu girişi yeni crontab'ınıza koyun
  5. yürütmek cat /var/log/cron | grep -v commandname1. Bu, daha önce ele aldığınız komut1'i hariç tutar.
  6. Bir sonraki komutu al ve bunun için grep
  7. İkinci komutun çalıştırıldığı zamanların ardındaki sistematiği anlayın
  8. bu girişi yeni crontab'ınıza koyun
  9. gerçekleştirmek cat /var/log/cron | grep -v commandname1 | grep -v commandname2
  10. Tüm komutları kapatana kadar tekrarlayın

Artık ayda sadece bir kez çalıştırılabilecek işleri bulmak için eski cronloglarda grep'i de çalıştırmalısınız.


1
Ubuntu'da en azından (anacron / Vixie cron kullanan diğer platformlardan emin değilim) günlüğün depolanması /var/log/syslog/*.
Timothy Gu

1
Bir şeyi yanlışlıkla silmeden önce her zaman bir yedek oluşturun!
Dávid Horváth

4

Tam crontab kurtarma için komut dosyası

Günlüğe dayanarak crontab'ınızın tam olarak kurtarılmasını sağlayan bir PHP betiği yaptım.

Kullanıcı tarafından geçen hafta çalıştırılan her cron komutunun tek bir örneğini çıkarır.

Buraya koydum

https://github.com/dangreenisrael/recover_crontab

İşte bir örnek çıktı:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

1
Buna neden -1 verildi? Bu soruya doğrudan bir cevap.
Dan Yeşil-Leipciger

Senaryonuzu kullanıyorum. Harika, çok teşekkür ederim!
MeV

PHP betiği, kapanış parantezini içeren komutlar için uygun şekilde çalışmaz. Sabitlendi ve zgrep -F "($USER) CMD (" /var/log/syslog* | cut -d\( -f3- | sort -u | while read cmd ; do echo ${cmd::-1} ; done
bash'a

1

Seçenekleriniz var, ancak hiçbiri özellikle güzel değil. Bunu düşünmediyseniz, bir geliştirme makinesinde yeni bir sürümünüz varsa, oradan kopyalayabilirsiniz ... Yalnızca şunu söylüyorum çünkü diğer makinelerde olabilecek kopyaları sık sık unuttum, bu yüzden Bunu zaten denediğini varsayıyorum.

Dosyanız kolayca yeniden oluşturulamayacak kadar özelleştirilmişse, her zaman düşük seviyeli adli tıp deneyebilirsiniz. Sleuthkit ve UFS Explorer tabanlı öğreticiler için googling yapmayı deneyin . Bu araçları kullanan kişiler, her zamanki gibi YMMV gibi kullanım kolaylığı ve başarı oranları açısından çok çeşitli dereceler bulurlar.


1

Ahh asıl soruya hakkında yorum yollamak ama bir meslektaş sadece bana harika bir araç gösterdi olamaz: ne olursa olsun bir takma ad yapmak .profileiçin kullandığınız crontabolmak crontab -i. -iBayrak silmeden önce onay ister.

Bu nedenle, crontab -eher zamanki gibi düzenlemeye devam eder, ancak yanlışlıkla yaparsanız crontab -rbir onay istemi ile karşılaşırsınız.


Bu acil sorun ile yardımcı olmaz ...
vonbrand

0

Ben öyle düşünmüyorum. Bu önemli dosyayı yedeklemeye başlama zamanıdır (/ etc / var / spool / home ... içindeki tüm diğerleri ile).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.