linux 一切都是檔案 一切都是檔案

2021-10-08 05:54:57 字數 2716 閱讀 9052

linux 一切都是檔案

這是給您乙個技巧性的問題:以下哪些檔案?

也許您不會相信這一點,但是對於unix和linux來說,它們都是檔案。 這是最令人驚奇的概念之一,它使一些非常簡單但功能強大的方法能夠執行許多本來很難或不可能的管理任務。

例如,考慮備份硬碟驅動器主啟動記錄(mbr)的簡單任務。 有時,我需要還原或重新建立我的mbr,尤其是分割槽表。 從頭開始建立它非常困難。 從儲存的檔案還原它很容易。 linux附帶了功能強大的gnu實用程式dd,它可以執行此功能以及許多其他功能。

dd代表「磁碟轉儲」,但是長期存在的美國管理員都將其稱為「磁碟破壞者」,因為如果您不太謹慎的話,它將完全按照您的指示進行操作,包括銷毀硬碟或分割槽上的所有資料。

以下命令將備份您的mbr。 它必須以root使用者身份執行,因為非root使用者無法訪問/ dev目錄中的硬碟裝置檔案 。 bs是塊大小,計數是要從原始檔讀取的塊數。 此命令將在/ tmp目錄中建立乙個檔案mymbr.bak。 該檔案的大小為512位元組,包含mbr的內容,包括引導程式**和分割槽表。

dd if=/dev/sda of=/tmp/mymbr.bak bs=512 count=1

如果mbr損壞,則必須引導至應急磁碟並使用以下命令,該命令實際上執行與上述命令相反的操作。 請注意,不必像第乙個命令中那樣指定塊大小和塊數,因為dd命令將簡單地將備份檔案複製到硬碟驅動器的第乙個扇區,並在到達原始檔末尾時停止。

dd if=/tmp/mymbr.bak of=/dev/sda

linux計算機上的所有內容都可以作為檔案系統空間中的檔案進行訪問。 這樣做的全部目的是能夠在不同的事物上使用通用工具 。

dd命令可用於將硬碟驅動器的整個分割槽複製到檔案或另乙個硬碟驅動器,如下所示。 此處dd命令再次將資料複製到輸入裝置的末尾並停止。 確保輸出裝置的尺寸大於輸入裝置的尺寸。

dd if=/dev/sdf2 of=/dev/sdg3

dd if=/dev/sda of=/dev/sdg

其他檔案系統工具也可以工作。 例如,cat命令可用於將任何檔案的內容傳送到標準輸出。 這包括分割槽和整個硬碟驅動器。 然後,可以將輸出重定向到檔案。

cat /dev/sda1 > partition1.backup

但是,cat命令沒有dd命令所具有的控制。 例如,不能指定要從源裝置或檔案讀取的資料量。

這是乙個有趣的實驗,將證明所有內容都是檔案。 大多數linux發行版具有1到7的多個虛擬控制台,可用於通過shell介面登入到本地控制台會話。 可以使用組合鍵ctrl-alt-f1(對於控制台1)和ctrl-alt-f2(對於控制台2)進行訪問,依此類推。

按ctrl-alt-f2切換到控制台2。在某些發行版中,登入資訊包括與此控制台關聯的tty(電傳型別)裝置,但許多沒有。 它應該是tty2,因為您在控制台2中。

以非root使用者身份登入。 然後,您可以使用who is i命令(是的,就是這樣,帶有空格)來確定將哪個tty裝置連線到此控制台。

在我們實際執行該實驗之前,請檢視/ dev中tty2和tty3裝置的列表。

ls -l /dev tty[23]

將會定義大量的tty裝置,但是我們並不關心它們中的大多數,僅是tty2和tty3裝置。 作為裝置檔案,它們沒有什麼特別的。 它們只是字元型別的裝置。 我們將在實驗中使用這些裝置。 tty2裝置連線到虛擬控制台2,而tty3裝置連線到虛擬控制台3。

按ctrl-alt-f3切換到控制台3。以同一非root使用者身份再次登入。

現在,在控制台3上輸入以下命令。

echo "hello world" > /dev/tty2

按ctrl-alt-f2返回控制台2。控制台2中將顯示字串「 hello world」(不帶引號)。

也可以使用gui桌面上的終端**器執行此實驗。 桌面上的終端會話使用/ dev樹中的偽終端裝置,例如/ dev / pts / 1。 使用konsole或xterm開啟兩個終端會話。 確定它們連線到哪些偽終端,並使用其中乙個向另一終端傳送訊息。

現在,通過使用cat命令在另乙個終端上顯示/ etc / fstab檔案,繼續進行實驗。

另乙個有趣的實驗是使用cat命令將檔案直接列印到印表機。 假設您的印表機裝置是/ dev / usb / lp0,並且您的印表機可以直接列印pdf檔案,則以下命令將在您的印表機上列印pdf檔案。

cat test.pdf > /dev/usb/lp0

dd命令還可用於列印印表機就緒檔案。 我認為cat命令實際上更適合此任務。

轉殖硬碟驅動器。

備份分割槽。

備份主啟動記錄(mbr)。

將iso映像安裝到usb拇指驅動器上。

與其他終端上的使用者進行通訊。

將檔案列印到印表機。

更改/ proc偽檔案系統中某些檔案的內容,以修改正在執行的核心的配置引數。

用隨機資料或零覆蓋檔案,分割槽或整個硬碟驅動器。

將不需要的輸出從命令重定向到/ dev / null裝置,該裝置將永遠消失。

等等等等

有關/ dev /目錄和您可能在其中找到的裝置的更多資訊,請參閱linux journal中的本文 。 對於單個裝置的更多具體資訊, 這篇文章和這篇文章在linux文件計畫是有幫助的。

翻譯自:

linux 一切都是檔案

一切都是代名詞

一切都是代名詞,想想你所知道的,所想的,要表達出來總得有抽象的語言說出來。既然說出來都是代指一切事物,僅僅聽到的代名詞本身,指的是卻是名詞後面的事情。就像 我 這個代名詞,只要一說出來第一反應是自己吧,聽到別人說時第一反應是對方了,為什麼別人說 我 時就不反應一下自己呢?經常聽一些想成功的人,不斷的...

在金錢面前一切都是浮雲

在金錢面前一切都是浮雲 2012年01月12日 神馬世界神馬社會,在金錢面前一切都是浮雲,有事需要幫忙像求爹一樣求我,倒過來找他幫忙理都懶得理以後就別想找老子幫忙咯,這個告訴某些人,是誰自己心裡很清楚,還有你們女人別 老說男人花心怎麼d對你專一又能怎樣?到最後還不是因為男人沒錢而離去?我說錯了嗎?以...

linux系統中一切都是檔案如何理解?

linux系統中一切都是檔案如何理解?linu系統中硬碟裝置會被抽象成檔案,這些抽象成的檔案如何命名的?如何從檔名稱知道是哪個硬體?linux系統核心中的udev裝置管理器會自動把硬體名稱規範起來,目的是讓使用者通過裝置檔案的名稱可以猜出裝置大致的屬性以及分割槽資訊 對硬碟而言 udev裝置管理器會...