溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在Linux上怎么清理垃圾系統(tǒng)管理員

發(fā)布時(shí)間:2021-10-22 09:51:00 來源:億速云 閱讀:202 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹了在Linux上怎么清理垃圾系統(tǒng)管理員,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

rm 的那些事

首先,這條命令是用來清除 Linux 系統(tǒng)的根目錄(/)下所有文件的。它使用了兩個(gè)命令選項(xiàng):

  • -r

    遞歸recursive

    ,對(duì)目錄及其下的內(nèi)容進(jìn)行遞歸操作

  • -f

    強(qiáng)制force

    ,無需確認(rèn)操作

這兩個(gè)選項(xiàng)可以單獨(dú)寫作 -r-f ,也可以按 POSIX 慣例,將兩個(gè)選項(xiàng)合并成 -rf 。這里的 -r-f 選項(xiàng),絕非上圖中惡搞的 “Rubbish” 和 “Files”。

其后的參數(shù) /* 指的是根目錄 / 下的所有文件。

-r 選項(xiàng)

-r 選項(xiàng)代表遞歸recurive,其意思是指遞歸地對(duì)參數(shù)中的目錄及其下的文件或子目錄進(jìn)行刪除操作。

這個(gè)選項(xiàng)除了短選項(xiàng)風(fēng)格,還有 GNU 風(fēng)格的長選項(xiàng) --recursive ;也出于兼容性的原因,支持同義的大寫 -R 參數(shù)。

如果沒有該選項(xiàng),則不會(huì)刪除目錄及其下的內(nèi)容。

-f 選項(xiàng)

在介紹 -f 選項(xiàng)之前,讓我們先看一下這里沒有出現(xiàn)的 -i 選項(xiàng)。

原生的 rm 命令在刪除文件或目錄時(shí),遵循 UNIX 慣例,在執(zhí)行刪除操作前和操作成功后,是靜默的,毫無提示的。除非遇到錯(cuò)誤(如要?jiǎng)h除的文件不存在)時(shí),否則絕不抱怨。

后來,可能是鑒于很多人經(jīng)常會(huì)錯(cuò)誤刪除文件,在絕大多數(shù)的 Linux 發(fā)行版上的 rm 命令是一個(gè)添加了 -i 選項(xiàng)的別名:

alias rm=rm -i

這里的 -i 選項(xiàng)用于在每一個(gè)刪除動(dòng)作前做個(gè)提示,需要用戶明確給予確認(rèn)才會(huì)刪除。

但是,有時(shí)候,這種提示實(shí)在是太煩了,所以,很多人在操作時(shí),特意使用 -f 選項(xiàng)覆蓋了 -i 選項(xiàng)的行為,使得這個(gè)別名的定義毫無意義。

因此,還有一個(gè) -I 選項(xiàng),這個(gè)選項(xiàng)在要?jiǎng)h除三個(gè)及更多的文件或遞歸刪除時(shí),會(huì)做一次確認(rèn)提示。這樣,既沒有 -i 選項(xiàng)那么煩人,又能防止大部分錯(cuò)誤操作。所以,可以將上述別名采用 -I 選項(xiàng),并避免使用 -f 選項(xiàng)。

* 通配了什么

我們看到命令中以* 來指代目錄下的所有文件。但是嚴(yán)格來說,* 這個(gè)通配符代表不以點(diǎn) “.” 開頭的所有文件。以 “.” 開頭的文件默認(rèn)屬于 Linux 下的隱藏文件。

因此,這個(gè)命令不會(huì)刪除 / 目錄下以 . 開頭的隱藏文件,以及 ... 兩個(gè)目錄。但是在遞歸操作時(shí),會(huì)遞歸地刪除子目錄下除了 ... 目錄之外的所以文件和子目錄——無論是否以 . 開頭——因?yàn)檫f歸操作不是由 Bash 等 shell 進(jìn)行通配展開的。

至于為什么不在刪除目錄下的內(nèi)容時(shí)也將 ... 一視同仁?因?yàn)樽詮?1979 年 rm 命令開始有刪除目錄的能力時(shí),就專門避開了這兩個(gè)特殊目錄。

根目錄保護(hù)

有一定經(jīng)驗(yàn)的系統(tǒng)管理員可能這個(gè)時(shí)候會(huì)想起來,rm 命令有一對(duì)專門針對(duì)根目錄的選項(xiàng) --preserve-root 和 --no-preserve-root 。這對(duì)選項(xiàng)的意思是:

  • --preserve-root:保護(hù)根目錄,這是默認(rèn)行為。

  • --no-preserve-root:不保護(hù)根目錄。

這對(duì)選項(xiàng)是后來添加到 rm 命令的。可能幾乎每個(gè)系統(tǒng)管理員都犯過操作錯(cuò)誤,而這其中刪除過根目錄的比比皆是(我就是一個(gè))。出現(xiàn)這種情況的原因有幾種:

  • 輸入手誤:比如本來想輸入 rm /tmp/test.txt,結(jié)果不小心鍵盤打的飛起,多輸入了一個(gè)空格變成: rm / tmp/test.txt 。看到根目錄(/)后面的空格了么?!——這就是我當(dāng)前自己親手犯過的錯(cuò)誤,而且是在生產(chǎn)服務(wù)器上。

  • 未正確初始化或命名錯(cuò)誤的 shell 腳本變量:比如在腳本中,rm -rf /${tmp_dir},如果無論是 tmp_dir 變量沒有正確賦值還是輸入錯(cuò)誤(原本或許是 tmpdir ?),那會(huì)導(dǎo)致什么?當(dāng)然是刪除根目錄咯~

鑒于這種情況層出不窮,在 Linux 圈子幾乎和“初學(xué)者如何退出 vi” 一樣成為經(jīng)典笑話了。所以,在 POSIX 第七版規(guī)范中,rm 命令添加了 --preserve-root 選項(xiàng),并將其作為默認(rèn)行為,以降低出現(xiàn)這種錯(cuò)誤的可能。

但是,這個(gè)選項(xiàng)不能防范本文中所述的清除根目錄下所有文件(/*)的操作。

有的同學(xué)可能要問,那為什么還會(huì)專門出現(xiàn) --no-preserve-root 選項(xiàng)呢?這可能主要是出于 UNIX 哲學(xué)的考慮,給予你想要的一切權(quán)力,犯傻是你的事情,而不是操作系統(tǒng)的事情。萬一,你真的想刪除根目錄下的所有文件呢?

你還別說,真有這種需求:比如你要清除一個(gè) chroot 環(huán)境下的所有文件。 chroot  我們這里不多講,它就是以一個(gè)目錄作為“監(jiān)獄”,該目錄在邏輯上形成了新的“根目錄”,在該監(jiān)獄內(nèi)的文件操作不能跨出該目錄范疇。近些年流行的  Docker、LXC/LXD 之類的容器技術(shù),都是一種 chroot 技術(shù)。

UEFI 系統(tǒng)

好吧,你可能更特立獨(dú)行一些,就是要清除物理環(huán)境中的根目錄下所有文件!但是在你按下回車鍵之前,請(qǐng)?jiān)倏紤]一下,你是否在一個(gè) UEFI 系統(tǒng)上?

因?yàn)?UEFI 系統(tǒng)會(huì)將其固件、變量和設(shè)置映射到根目錄下的 /sys 分區(qū)里面,所以,如果在 UEFI 環(huán)境中清除根目錄下的所有內(nèi)容,也會(huì)同樣清除 /sys ,這將可能會(huì)導(dǎo)致你丟失 UEFI 的估計(jì)設(shè)置,從而使設(shè)備變磚。

sudo 提權(quán)

為了可以刪除屬于 root 等系統(tǒng)和其它用戶的文件,這個(gè)命令還需要在前面加上 sudo 來提權(quán)。

輸入該命令后,會(huì)要求輸入密碼。誰的密碼?不是 root 密碼,而是輸入該命令的當(dāng)前用戶的密碼。

而對(duì)于誰能執(zhí)行 sudo 命令,以及他可以通過 sudo 命令執(zhí)行什么命令等知識(shí)點(diǎn),這里就不再贅述,請(qǐng)參閱我們的其它文章。順便說一句,要記得區(qū)分 sudosu 命令的聯(lián)系與區(qū)別。

垃圾文件

研究到這里,我們不能忘記這條命令原本的意圖,刪除“垃圾文件”。

Linux 下有垃圾文件么?有。這些垃圾文件一般來源于:

  • 沒有被包管理器管理的孤兒文件,在軟件包被刪除后,遺留在系統(tǒng)中

  • 無用的依賴包,在需要這些依賴包的軟件被刪除后,沒有相應(yīng)刪除

  • 沒有清理的臨時(shí)文件

  • 遺留的診斷文件

那么這些垃圾文件需要清除么?一般而言,Linux 系統(tǒng)上的這些文件大多不會(huì)對(duì)系統(tǒng)的健康運(yùn)行造成任何影響,除非太多了,占據(jù)了很多存儲(chǔ)空間和 inode。

所以,如果你感覺你的 Linux 系統(tǒng)慢了,那幾乎可以肯定不是由于垃圾文件導(dǎo)致的,至少在這一點(diǎn)上,來自 Windows 系統(tǒng)的經(jīng)驗(yàn)并不值得復(fù)制。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“在Linux上怎么清理垃圾系統(tǒng)管理員”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI