成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在Linux上如何清理垃圾系統管理員

系統 Linux
我們經常會發一些關于關于 Bash 別名的文章,總有一些同學皮一下“貢獻”一些別致的別名,比如 alias ls=rm -rf,alias cd=rm -rf 等等。雖然我認為幾乎沒有人會被這些命令惡搞,但是大家也屢屢樂此不疲。那么讓我們來探究一下上面這條命令,看看這里有多少知識點。

在Linux上如何清理垃圾系統管理員

最近在網上看到一張圖(原圖出處不詳,題圖據原圖重制,有修改。)

唔,感覺很有道理啊,你看,rm 是刪除,這個單詞簡單好記;連 rf 都給出了解釋,“垃圾文件”;/* 代表目錄下的所有文件,沒毛病;sudo 也有了,確保權限沒問題。

哈哈,你一定會說,又編段子搞笑,沒人會信的。

會有人執行這樣的命令來清理所謂的垃圾文件么?你別說,這還真不好說。

我們經常會發一些關于關于 Bash 別名的文章,總有一些同學皮一下“貢獻”一些別致的別名,比如 alias ls=rm -rfalias cd=rm -rf 等等。雖然我認為幾乎沒有人會被這些命令惡搞,但是大家也屢屢樂此不疲。

我將這張圖發到朋友圈里,好友“龍十三”表示,這不僅僅清除垃圾文件,而且清除垃圾系統管理員

是啊,為什么會有這樣的段子一再出現呢?就是因為我們有些不求甚解的人,遇到問題了,習慣于從網上隨便找個命令示例瞎試,不去探究其原理,也不去核實可靠性。所以,這樣的段子真是用來清除“系統管理員里的垃圾”的。

那么讓我們來探究一下上面這條命令,看看這里有多少知識點。

rm 的那些事

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

  • -r遞歸recursive,對目錄及其下的內容進行遞歸操作
  • -f強制force,無需確認操作

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

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

-r 選項

-r 選項代表遞歸recurive,其意思是指遞歸地對參數中的目錄及其下的文件或子目錄進行刪除操作。

這個選項除了短選項風格,還有 GNU 風格的長選項 --recursive ;也出于兼容性的原因,支持同義的大寫 -R 參數。

如果沒有該選項,則不會刪除目錄及其下的內容。

-f 選項

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

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

后來,可能是鑒于很多人經常會錯誤刪除文件,在絕大多數的 Linux 發行版上的 rm 命令是一個添加了 -i 選項的別名:

  1. alias rm=rm -i

這里的 -i 選項用于在每一個刪除動作前做個提示,需要用戶明確給予確認才會刪除。

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

因此,還有一個 -I 選項,這個選項在要刪除三個及更多的文件或遞歸刪除時,會做一次確認提示。這樣,既沒有 -i 選項那么煩人,又能防止大部分錯誤操作。所以,可以將上述別名采用 -I 選項,并避免使用 -f 選項。

* 通配了什么

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

因此,這個命令不會刪除 / 目錄下以 . 開頭的隱藏文件,以及 ... 兩個目錄。但是在遞歸操作時,會遞歸地刪除子目錄下除了 ... 目錄之外的所以文件和子目錄——無論是否以 . 開頭——因為遞歸操作不是由 Bash 等 shell 進行通配展開的。

至于為什么不在刪除目錄下的內容時也將 ... 一視同仁?因為自從 1979 年 rm 命令開始有刪除目錄的能力時,就專門避開了這兩個特殊目錄。

根目錄保護

有一定經驗的系統管理員可能這個時候會想起來,rm 命令有一對專門針對根目錄的選項 --preserve-root 和 --no-preserve-root 。這對選項的意思是:

  • --preserve-root:保護根目錄,這是默認行為。
  • --no-preserve-root:不保護根目錄。

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

  • 輸入手誤:比如本來想輸入 rm /tmp/test.txt,結果不小心鍵盤打的飛起,多輸入了一個空格變成: rm / tmp/test.txt 。看到根目錄(/)后面的空格了么?!——這就是我當前自己親手犯過的錯誤,而且是在生產服務器上。
  • 未正確初始化或命名錯誤的 shell 腳本變量:比如在腳本中,rm -rf /${tmp_dir},如果無論是 tmp_dir 變量沒有正確賦值還是輸入錯誤(原本或許是 tmpdir ?),那會導致什么?當然是刪除根目錄咯~

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

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

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

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

UEFI 系統

好吧,你可能更特立獨行一些,就是要清除物理環境中的根目錄下所有文件!但是在你按下回車鍵之前,請再考慮一下,你是否在一個 UEFI 系統上?

因為 UEFI 系統會將其固件、變量和設置映射到根目錄下的 /sys 分區里面,所以,如果在 UEFI 環境中清除根目錄下的所有內容,也會同樣清除 /sys ,這將可能會導致你丟失 UEFI 的估計設置,從而使設備變磚。

sudo 提權

為了可以刪除屬于 root 等系統和其它用戶的文件,這個命令還需要在前面加上 sudo 來提權。

輸入該命令后,會要求輸入密碼。誰的密碼?不是 root 密碼,而是輸入該命令的當前用戶的密碼。

而對于誰能執行 sudo 命令,以及他可以通過 sudo 命令執行什么命令等知識點,這里就不再贅述,請參閱我們的其它文章。順便說一句,要記得區分 sudosu 命令的聯系與區別

垃圾文件

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

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

  • 沒有被包管理器管理的孤兒文件,在軟件包被刪除后,遺留在系統中
  • 無用的依賴包,在需要這些依賴包的軟件被刪除后,沒有相應刪除
  • 沒有清理的臨時文件
  • 遺留的診斷文件

那么這些垃圾文件需要清除么?一般而言,Linux 系統上的這些文件大多不會對系統的健康運行造成任何影響,除非太多了,占據了很多存儲空間和 inode。

所以,如果你感覺你的 Linux 系統慢了,那幾乎可以肯定不是由于垃圾文件導致的,至少在這一點上,來自 Windows 系統的經驗并不值得復制。


好了,關于這個簡單的命令,我們已經挖掘了這么多知識點,你都知道了嗎?

事實上,關于這些知識,還有更多的內涵、外延和歷史信息,作為一個真正的系統管理員,而不是一個腳本小子,需要認真地研究每個命令和細節。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2014-02-28 10:08:52

密碼策略系統管理員

2013-12-09 16:15:08

系統管理員WebminLinux服務

2010-05-06 18:07:33

Unix命令

2010-05-07 16:35:44

2012-11-01 11:33:11

IBMdw

2013-10-18 09:31:03

Linux 系統Linux 發行版

2010-11-10 09:36:38

系統管理員守則

2011-10-20 10:29:22

VMwareVMworld虛擬化

2012-06-06 10:41:37

系統管理員運維

2018-08-15 14:00:18

LinuxBash系統管理員

2013-06-26 09:29:30

系統管理員

2013-08-20 10:11:20

Go系統管理員

2013-09-29 09:50:21

系統管理員Ubuntu JujuJuju

2010-04-12 09:33:58

系統管理員

2010-06-10 14:23:01

2014-08-14 09:47:43

Linux管理員

2015-08-17 15:13:05

Linux系統管理員云計算

2009-10-22 16:53:08

2019-09-09 14:45:29

系統管理員SRE

2010-08-10 09:13:52

Unix系統管理員Ubuntu
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区 | 精品三级在线观看 | 91综合在线视频 | 国产精品美女在线观看 | 日本不卡免费新一二三区 | 一区二区三区在线播放视频 | 天天爽夜夜爽精品视频婷婷 | 久久久免费 | 久久精品二区亚洲w码 | 精品在线看 | 日韩波多野结衣 | 成人免费视频观看视频 | 久久网亚洲 | 亚洲欧美一区二区三区情侣bbw | 玖玖在线免费视频 | 亚洲欧美在线观看 | 成人精品一区亚洲午夜久久久 | 91高清在线观看 | 精品一二三区在线观看 | 综合欧美亚洲 | 欧美一区二区三区大片 | 国产成人啪免费观看软件 | 欧美日韩国产在线观看 | 久久久日韩精品一区二区三区 | 国产精品久久久久久亚洲调教 | 嫩草影院黄 | 女同久久另类99精品国产 | 午夜av电影 | 日韩精品一区二区三区在线播放 | www.99热.com| 欧美日韩国产一区二区三区不卡 | 亚洲精品一区在线 | 天天看天天爽 | 国产视频精品免费 | 久久久久亚洲 | 秋霞电影一区二区三区 | 青草青草久热精品视频在线观看 | 91一区二区在线观看 | 精品视频一区二区 | www.久久国产精品 | 国产线视频精品免费观看视频 |