Linux系統中的文件和目錄名稱是嚴格區分大小寫的。
linux系統的文件存儲結構如下圖:

Linux系統中常見的目錄名稱及相應內容
目錄名稱
應放置文件的內容
/boot
開機所需文件——內核、開機菜單及所需配置文件等
/dev
以文件形式存放任何設備與接口
/etc
配置文件
/home
用戶家目錄
/bin
存放單用戶模式下還可以操作的命令
/lib
開機時用到的函數庫,及/bin與/sbin下面的命令要調用的函數
/sbin
開機過程中需要的命令
/media
用于掛載設備文件的目錄
/opt
設置第三方的軟件
/root
系統管理員的家目錄
/srv
一些網絡服務的數據文件目錄
/tmp
任何人均可使用的“共享”臨時目錄
/proc
虛擬文件系統,例如系統內核、進程、外部設備及網絡狀態等
/usr/local
用戶自行安裝的軟件
/usr/sbin
Linux系統開機時不會使用到的軟件/命令/腳本
/usr/share
幫助與說明文件,也可放置共享文件
/var
主要存放經常變化的文件,如日志
/lost+found
當文件系統發生錯誤時,將一些丟失的文件片段存放這里
#### 物理設備的命名規則
udev設備管理器的服務會一直以守護進程的形式運行并偵聽內核發出的信號來管理/dev目錄下的設備文件
**常見的硬件設備及其文件名稱**
硬件設備
文件名稱
IDE設備
/dev/hd\[a-d\]
SCSI/SATA/U盤
/dev/sd\[a-p\]
軟驅
/dev/fd\[0-1\]
打印機
/dev/lp\[0-15\]
光驅
/dev/cdrom
鼠標
/dev/mouse
磁帶機
/dev/st0 或 /dev/ht0
目前IDE設備很少,所以一般都是以“/dev/sd”開頭,因此系統采用a~p來代表16塊不同的硬盤(默認從a開始分配)。
**硬盤分區編號:**
- 主分區或擴展分區的編號從1開始,到4結束
- 邏輯分區從編號5開始
注意:
設備名稱的誤解:*/*dev目錄中的sda設備之所是a,是由系統內核的識別順序來決定的,只是恰巧很多主板插槽順序就是系統內核的識別順序,因此才會被命名為/dev/ada。
分區名稱的誤解:如sda3,認為是設備上的第三個分區(這是錯誤的)。因為分區的數字編碼不一定是強制順延下來的,也可能是手工指定的。因此sda3只能表示編號為3的分區,而不能判斷sda設備上已經存在了3個分區。

“/dev/sda5”表示的就是“這是系統中第一塊被識別到的硬件設備中分區編號為5的邏輯分區的設備文件”。
硬盤設備是由大量的扇區組成的,每個扇區的容量為512字節。其中第一個扇區最重要,里面保存著主引導記錄與分區表信息。
主引導記錄占446字節,分區表為64字節,結束符占用2字節;其中分區表每記錄一個分區信息就需要16字節,這樣一來最多只有4個分區信息可以寫到第一個扇區中,這4個分區就是4個主分區。

這樣如果需要超出4個分區,就需要將第一個扇區的分區表中16字節(原本要寫入主分區信息)的空間(稱之為擴展分區)拿出來指向另外一個分區。即,擴展分區其實并不是一個真正的分區,像一個占用16字節分區表空間的指針——一個指向另外一個分區的指針。因此,用戶一般選3個主分區加1個擴展分區的方法,然后在擴展分區中創建多個邏輯分區。
注意:所謂擴展分區,嚴格地說它不是一個實際意義的分區,僅僅是一個指向下一個分區的指針,這種指針結構將形成一個單向鏈表。

#### 文件系統與數據資料
最常見的文件系統:
- Ext3:是一款日志文件系統,能夠在系統異常宕機時避免文件系統資料丟失,并能自動修復數據的不一致與錯誤。然而當硬盤容量較大時,所需的修復時間也很長,而且也不是百分之百的保證資料不丟失。它會把整個磁盤的每個寫入動作的細節都預先記錄下來,以便在發生異常宕機后能回溯追蹤到被中斷的部分,然后嘗試進行修復。
- Ext4:Ext3的改進版本,作為RHEL6系統中的默認文件管理系統,它支持的存儲容量高達1EB(1EB=1073741824GB),且能夠有無限多的子目錄。另外,Ext4文件系統能夠批量分配block塊,從而極大地提高讀寫效率。
- XFS:是一種高性能的日志文件系統,而且是RHEL7中默認的文件管理系統,它的優勢在發生意外宕機后尤其明顯,既可以快速地恢復可能被破壞的文件,而且強大的日志功能只用花費極低的計算和存儲性能。并且它最大可支持的存儲容量為18EB。
VFS架構示意圖:

從中可見,實際文件系統在VFS下隱藏了自己的特性和細節,這樣用戶在日常使用時會覺得“文件系統都是一樣的”,也就可以隨意使用各種命令在任何文件系統中進行各種操作了。
#### mount命令
mount命令用于掛載文件系統,格式為“mount 文件系統 掛載目錄”。
mount命令中的參數及作用
參數
作用
-a
掛載所有在/etc/fstab中定義的文件系統
-t
指定文件系統的類型
“掛載”就是當用戶需要使用硬盤設備或分區中的數據時,需要先將其與一個已存在的目錄文件進行關聯。
其中-a,它會在執行后自動檢測/etc/fstab文件中有無疏漏被掛載的設備文件,如有,則進行自動掛載操作。
如:把設備/dev/sdb2掛載到/backup目錄。mount /dev/sdb2 /backup
但是這樣不是永久掛載重啟之后又要重新掛載。那么就要按照指定的格式
“**設備文件 掛載目錄 格式類型 權限選項 是否備份 是否自檢**”寫入到/etc/fstab文件中。
**用于掛載信息的指定填寫格式中,各字段所表示的意義**
字段
意義
設備文件
一般為設備的路徑+設備名稱,也可以寫唯一識別碼(UUID,Universally Unique Identifier)
掛載目錄
指定要掛載到的目錄,需在掛載前創建好
格式類型
指定文件系統的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此為光盤設備)等
權限選項
若設置為defaults,則默認權限為:rw,suid,dev,exec,auto,nouser,async
是否備份
若為1則開機后使用dump進行磁盤備份,為0則不備份
是否自檢
若為1則開機后自動進行磁盤自檢,為0則不自檢
如:將文件系統為ext4設備/dev/sdb2開機后自動掛載到/backup上,且默認權限無需開機自檢。修改/etc/fstab
/dev/sdb2 /backup ext4 defaults 0 0
#### umount命令
umount命令用于撤銷已經掛載的設備文件,格式為“umount \[掛載點/設備文件\]”
如:手動卸載/dev/sdb2設備文件, umount /dev/sdb2
#### fdisk命令
fdisk命令用于管理磁盤分區,格式為“fdisk \[磁盤名稱\]”。
它提供了添加、刪除、轉換分區等功能于一身的“一站式服務”。
fdisk命令中的參數及作用
參數
作用
m
查看全部可用的參數
n
添加新的分區
d
刪除某個分區信息
l
列出所有可用的分區類型
t
改變某個分區的類型
p
查看分區信息
w
保存并退出
q
不保存直接退出
如:fdisk嘗試管理/dev/sdb硬盤設備。提示信息后輸入參數p查看硬盤設備內已有的分區信息,其中包括硬盤的容量大小、扇區個數等信息,**fdisk /dev/sdb p****(查看信息)**
n (新建分區) p(創建主分區) 還是e(創建擴展分區)
1(默認一個分區編號) 回車確定起始扇區位置,結束扇區位置不管,輸入+2G(創建出一個容量為2GB的硬盤分區)。
如果file /dev/sdb1查不到,是系統有時候并沒有自動把分區信息同步到Linux內核,我們輸入兩次partprobe手動將分區信息同步到內核,還不行就重啟。
#### mkfs格式化操作命令
在shell終端中輸入mkfs后再敲兩下補齊命令tab。會把常用的文件系統名稱用后綴的方式保存成了多個命令文件,——mkfs.文件類型名稱。如:要格式分區XFS文件系統,則為mkfs.xfs /dev/sdb1。
**分區和格式化結束之后,就是掛載并使用存儲設備。**
- 首先創建一個掛載設備的掛載點目錄(mkdir /newFS)
- 然后使用mount命令將存儲設備與掛載點進行關聯(mount /dev/sdb1 /newFS)
- 最后使用df -h命令來查看掛載狀態和硬盤使用量信息(df -h)
#### du命令
du命令用于查看文件數據占用量,格式為“du \[選項\] \[文件\]”。
意思就是查看一個或多個文件占用了多大的硬盤空間。我們還可以使用du -sh /\*命令 來查看在Linux系統根目錄下所有一級目錄分別占用的空間大小。
如:先復制文件在查看占用多大容量,cp -rf /etc/\* /newFS; ls /newFS; du -sh /newFS
#### swap交換分區
SWAP交換分區是一種通過在硬盤中預先劃分一定的空間,然后把內存中暫時不常用的數據臨時存放到硬盤中。在生產環境中,交換分區大小一般為真實物理內存的1.5~2倍。
- 先通過fdisk /dev/sdb建立一個5G的分區。
- 然后通過SWAP分區專用的格式化命令**mkswap**,對新建的分區進行格式化。
- 其后,使用**swapon**把準備好的SWAP分區設備正式掛載到系統中(可以先用
free -m 查看下變化,沒有掛載前的,掛載后的)。
- 最后,為了重啟依然生效,修改/etc/fstab。
注意查看swap是通過free命令來看
#### quota命令
quota命令進行磁盤容量配額管理,從而限制用戶的硬盤可用容量或所能創建的最大文件個數。
quota命令還有軟限制和硬限制功能:
- 軟限制:當達到軟限制時會提示用戶,但仍運行用戶在限定的額度內繼續使用。
- 硬限制:當達到硬限制時會提示用戶,且強制終止用戶的操作。
quota已安裝在RHEL7中,但存儲設備卻默認沒有開啟對quota支持,需要手動編輯配置文件,讓系統中的/boot目錄能夠支持quota磁盤配額技術。
\# vim /etc/fstab
(就是對目錄/boot那行,添加一個uquota)
UUID=812b1f7c-8b5b-43da-8c06d-b9999e0f48b /boot xfs defaults,**uquota** 1 2
\# reboot (重啟系統)
\# mount | grep boot (使用mount命令查看)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,**usrquota**)
\# useradd tom (創建一個用于檢測quota磁盤容量配額效果的用戶tom)
\# chmod -Rf o+w /boot (對/boot目錄加其他人的寫權限,保證用戶能正常寫入數據)
#### xfs\_quota命令
xfs\_quota命令是一個專門針對XFS文件系統來管理quota磁盤容量配額服務而設計的。
格式為“xfs\_quota \[參數\] 配額 文件系統”。其中-c參數用于以參數形式設置要執行的命令;-x參數是專家模式,讓運維人員能夠對quota服務進行更多復雜的配置。
舉例:用xfs\_quota來設置用戶tom對/boot目錄的quota磁盤容量配額。軟限制和硬限制分別為3MB和6MB;創建文件數量的軟限制和硬限制分別為3個和6個。
\# xfs\_quota -x -c ‘limit bsofg=3m bhard=6m isoft=3 ihard=6 tom’ /boot
\# xfs\_quota -x -c report /boot
嘗試切換到tom,創建一個體積為5MB和8MB的文件,發現8MB時受限制。
\# su – tom
\# dd if=/dev/zero of=/boo/tom bs=5M count=1 (命令成功)
\# dd if=/dev/zero of=/boot/tom bs=8M count=1(命令出現錯誤提示,配額限制)
#### edquota命令
edquota命令用于編輯用戶的quota配額限制,格式為“edquota \[參數\] \[用戶\]”
其中-u參數表示要針對哪個用戶進行設置;-g參數表示要針對哪個用戶組進行設置。
舉例:把tom用戶的硬盤使用量硬限制從5MB提升到8MB
\# edquota -u tom (進入vim或vi編輯里面,修改對應hard下行的數字即可)
\# su – tom (切換到tom用戶)
\# dd if=/dev/zero of=/boot/tom bs=8M count=1 (成功)
\# dd if=/dev/zero of=/boot/tom bs=10M count=1 (超出配額,失敗)
#### 軟硬方式鏈接
- 硬鏈接(hard link):可以將它理解為一個“指向原始文件inode的指針”,系統 不為它分配獨立的inode和文件。所以硬鏈接與原始文件其實是同一個文件,只是名字不同。我們每添加一個硬鏈接,該文件的inode連接數就會增加1;而且只有當改文件的inode連接數為0,才算徹底將它刪除。換言之,由于硬鏈接實際上是指向原文件inode的指針,因此即便原始文件被刪除,依然可以通過硬鏈接文件來訪問。需要注意的是,由于技術的局限性,我們不能跨分區對目錄文件進行鏈接。
- 軟鏈接(也稱為符號鏈接\[symbolic link\]):僅僅包含所有鏈接文件的路徑名,因此能鏈接目錄文件,也可以跨越文件系統進行鏈接。但,當原始文件被刪除后,鏈接文件也將失效,這一點類似于windows系統中的“快捷方式“。
#### ln 命令
ln命令用于創建鏈接文件,格式為“ln \[選項\] 目標”
ln命令中可用的參數及作用
參數
作用
-s
創建“符號鏈接”(如果不帶-s參數,則默認創建硬鏈接)
-f
強制創建文件或目錄的鏈接
-i
覆蓋前先詢問
-v
顯示創建鏈接的過程
舉例:創建一個類似于windows的快捷方式的軟鏈接。
\# echo “Welcome to linuxprobe.com” > readme.txt (創建readme.txt)
\# ln -s readme.txt readit.txt (創建軟鏈接readit.txt)
\# cat readme.txt (查看readme.txt)
\# cat readit.txt (查看readit.txt)
\# ls -l readme.txt (查看readme.txt的屬性)
\# rm -f readme.txt (刪除readme.txt)
\# cat readit.txt (原文件刪除了,所以軟鏈接也失效了)
下面創建一個硬鏈接,即相當于針對原始文件的硬盤存儲位置創建一個指針。原始文件刪除,還是可以讀取。
\# echo “welcome to linuxprobe.com” > readme.txt (創建readme.txt)
\# ln readme.txt readit.txt (創建硬鏈接readit.txt)
\# cat readme.txt (查看readme.txt內容)
\# cat readit.txt (查看readit.txt內容)
\# ls -l readme.txt (這個結果可以看到硬盤鏈接數量增加到了2)
\# rm -f readme.txt (刪除掉原始文件readme.txt)
\# cat readit.txt (硬鏈接readit.txt還可以看到)
- 常用的RPM軟件包命令
- 常見的Yum命令
- Linux開機過程
- Systemd初始化進程服務的劣勢:
- system 與 system V init 的區別以及作用
- systemctl管理服務的啟動、重啟、停止、重載、查看狀態等常用命令
- systemctl設置服務開機啟動、不啟動、查看各級別下服務啟動狀態等常用命令
- 主流 Linux 系統選擇 Bash 解釋器作為命令行終端主要有以下 4 項優勢
- 常見執行Linux命令的格式:
- man命令中常用按鍵以及用途
- man命令幫助信息的接個歐以及意義
- 常用系統命令(10)
- 系統狀態檢測命令(8)
- 工作目錄切換命令(3)
- 文本文件編輯命令(9)
- 文件目錄管理命令(7)
- 打包壓縮與搜索命令(3)
- 輸入輸出重定向
- 管道命令符
- 命令行的通配符
- 常用的轉義字符
- 重要的環境變量
- Vim文本編輯器
- 編寫Shell腳本
- 流程控制語句
- 計劃任務服務程序
- 用戶身份與文件權限
- 文件權限與歸屬
- 文件的隱藏屬性
- 文件訪問控制列表
- su命令與sudo服務
- 存儲結構與磁盤劃分
- 使用RAID與LVM磁盤陣列技術
- iptables與firewalld防火墻
- 使用SSH服務管理遠程主機