Alih-alih mengetik "crontab -e" saya tidak sengaja mengetik "crontab" dan terjebak di tengah-tengah proses jadi saya membatalkan proses. Sekarang ketika saya pergi ke crontab -e semuanya kosong. Ini tidak baik sama sekali. Jika saya tidak bisa mendapatkannya kembali, saya harus menulis ulang.
Apakah ada cara untuk:
- dapatkan kembali pekerjaan crontab saya? apakah mereka ada di memori di suatu tempat? Di mana file crontab khusus akun berada di linux? ATAU
- dapatkan log dari semua hal yang telah dilakukan cron, jadi saya bisa merekayasa balik file crontab saya. Saya sudah lama tidak melihatnya?
Jawaban:
crontab
tanpa argumen membaca file crontab dari input standar. Misalnya, Anda dapat menggunakan:Setelah Anda memecahkan crontab Anda (yaitu,
crontab -l
tidak menunjukkan apa-apa), tidak ada cara yang baik untuk mendapatkannya kembali.Di sistem saya (Ubuntu 11.04), crontab pribadi disimpan
/var/spool/cron/crontabs/<USER>
- tetapi itulah yang Anda musuhi, sehingga tidak ada gunanya bagi Anda. (Jalannya bisa berbeda di sistem Anda.)Saya melihat entri
/var/log/syslog
untuk perintah yang dijalankan olehcron
; Anda mungkin dapat merekonstruksi crontab Anda dari itu (atau setara dengan sistem Anda, jika ada), tetapi itu akan membosankan.Inilah yang saya lakukan untuk menghindari masalah seperti ini:
Saya menyimpan crontab saya di file terpisah, dipelihara dalam sistem kontrol sumber. Saya menginstalnya hanya dengan menjalankan
Saya tidak pernah menggunakan
crontab -e
. Jika saya secara tidak sengaja memecahkan crontab saya, saya bisa memuatnya kembali dari file. (Yah, hampir tidak pernah; Kadang-kadang saya gunakancrontab -e
untuk membuat perubahan sementara, mengetahui bahwa saya dapat mengembalikan versi saat ini nanti.)sumber
crontab -l > filename
. Untuk mengembalikannyacrontab filename
,. Gunakan antarmuka yang disediakan sistem; jangan pergi ke belakang dan memanipulasi file sistem. Untuk satu hal, memperbarui file tidak harus memberitahu sistem untuk membacanya lagi; yangcrontab
perintah akan. Untuk yang lain, mungkin ada perbedaan antara apa yang ada di file dan output daricrontab -l
; di Ubuntu, file memiliki beberapa baris komentar tambahan yang menyarankan Anda untuk tidak mengeditnya./var/spool/cron/crontabs/<USER>
. Pada SUSE, jalan saya sedikit berbeda (catatan tambahan slash):/var/spool/cron/cron/tabs/<USER>
. Kupikir aku akan menyebutkan itu untuk pemula ke cron dan linux seperti aku. Jawaban Keith benar.Skrip untuk pemulihan crontab penuh
Saya membuat skrip PHP yang melakukan pemulihan penuh terhadap crontab Anda, berdasarkan log.
Ini output contoh tunggal dari setiap perintah cron dijalankan oleh pengguna selama minggu terakhir.
Saya taruh di sini
https://github.com/dangreenisrael/recover_crontab
Berikut adalah contoh keluaran:
sumber
Maaf, tetapi saya tidak bisa tidak bertanya yang jelas: mengapa tidak mengembalikannya dari cadangan?
Eh, maaf, saya sudah melihat yang disarankan.
sumber
Jika variabel lingkungan EDITOR Anda adalah EDITOR = vi, coba
untuk memulihkan sesi. Jangan langsung menulis sesi yang disimpan, jika Anda mendapatkannya, ke direktori crontab Anda. Gunakan itu sebagai panduan untuk membuat ulang crontab Anda menggunakan
Catatan: Karena Anda tidak menentukan OS, Solaris dan OS UNIX lainnya tidak mengenali perubahan pada file crontab kecuali yang dibuat melalui crontab -e. Jika saya ingat dengan benar, Linux melakukannya.
sumber
crontab
daripadacrontab -e
. Lihat jawaban saya untuk cara (IMHO) yang lebih baik untuk menjaga crontab Anda.Jawaban bagus dari @Keith Thompson - ide bagus merekonstruksi dari / var / log / syslog!
Saya juga secara tidak sengaja memecahkan crontab pengguna saya tetapi dapat merekonstruksinya dengan skrip-fu berikut
di mana nama pengguna harus diganti dengan pengguna yang crontab Anda ingin merekonstruksi.
Perhatikan bahwa Anda mungkin perlu mem-gunzip isi file /var/log/syslog.x.gz Anda terlebih dahulu jika log telah dikompres (ubuntu zip syslog.2 +)
Ini juga hanya akan mendapatkan perintah yang masih ada dalam log, yaitu sekitar 7 hari terakhir ... jadi jika Anda memiliki tugas bulanan yang tidak berjalan ... yang itu mungkin hilang
sumber