Pernahkah anda mengalami masa yang menjatuhkan hati apabila anda menyedari bahawa anda secara tidak sengaja memadamkan semua penyertaan crontab anda? Jika anda mengangguk kepala, anda tidak bersendirian. Saya juga melakukan kesilapan ini sebentar tadi.
Secara tidak sengaja menjalankan Crontab -R adalah kesilapan yang boleh berlaku kepada sesiapa sahaja, walaupun pengguna Linux yang berpengalaman, memandangkan kedekatan kunci 'R' dan 'E'.
Perintah Crontab -r, yang menghilangkan semua pekerjaan cron yang dijadualkan, sangat mudah dijalankan secara tidak sengaja, terutamanya kerana ia berdekatan dengan Crontab -e, perintah untuk mengedit penyertaan ini.
Tetapi jangan risau! Dalam jawatan ini, kami akan berjalan melalui bagaimana untuk memulihkan penyertaan krontab yang hilang , bagaimana untuk menyokong penyertaan Crontab secara teratur, dan strategi untuk mencegah penyertaan krontab daripada penghapusan tidak disengajakan pada masa akan datang.
Jadual Kandungan
Beberapa ketika dahulu, saya bermaksud menjalankan Crontab -e untuk mengedit pekerjaan saya yang dijadualkan, tetapi jari saya mengkhianati saya dan pergi untuk Crontab -r sebaliknya. Tiba -tiba, semua pekerjaan kron saya yang dirancang dengan teliti hilang.
Oleh kerana kunci "e" dan "r" bersebelahan satu sama lain di papan kekunci, saya secara tidak sengaja menjalankan perintah crontab -r dan bukannya crontab -e, dan dalam sekejap mata, saya kehilangan semua entri crontab saya.
Bagi mereka yang tertanya -tanya, crontab -r perintah menghilangkan crontab pengguna semasa tanpa sebarang pengesahan, yang boleh menyebabkan kehilangan semua pekerjaan cron yang dijadualkan.
Kesilapan ini mudah dibuat, terutamanya di bawah tekanan hari yang sibuk atau gangguan multitasking.
Berikut adalah cara anda dapat menangani keadaan dan mencegah kejadian masa depan.
Pertama, tarik nafas panjang. Keadaan ini mungkin tidak begitu mengerikan. Walaupun sistem Unix dan Linux tidak mempunyai butang "undo" untuk crontab -r, terdapat beberapa tempat yang anda boleh cari sandaran:
Sebaik sahaja anda telah memulihkan entri crontab anda (atau, malangnya, jika anda tidak), sangat penting untuk memulakan rutin sandaran untuk mengelakkan sakit kepala masa depan.
Untuk mengelakkan kerugian masa depan, berikut adalah beberapa strategi untuk menyokong penyertaan Crontab:
Anda harus masuk ke dalam kebiasaan sandaran secara manual entri crontab anda sebelum mengeditnya. Walaupun sandaran manual lebih baik daripada apa -apa, mereka bergantung kepada anda ingat untuk melakukannya.
Untuk menyandarkan Crontab anda secara manual, jalankan:
$ crontab -l> ~/backup_crontab.txt
Simpan sandaran ini di lokasi yang selamat, mungkin dalam repositori yang dikawal versi atau perkhidmatan penyimpanan awan.
Menyediakan pekerjaan cron harian untuk membuat sandaran secara automatik entri crontab anda adalah cara terbaik untuk memastikan anda sentiasa mempunyai salinan pekerjaan kron baru -baru ini.
Amalan ini dengan ketara mengurangkan risiko kehilangan data akibat penghapusan yang tidak disengajakan atau isu -isu yang tidak dijangka. Berikut adalah contoh mudah bagaimana anda boleh menubuhkan pekerjaan kron seperti itu:
Edit Crontab anda dengan arahan Crontab -e dan tambahkan baris baru seperti di bawah untuk penyertaan Crontab Backup secara automatik pada masa tertentu:
0 1 * * * crontab -l>/path/to/sandaran/direktori/crontab_backup _ $ (tarikh \%y-\%m-\%d) .txt
Gantikan/jalan/ke/sandaran/direktori/dengan laluan anda sendiri.
Perintah ini mewujudkan sandaran penyertaan Crontab anda setiap hari pada pukul 1 pagi, dengan nama fail yang merangkumi tarikh sandaran, menjadikannya mudah untuk menjejaki dan memulihkan jika diperlukan.
Terdapat satu masalah dengan pendekatan di atas. Ia akan terus membuat fail baru setiap hari pada pukul 1 pagi. Ini tidak cekap kerana direktori sandaran akan berkembang selama -lamanya.
Untuk mengelakkan ini, anda mungkin mempertimbangkan untuk melaksanakan sistem putaran dan pembersihan untuk sandaran anda. Dengan cara ini, anda menyimpan direktori sandaran anda daripada berkembang terlalu besar dengan mengekalkan hanya beberapa set fail sandaran baru -baru ini.
Saya membuat skrip mudah yang betul -betul ini. Ia menyokong penyertaan Crontab anda ke fail dalam direktori tertentu. Selain itu, ia secara automatik menghilangkan sandaran yang lebih tua selepas beberapa ketika.
Dengan cara ini, folder sandaran anda tetap kemas dan tidak mengisi dengan fail lama yang anda tidak perlukan lagi.
Buat skrip sandaran :
Pertama, buat skrip yang akan menjimatkan entri Crontab semasa anda ke fail. Anda mungkin mahu memasukkan cap waktu dalam nama fail untuk menjejaki sandaran yang berbeza dari masa ke masa.
Inilah contoh skrip asas.
Buat fail, contohnya ~/cron_backup.sh, dengan kandungan berikut di dalamnya:
#!/bin/bash # Tentukan direktori sandaran dan nama fail BACKUP_DIR = "$ home/cron_backups" File_name = "crontab_backup _ $ (tarikh '%y-%m-%d'). Txt" # Bilangan hari untuk menyimpan sandaran Days_to_keep = 30 # Pastikan direktori sandaran wujud mkdir -p "$ backup_dir" # Simpan penyertaan Crontab ke fail Crontab -l> "$ backup_dir/$ file_name" # Padam fail sandaran lebih tua daripada bilangan hari yang ditentukan Cari "$ backup_dir" -name 'crontab_backup _*. txt' -type f -mtime $ days_to_keep -exec rm {} \;
Skrip ini direka untuk menyokong penyertaan crontab anda dan menguruskan sandaran tersebut untuk mengelakkan direktori sandaran anda daripada menjadi berantakan dengan fail lama.
Inilah pecahan bagaimana skrip ini berfungsi, langkah demi langkah:
Dengan menjalankan skrip ini, anda secara automatik membuat sandaran baru entri crontab anda setiap kali dan simpan direktori sandaran bersih dengan mengeluarkan sandaran yang lebih tua daripada beberapa hari tertentu. Pendekatan ini membantu dalam mengekalkan sejarah penyertaan Crontab baru -baru ini tanpa menguruskan sandaran secara manual.
Simpan fail dan tutupnya. Dan kemudian menjadikannya boleh dilaksanakan dengan berjalan:
$ chmod x ~/cron_backup.sh
Jadualkan pekerjaan sandaran :
Seterusnya, jadilah skrip ini untuk dijalankan setiap hari melalui Crontab anda. Edit Crontab anda dengan Crontab -e dan tambahkan baris baru untuk skrip sandaran. Sebagai contoh, untuk menjalankan sandaran setiap hari pada pukul 1:00 pagi, anda akan menambah:
0 1 * * */bin/bash $ home/cron_backup.sh
Persediaan ini memastikan bahawa setiap hari, anda akan mempunyai sandaran baru Crontab anda, disimpan dengan selamat dalam direktori yang ditentukan anda.
Simpan fail Crontab anda dalam sistem kawalan versi (VCS) seperti Git . Ini bukan sahaja menyokong fail tetapi juga menyimpan sejarah perubahan, yang membolehkan anda kembali ke versi sebelumnya jika perlu.
Pastikan strategi sandaran anda termasuk sandaran peringkat sistem yang menangkap seluruh keadaan sistem, termasuk semua crontabs pengguna.
Kami telah mengkaji dan menerbitkan panduan mengenai pelbagai alat sandaran di blog kami. Sila terokai arkib kami untuk mencari yang sesuai dengan keperluan anda.
Petua Tambahan:
Sekiranya anda secara tidak sengaja menjalankan Crontab -r dan memadamkan entri crontab anda, tetapi anda telah menyokongnya secara teratur seperti yang dibincangkan di bahagian sebelumnya, memulihkan Crontab anda adalah mudah.
Berikut adalah cara anda dapat memulihkan entri crontab anda dari sandaran:
1. Cari fail sandaran terbaru anda :
Pertama, anda perlu mencari sandaran terkini Crontab anda. Jika anda mengikuti strategi sandaran contoh, sandaran anda akan ditempatkan di direktori tertentu (misalnya, $ rumah/cron_backups) dan dinamakan dengan setem tarikh untuk mengenal pasti mudah.
2. Semak kandungan sandaran :
Sebelum memulihkan, ia adalah amalan yang baik untuk mengkaji semula kandungan fail sandaran untuk memastikan ia mengandungi entri crontab yang diharapkan. Anda boleh menggunakan arahan seperti kucing atau kurang untuk melihat fail:
$ CAT $ HOME/CRON_BACKUPS/CRONTAB_BACKUP _ $ (DATE '%Y-%M-%D'). TXT
Sekiranya sandaran hari ini belum dibuat atau anda perlu memulihkan dari tarikh tertentu, laraskan tarikh dalam arahan dengan sewajarnya.
3. Pulihkan Crontab dari sandaran :
Sebaik sahaja anda telah mengenal pasti fail sandaran yang betul dan mengesahkan kandungannya, anda boleh memulihkan entri crontab anda dengan menggunakan arahan Crontab dengan fail sandaran sebagai input:
$ crontab $ home/cron_backups/crontab_backup _ $ (date '%y-%m-%d'). txt
Sekali lagi, laraskan tarikh dalam arahan untuk memadankan fail sandaran yang anda ingin gunakan untuk pemulihan.
4. Sahkan pemulihan :
Selepas memulihkan, sangat penting untuk mengesahkan bahawa Crontab anda telah dipulihkan dengan betul dan mengandungi semua penyertaan yang diharapkan. Gunakan perintah Crontab -L untuk menyenaraikan penyertaan Crontab semasa:
$ crontab -l
Semak penyertaan yang disenaraikan terhadap sandaran anda untuk memastikan proses pemulihan berjaya.
Petua untuk Pemulihan:
Akhirnya, mari kita bincangkan bagaimana untuk mencegah kesilapan ini berlaku pada masa akan datang.
Menambah alias untuk Crontab dengan pilihan -i dalam skrip profil anda adalah cara yang bijak dan berkesan untuk melindungi terhadap penghapusan yang tidak disengajakan terhadap penyertaan crontab anda.
Pilihan -i untuk Crontab menyediakan prompt interaktif yang meminta pengesahan sebelum memadamkan crontab anda, yang dapat menghalang kehilangan pekerjaan kron anda yang tidak disengajakan.
Menyediakan alias:
Anda boleh membuat alias dalam profil shell anda untuk mengatasi Crontab -r dengan crontab -i, yang memaksa perintah untuk meminta pengesahan sebelum memadamkan apa -apa.
Tambahkan baris berikut ke ~/.bashrc, ~/.bash_profile, atau setaraf:
alias crontab = 'crontab -i'
Selepas menambah alias ke skrip profil pilihan anda, anda perlu menggunakan perubahan. Untuk perubahan yang akan diiktiraf, anda boleh sama ada:
Sebagai contoh, jika anda menambah alias ke ~/.bashrc, anda boleh menjalankan:
$ sumber ~/.bashrc
Menguji alias:
Untuk memastikan alias anda berfungsi seperti yang diharapkan, anda boleh mengujinya dengan selamat dengan cuba memadam entri krontab yang tidak kritikal atau sementara. Apabila anda menjalankan Crontab -r, kini anda harus melihat segera meminta pengesahan, seperti:
Crontab: Betul memadam Crontab? (y/n)
Permintaan ini adalah pengesahan anda bahawa alias berfungsi dengan betul dan akan membantu mencegah penghapusan crontab secara tidak sengaja pada masa akan datang.
Periksa dua kali ganda :
Memupuk kebiasaan menyemak semula arahan sebelum menekan Enter. Ia mungkin kelihatan seperti perkara kecil, tetapi ia dapat menjimatkan banyak masalah.
Secara tidak sengaja memadam entri crontab anda adalah pengalaman yang mengecewakan, tetapi bukan akhir dunia. Dengan mengikuti langkah -langkah dan petua ini, anda boleh memulihkan entri crontab yang tidak disengajakan secara tidak sengaja.
Anda juga boleh mengelakkan kecelakaan ini pada masa akan datang dengan menyokong penyertaan Crontab secara automatik menggunakan skrip shell mudah kami.
Atas ialah kandungan terperinci Cara Mencegah Penyertaan Crontab dari Penghapusan Secara tidak sengaja di Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!