Dalam sistem Linux, pemadaman fail adalah operasi yang sangat berbahaya, terutamanya apabila fail yang ingin anda padamkan terletak dalam pustaka sistem atau direktori yang sedang berjalan. Memadamkan fail ini boleh membawa kepada ranap sistem, ralat aplikasi dan akibat serius yang lain. Hari ini kami akan memperkenalkan cara memadam perpustakaan dan menjalankan fail dengan selamat dalam sistem Linux untuk mengelakkan risiko yang tidak perlu.
Saya sering melihat di Internet bahawa beberapa operator atau pengaturcara secara tidak sengaja menaip fungsi rm delete yang salah, menyebabkan sistem dan pangkalan data terpadam. Bagi melarikan diri, hari ini editor akan membawa anda untuk memahami secara mendalam tentang pemadaman ini dan melarikan diri.
Saya baru-baru ini melihat gambar di Internet (asal gambar asal tidak diketahui, gambar tajuk diterbitkan semula daripada gambar asal, dengan pengubahsuaian.)
Rasanya sangat munasabah, anda lihat, rm bermakna padam dan mudah diingati; , pastikan kebenaran tiada masalah.
Adakah sesiapa akan melaksanakan arahan sedemikian untuk membersihkan apa yang dipanggil fail sampah? Jangan beritahu saya, ia sangat sukar untuk dikatakan.
Kami sering menyiarkan artikel tentang alias Bash, dan sesetengah pelajar sentiasa "menyumbang" beberapa alias unik, seperti alias ls=rm -rf, alias cd=rm -rf, dll. Walaupun saya fikir hampir tiada siapa yang tertipu dengan arahan ini, semua orang sering menikmatinya.
Saya menghantar gambar ini kepada kalangan rakan saya, dan rakan saya "Long Shisan" berkata bahawa ini bukan sahaja mengalih keluar fail sampah, tetapi juga mengalih keluar pentadbir sistem sampah.
Ya, mengapa jenaka seperti ini muncul berulang kali? Ini kerana sesetengah daripada kita yang tidak mahu memahami masalah, apabila kita menghadapi masalah, digunakan untuk mencari contoh arahan secara rawak daripada Internet dan mencubanya secara membuta tuli, tanpa meneroka prinsipnya atau mengesahkan kebolehpercayaannya. Oleh itu, jenaka seperti ini benar-benar digunakan untuk membersihkan "sampah dalam pentadbir sistem".
Jadi mari kita terokai arahan di atas dan lihat berapa banyak mata pengetahuan yang ada di sini.
Perkara-perkara tentangrm
Pertama sekali, arahan ini digunakan untuk mengosongkan semua fail dalam direktori root (/) sistem Linux. Ia menggunakan dua pilihan arahan:
-r: rekursif, lakukan operasi rekursif pada direktori dan kandungannya
-f: paksa, tiada pengesahan diperlukan
Dua pilihan ini boleh ditulis secara berasingan -r dan -f, atau ia boleh digabungkan menjadi -rf mengikut konvensyen POSIX. Pilihan -r dan -f di sini pastinya bukan spoof "Sampah" dan "Fail" dalam gambar di atas.
Parameter berikut /* merujuk kepada semua fail di bawah direktori akar /.
-r pilihan
Pilihan-r mewakili rekursif, yang bermaksud memadam secara rekursif direktori dalam parameter dan fail atau subdirektori di bawahnya.
Selain gaya pilihan pendek, pilihan ini juga mempunyai pilihan panjang gaya GNU –rekursif atas sebab keserasian, parameter huruf besar sinonim -R juga disokong.
Tanpa pilihan ini, direktori dan kandungannya tidak akan dipadamkan.
-f pilihan
Sebelum memperkenalkan pilihan -f, mari kita lihat dahulu pilihan -i yang tidak muncul di sini.
Arahan rm asli mengikut konvensyen UNIX apabila memadam fail atau direktori Ia senyap dan senyap sebelum dan selepas operasi pemadaman berjaya. Jangan sekali-kali merungut melainkan anda menghadapi ralat (seperti fail yang ingin anda padamkan tidak wujud).
Kemudian, mungkin kerana ramai orang sering memadam fail secara tidak sengaja, arahan rm pada kebanyakan pengedaran Linux ialah alias dengan pilihan -i ditambah:
alias rm=rm -i
Pilihan -i di sini digunakan untuk membuat gesaan sebelum setiap tindakan pemadaman dan pengguna perlu memberikan pengesahan yang jelas sebelum pemadaman.
Namun, kadangkala gesaan ini benar-benar menjengkelkan, jadi ramai orang sengaja menggunakan pilihan -f untuk mengatasi gelagat pilihan -i semasa operasi, menjadikan takrifan alias ini tidak bermakna.
Oleh itu, terdapat juga pilihan -I, yang akan menggesa pengesahan apabila anda ingin memadam tiga atau lebih fail atau memadam secara rekursif. Ini kurang menjengkelkan daripada pilihan -i dan menghalang kebanyakan operasi yang salah. Oleh itu, anda boleh menggunakan pilihan -I untuk alias di atas dan elakkan menggunakan pilihan -f.
*** Apakah itu wildcard**
Kami melihat bahawa * digunakan dalam arahan untuk merujuk kepada semua fail dalam direktori. Tetapi secara tegasnya, aksara * kad bebas mewakili semua fail yang tidak bermula dengan titik "." Fail yang bermula dengan "." adalah fail tersembunyi di bawah Linux secara lalai.
Oleh itu, arahan ini tidak akan memadam fail tersembunyi bermula dengan direktori /, serta .. Walau bagaimanapun, semasa operasi rekursif, semua fail dan subdirektori dalam subdirektori kecuali direktori .
Mengapa tidak merawat dan .. sama apabila memadam kandungan direktori? Kerana sejak 1979, apabila arahan rm mula mempunyai keupayaan untuk memadam direktori, ia secara khusus telah mengelakkan kedua-dua direktori khas ini.
Perlindungan Direktori Akar
Pentadbir sistem dengan pengalaman tertentu mungkin ingat pada masa ini bahawa arahan rm mempunyai sepasang pilihan khusus untuk direktori root –preserve-root dan –no-preserve-root. Sepasang pilihan ini bermaksud:
–preserve-root: Lindungi direktori akar, ini ialah tingkah laku lalai.
–no-preserve-root: Jangan lindungi direktori root.
Pasangan pilihan ini telah ditambahkan pada arahan rm kemudian. Mungkin hampir setiap pentadbir sistem telah membuat kesilapan operasi, dan banyak daripada mereka telah memadamkan direktori akar (saya salah satunya). Terdapat beberapa sebab mengapa ini berlaku:
Ralat memasukkan: Sebagai contoh, saya pada asalnya ingin memasukkan rm /tmp/test.txt, tetapi secara tidak sengaja papan kekunci terbang ke atas, dan saya memasukkan ruang tambahan dan ia menjadi: rm /tmp/test.txt. Adakah anda melihat ruang selepas direktori akar (/)? ! ——Ini adalah kesilapan yang saya lakukan sendiri pada masa ini, dan ia berlaku pada pelayan pengeluaran.
Pembolehubah skrip shell yang dimulakan dengan salah atau salah dinamakan: Contohnya, dalam skrip, rm -rf /${tmp_dir}, jika pembolehubah tmp_dir tidak ditetapkan dengan betul atau dimasukkan dengan salah (mungkin ia pada asalnya tmpdir?), apakah yang akan berlaku ? Sudah tentu, padamkan direktori akar~
Memandangkan situasi ini tidak berkesudahan, ia telah menjadi satu jenaka klasik dalam kalangan Linux seperti "Bagaimana untuk keluar dari vi untuk pemula". Oleh itu, dalam spesifikasi edisi ketujuh POSIX, pilihan –preserve-root telah ditambahkan pada arahan rm sebagai tingkah laku lalai untuk mengurangkan kemungkinan ralat ini.
Walau bagaimanapun, pilihan ini tidak melindungi daripada mengosongkan semua fail dalam direktori akar (/*) seperti yang diterangkan dalam artikel ini.
Sesetengah pelajar mungkin bertanya, mengapakah pilihan –no-preserve-root muncul? Ini mungkin kebanyakannya disebabkan oleh falsafah UNIX yang memberi anda semua kuasa yang anda mahukan dan menjadi bodoh adalah perniagaan anda, bukan sistem pengendalian. Bagaimana jika, anda benar-benar mahu memadam semua fail dalam direktori akar?
Jangan beritahu saya, terdapat keperluan sedemikian: sebagai contoh, anda ingin mengosongkan semua fail dalam persekitaran chroot. Kami tidak akan bercakap tentang chroot di sini Ia menggunakan direktori sebagai "penjara". Teknologi kontena seperti Docker dan LXC/LXD yang telah menjadi popular dalam beberapa tahun kebelakangan ini adalah semua teknologi chroot.
sistem UEFI
Baiklah, anda mungkin lebih unik dan ingin mengosongkan semua fail dalam direktori akar persekitaran fizikal! Tetapi sebelum anda menekan enter, fikirkan semula, adakah anda menggunakan sistem UEFI?
Oleh kerana sistem UEFI akan memetakan perisian tegar, pembolehubah dan tetapannya kepada partition /sys dalam direktori root, jadi jika anda mengosongkan semua dalam direktori root dalam persekitaran UEFI, /sys juga akan dikosongkan, yang mungkin menyebabkan Anda kehilangan tetapan anggaran UEFI, dengan itu merosakkan peranti.
peningkatan keistimewaan sudo
Untuk memadamkan fail kepunyaan sistem seperti root dan pengguna lain, arahan ini juga perlu didahului dengan sudo untuk meningkatkan keistimewaan.
Selepas memasukkan arahan ini, anda akan diminta untuk memasukkan kata laluan anda. kata laluan siapa? Bukan kata laluan akar, tetapi kata laluan pengguna semasa yang memasukkan arahan.
Bagi siapa yang boleh melaksanakan perintah sudo dan arahan apa yang boleh dia laksanakan melalui arahan sudo, kami tidak akan menerangkan butiran di sini. Sila rujuk artikel kami yang lain. Ngomong-ngomong, ingat untuk membezakan sambungan dan perbezaan antara arahan sudo dan su.
Fail sampah
Setelah meneliti perkara ini, kami tidak dapat melupakan niat asal arahan ini, iaitu untuk memadam "fail sampah".
Adakah terdapat fail sampah di bawah Linux? mempunyai. Fail sampah ini biasanya datang daripada:
Fail anak yatim yang tidak diuruskan oleh pengurus pakej ditinggalkan dalam sistem selepas pakej perisian dipadamkan
Pakej bergantung yang tidak berguna, selepas perisian yang memerlukan pakej bergantung ini dipadamkan, ia tidak dipadamkan dengan sewajarnya
Tiada fail sementara untuk dibersihkan
Fail diagnostik warisan
Jadi adakah fail sampah ini perlu dibersihkan? Secara umumnya, kebanyakan fail ini pada sistem Linux tidak akan memberi sebarang kesan ke atas operasi sistem yang sihat, melainkan terdapat terlalu banyak dan menduduki banyak ruang storan dan inod.
Jadi, jika anda merasakan sistem Linux anda perlahan, hampir pasti ia bukan disebabkan oleh fail sampah, sekurang-kurangnya pada ketika ini, pengalaman daripada sistem Windows tidak berbaloi untuk disalin.
Melalui artikel ini, kami mengetahui tentang kaedah dan langkah selamat untuk memadam perpustakaan dan menjalankan fail dalam sistem Linux. Walaupun ini adalah operasi yang mudah, melaksanakannya tanpa pengetahuan yang berkaitan boleh membawa akibat yang serius. Ingat kepentingan membuat sandaran data anda, berhati-hati dan memulihkan seperti yang diperlukan.
Atas ialah kandungan terperinci berhati-hati! Cara memadam perpustakaan dengan selamat dan menjalankan fail dalam sistem Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!