Rumah > Tutorial sistem > LINUX > Cara Mencegah Penyertaan Crontab dari Penghapusan Secara tidak sengaja di Linux

Cara Mencegah Penyertaan Crontab dari Penghapusan Secara tidak sengaja di Linux

Joseph Gordon-Levitt
Lepaskan: 2025-03-19 10:45:11
asal
219 orang telah melayarinya

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

Penghapusan penyertaan crontab secara tidak sengaja

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.

Langkah 1: Bernafas dan cuba memulihkan penyertaan tongkat yang hilang

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:

  • Sistem gambar atau sandaran : Jika anda atau pentadbir sistem anda menyediakan sandaran atau snapshot seluruh sistem, kini adalah masa yang baik untuk memeriksa mereka. Anda mungkin dapat memulihkan fail Crontab anda dari sandaran baru -baru ini.
  • Backup Editor : Jika anda menggunakan Crontab -e sebelum dan keluar dari editor tanpa menyimpan, editor mungkin telah meninggalkan fail sementara di suatu tempat dalam sistem anda. Lihat melalui direktori /TMP anda atau lokasi fail sementara lalai editor anda.
  • Alat forensik : Dalam kes -kes yang melampau, dan jika data adalah penting, terdapat alat forensik yang boleh cuba memulihkan fail yang dipadam, dengan asumsi data belum ditimpa cakera. Ini lebih kompleks dan tidak selalu berjaya.

Langkah 2: Menetapkan rutin sandaran untuk penyertaan Crontab Backup

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:

2.1. Sandaran manual

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
Salin selepas log masuk

Simpan sandaran ini di lokasi yang selamat, mungkin dalam repositori yang dikawal versi atau perkhidmatan penyimpanan awan.

2.2. Penyertaan Crontab Sandaran secara automatik menggunakan Cron

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
Salin selepas log masuk

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.

2.3. Skrip sandaran automatik

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 {} \;
Salin selepas log masuk

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:

  • #!/bin/bash: Barisan ini memberitahu komputer anda bahawa skrip ini harus dijalankan dengan shell bash.
  • BACKUP_DIR = "$ HOME/CRON_BACKUPS": Baris ini menetapkan pembolehubah bernama BACKUP_DIR ke jalan di direktori rumah anda di mana sandaran akan disimpan. Laluan adalah ~/cron_backups.
  • File_name = "crontab_backup _ $ (tarikh '%y-%m-%d'). Txt": Baris ini menetapkan pembolehubah bernama file_name ke nama yang unik untuk fail sandaran, yang termasuk tarikh semasa. Sebagai contoh, jika anda menjalankan skrip pada 27 Februari, 2024, nama fail akan menjadi crontab_backup_2024-02-27.txt.
  • Days_to_keep = 30: Menentukan bilangan hari untuk mengekalkan fail sandaran. Dalam kes kami, skrip akan menyimpan fail sandaran anda selama 30 hari. Selepas 30 hari, ia secara automatik akan memadamkan sandaran lama untuk menjimatkan ruang.
  • mkdir -p "$ backup_dir": Perintah ini mewujudkan direktori sandaran jika belum wujud. Pilihan -P memastikan bahawa arahan tidak mengembalikan ralat jika direktori sudah ada dan membolehkan penciptaan direktori bersarang jika diperlukan.
  • Crontab -l> "$ backup_dir/$ file_name": Perintah ini mengambil output crontab -l (yang menyenaraikan semua entri crontab untuk pengguna semasa) dan menyimpannya ke fail dalam direktori sandaran. Fail tersebut dinamakan mengikut pembolehubah file_name.
  • Cari "$ backup_dir" -name 'crontab_backup _*. txt' -type f -mtime $ days_to_keep -exec rm {} \;: Perintah ini mencari fail dalam direktori sandaran yang sepadan dengan corak crontab_backup _*. Opsyen Nama menentukan corak untuk memadankan nama fail, -miter f ini hanya fail (bukan direktori) yang dipertimbangkan, -mtime $ days_to_keep mencari fail yang diubah suai lebih daripada hari_to_keep hari yang lalu, dan -exec rm {} \; Memadam fail tersebut.

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
Salin selepas log masuk

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
Salin selepas log masuk

Persediaan ini memastikan bahawa setiap hari, anda akan mempunyai sandaran baru Crontab anda, disimpan dengan selamat dalam direktori yang ditentukan anda.

2.4. Kawalan versi

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.

2.5. Penyelesaian sandaran seluruh sistem

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.

  • Arkib Alat Sandaran Linux

Petua Tambahan:

  • Backup Jauh : Untuk sistem kritikal, pertimbangkan untuk menyegerakkan direktori sandaran anda ke lokasi terpencil atau perkhidmatan penyimpanan awan untuk melindungi terhadap kehilangan data tempatan.
  • Pemantauan dan Makluman : Melaksanakan pemantauan untuk pelaksanaan pekerjaan cron sandaran anda. Makluman e -mel atau pembalakan mudah dapat membantu anda memberitahu status sandaran anda.

Langkah 3: Pulihkan penyertaan tongkat yang dipadam dari sandaran

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Semak penyertaan yang disenaraikan terhadap sandaran anda untuk memastikan proses pemulihan berjaya.

Petua untuk Pemulihan:

  • Automasi : Jika anda mendapati diri anda perlu memulihkan sandaran dengan kerap, pertimbangkan skrip proses pemulihan untuk mengurangkan potensi kesilapan.
  • Integriti sandaran : Secara kerap periksa integriti sandaran anda (contohnya, dengan mengkaji semula fail sandaran secara manual) untuk memastikan ia dibuat dengan betul dan mengandungi data yang diharapkan.
  • Backup Pelbagai : Mengekalkan sandaran selama beberapa hari atau minggu, bergantung kepada kekerapan dan kapasiti penyimpanan anda, untuk memastikan anda dapat pulih dari pelbagai titik dalam masa jika diperlukan.

Langkah 4: Mencegah penghapusan penyertaan crontab secara tidak sengaja

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'
Salin selepas log masuk

Selepas menambah alias ke skrip profil pilihan anda, anda perlu menggunakan perubahan. Untuk perubahan yang akan diiktiraf, anda boleh sama ada:

  • Log keluar dan log masuk semula : Ini akan memuatkan semula skrip profil anda.
  • Sumber Skrip Profil : Untuk kesan segera tanpa log keluar, anda boleh mendapatkan skrip profil secara langsung dalam sesi terminal semasa anda.

Sebagai contoh, jika anda menambah alias ke ~/.bashrc, anda boleh menjalankan:

 $ sumber ~/.bashrc
Salin selepas log masuk

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)
Salin selepas log masuk

Cara Mencegah Penyertaan Crontab dari Penghapusan Secara tidak sengaja di Linux

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.

Kesimpulan

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan