天天看點

05 Linux根檔案系統

1、file 指令及其用法

man file

file /root 

  /root: directory

file /bin/ls

  /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

Windows 

  PE: 可移植的可執行檔案

Linux

  ELF: 

   一種可執行檔案的存儲格式 

   可執行的可連結的檔案類型

   Linux上常見的可執行二進制檔案格式

檔案系統是核心的核心功能之一,目的是實作本機上某一個分區上的檔案管理

檔案系統:

rootfs: 根檔案系統

  對 Linux 而言,每一個檔案都必須是根檔案系統下的某一個路徑

  必須要通過根檔案系統才能通路

根, root ,用 / 表示 

檔案系統分為目錄和檔案,除了目錄的都是檔案

所有的檔案都存放在目錄當中,都能夠通過目錄查找的到

FHS: Filesystem Hierarchy Standard(檔案系統階層化标準) 

ls / :

2、關鍵路徑說明

/boot: 系統啟動相關的檔案,如核心、initrd,以及 grub (bootloader 引導加載器)

  如果 /boot 目錄不存在,或對應的幾個檔案不存在,系統根本無法啟動。

  作業系統啟動時所要用到的核心 vmlinuz ,以及暫時性的小 linux 系統

  vmlinuz :

  initrd (initramfs) : 磁盤映像檔案,類似虛拟機,假的赢怕,能建立分區

/dev: 裝置檔案 

  裝置檔案:

    塊裝置: 随機通路,資料塊, 磁盤,硬碟

    字元裝置: 線性通路,鍵盤,輸入 abc 顯示 abc ,滑鼠,顯示器

         整個螢幕上顯示的内容都是在顯存中按位存儲的

    裝置号: 主裝置号(major) 和次裝置号(minor)

        一個裝置隻有有裝置檔案,才能被 linux 所通路

    在主機上要接入一個新裝置,例如插入U盤,要想通路U盤,首先在 dev 目錄下建立一個裝置檔案, 由系統自動完成。

  Linux 哲學思想,一切皆檔案。是以,所有的硬體裝置,也被識别為各個檔案

  device 裝置

  ls -l /dev 

    lrwxrwxrwx. 1 root root           3 Jan 15 05:08 cdrom -> sr0

    lrwxrwxrwx. 1 root root           3 Jan 15 05:08 dvd -> sr0

    連結 (Windows 快捷方式) 

    brw-rw----. 1 root cdrom    11,   0 Jan 15 05:08 sr0

    裝置檔案沒有大小,直接存儲中繼資料,而且是作為裝置的通路入口存在的

/etc : 配置檔案

   Linux 哲學思想,将程式的配置檔案儲存為純文字格式

/home: 使用者的家目錄,每一個使用者的家目錄通常預設為 /home/USERNAME

/root: root 使用者的家目錄不再 /home 下,并且他的名稱就叫 /root

   在傳統的 Unix 系統上,root 使用者是沒有家目錄的,因為 root 使用者從來都不需要登入作業系統

   Windows 下不允許格式化 C 盤,Linux 不阻止你自殺

   生産環境使用普通使用者登入,不要用 root 使用者登入,隻有要用到管理功能的時候,才切換到 root 使用者。

/lib: 庫檔案

  靜态庫: .a

  動态庫: .dll , .so (shared object)

  任何程式和資料都必須要載入記憶體之後才能被程式所使用,

  對于共享庫,任何程式要使用共享庫,把共享庫載入記憶體就可以使用,如果第二個程式也用到這個共享庫,它就不用再載入了,因為記憶體中已經有了,拿來就用。共享庫在記憶體中隻存在一份即可。

  對于靜态庫,直接連結到程式的位址空間中去,作為程式的一部分運作的。

  靜态方式便于程式單個檔案管理,例如把一個程式從一個 linux 主機移動到另一個 linux 主機,隻需要把檔案從 a 主機複制到 b 主機就能直接運作

  但是,如果要使用動态連結庫的方式的話,那就意味着它自己的運作還要依賴于庫。是以将程式從 a 主機挪到 b 主機還不夠,還必須保證 b 主機有程式運作時所依賴的共享對象才行。

  /lib/modules: 核心子產品檔案

/lost+found:

  任何一個建立的分區上都會有的目錄,通常跟檔案系統相關,是用于存儲那些檔案系統在機器突然間斷電的時候,檔案沒有輸入屬組,并且尚未來得及儲存的檔案,是為了實作丢失并找回的目的的。

/media: 挂載點目錄,挂載移動裝置,U盤,CD光牒

/mnt: 額外的臨時檔案系統,比如第二塊硬碟,隻要跟目前檔案系統沒有關系,都需要挂載

挂載點:

  在 Windows 上要想通路CD光牒中的内容,CD光牒放進光驅,輕按兩下

  在 Linux 中,CD光牒放入光驅以後,必須要将這個裝置關聯到目前整個檔案系統樹上的某一個節點上,才能進行通路。這個過程,把某個裝置,跟目前檔案系統上的某一個目錄建立關聯關系的過程,稱為挂載。

  /dev/cdrom 是裝置檔案,隻是裝置上資料的通路入口

  CD光牒放入光驅後,将 /dev/cdrom 關聯到 /media 目錄下,通過 /media 目錄就可以通路

/misc

  雜項

/opt:

  可選目錄

 早期通常用于安裝第三方程式,現在放在 /usr/local

/proc

  僞檔案系統

  核心映射檔案,大多數檔案都是核心中的可調參數,或核心工作的統計資料。

  例如網卡,隻有核心能通路,要想看看網卡接收了多少個資料包,發送了多少個資料包,這些統計資料都在這裡面。

  是以要想改變作業系統的根本工作屬性,通常都是通過改變這個目錄下的某個檔案來完成的。事實上改的不是檔案,而是核心屬性,隻不過被映射成了檔案。都是假檔案,事實上不是檔案。隻不過表現成了檔案的樣子而已。

  這個目錄是空的,但系統啟動以後檔案就不空了。

  系統調優,絕大多數都跟這個目錄相關。

  整個系統的性能資料的監控,也跟這個目錄相關。

/sys:

  跟硬體裝置相關的屬性映射檔案,跟核心也相關,隻不過把它獨立出來了。

  通常用于實作硬體裝置管理,尤其是像硬碟這樣的裝置。

  關機後這個目錄也是空的,隻是映射出來的資訊而已。

/tmp: /var/tmp

  臨時檔案系統 

  存放可以被其他使用者通路到的檔案

  如果一個月這個目錄沒有被通路,這個目錄會被系統腳本自動清除。

  每一個人都可以在裡面建立檔案,但是隻能在裡面删除自己的檔案,卻不能删除别人建立的檔案

/var:

  可變化的檔案

/bin:

  二進制

  可執行檔案

  使用者指令

/sbin: super

  管理指令

/usr: universal shared readonly

  全局的共享的隻讀檔案

  /usr/bin

  /usr/sbin

  /usr/lib

  /bin 和 /sbin 下放的是跟系統自身啟動相關的指令

  /usr/bin 、/usr/sbin 是系統啟動後,為了提供一些基本功能所具備的指令或可執行程式

/usr/local:

  /usr/local/bin

  /usr/local/sbin

  /usr/local/lib

  第三方軟體的安裝路徑

3、命名規則

Linux 是嚴格區分檔案名稱大小寫的

  1. 長度不能超過 255 個字元

  2. 不能使用 / 當檔案名

  3. 嚴格區分大小寫

除此之外其他任何字元都合法,包括 * 和空格等特殊字元

4、目錄管理

ls

cd

pwd

mkdir: 建立空目錄

  -p:

  -v: verbose 詳細資訊

  mkdir x

  mkdir x/y    目前目錄

  mkdir ./x/y  作為參數 ./ 可以省略,目前目錄

  mkdir -pv m/n/q

linux 哲學思想,沒有資訊就是最好的資訊,執行完指令沒有資訊,說明成功了。

指令行展開

  mkdir -pv /mnt/test/x/m /mnt /mnt/test/y

tree:

   檢視目錄樹

  tree x

删除目錄

rmdir: 删除空目錄 (remove directory)

檔案的建立和删除

touch 修改檔案時間戳

  touch a

  file a

stat 檢視檔案狀态

建立檔案,可以使用文本編輯器

ASCII: 

  128 個不同的字元

  2^7 = 0, 127

  計算機存儲資料的最小機關是位元組,一個位元組是8位 。

  雖然隻有7位,但存儲的時候也要用 一個位元組 8位來存儲。

ASCII 碼表,是一個标準,約定大家用同一個二進制表示的字元相同。

漢字:

  常用漢字幾千個

  所有漢字大概十幾萬個

  2^16 = 65535  ,用兩個自己存儲漢字,可以存儲六萬多個漢字

标準 GB18030 、GB2312、GBK、Unicode

0000 1001 0000 1110 : 上、衛

notepad++ 文本編輯器 (純文字)

word 字處理軟體 (文本、樣式)

notepad++ 編輯的文本,拿到 linux 裡可以當配置檔案用

nano:

  nano hello : 建立一個文本檔案 hello 

  ^ : 脫字元 ctrl 

  ^O: 儲存

  Linux 中的文本編輯器

  ls -lh hello

  file hello