• 當前位置: 主頁 > Linux安裝教程 > 系統設置 >

    用了這么久 Linux,才知道這些概念

    時間:2022-03-07 11:51來源:網絡整理 作者:Linux先生 舉報 點擊:
    湖南成人高考 成人高考 成人高考 成人高考  成人高考 成人高考 
    但是,FHS 僅僅定義了兩層規范,第一層是 / 下面的各個目錄要放什么文件數據,比如 /etc 下面需要放設置文件, /bin 和 /sbin 下面需要放可執行文件等;第二層

    我們大家應該知道,Linux 和 UNIX 中的文件系統是一個以 / 為根的樹狀式文件結構,/ 是 Linux 和 UNIX 中的根目錄,同樣它也是文件系統的起點。所有的文件和目錄都位于 / 路徑下,包括我們經常聽到的 /usr、/etc、/bin、/home 等。在早期的 UNIX 系統中,各個廠家都定義了自己文件系統的命名構成,比較混亂,而且難以區分。

    為了避免在 Linux 系統上也出現這種 命名混亂的問題,在 1994 年推出了 FSSTND(FileSystem Standard) 的 Linux 文件系統層次結構標準,后來 UNIX 團隊把 FSSTND 發揚光大,成為了后來的 FHS(FileSystem Hierarchy Standard) 。

    FHS 標準使得眾多的 Linux distributions(Linux 發行版) 有了統一的文件系統命名標準,換一種說法:FHS 就是一種文件系統的命名標準。一般來說,Linux distributions 都需要遵循 FHS 規定的

    目錄結構和目錄內容

    文件類型的權限

    但是,FHS 僅僅定義了兩層規范,第一層是 / 下面的各個目錄要放什么文件數據,比如 /etc 下面需要放設置文件, /bin 和 /sbin 下面需要放可執行文件等;第二層是針對 /usr 和 /var 這兩個目錄來定義的,比如 /usr/share 需要放共享數據, /var/log 需要放系統登錄文件等。

    下面我就來為你介紹一下 Linux 在 / 下都有哪些定義和規范。

    FHS 規范

    我下面介紹的這些規范,只是 FHS 文檔指定的目錄和文件的一部分,完整的標準可在 在線獲得。

    首先先來介紹一下根目錄的重要性和意義:

    根目錄是整個系統中最重要的一個目錄,后續的目錄都是以根目錄為基礎進行衍生,更重要的一點, 根目錄與開機、還原、系統修復有關,由于系統開機需要特定的環境,所以系統出現錯誤時,根目錄也必須要包含有能夠修復文件系統的程序才行。所以 FHS 規定不要將根目錄的分區大小設置的過大,實際上是越小越好,以減少出錯率。

    FHS 同樣規定了根目錄下面應該要有這些目錄的存在。

    /home 目錄

    /home 目錄是系統默認的使用者主文件夾(home directory)。

    /boot 目錄

    /boot 目錄包含啟動操作系統所需的靜態文件,比如 Linux 內核,這些文件對系統的啟動至關重要。 Linux Kernel 常用的文件名為 vmlinuz , 但是如果你使用的是 grub2 這個開機程序,還會存在 /boot/grub2 這個目錄。

    我剛剛搭建完成的 Linux ,boot 下面是這樣的。

    千萬不要刪除 /boot 目錄,這樣做可能會導致系統無法啟動。

    /dev 目錄

    /dev 目錄都是一些設備節點,這些設備節點是 Linux 系統中的設備或者是內核提供的虛擬設備。這些設備節點同樣也對系統正常運行至關重要。/dev 目錄和子目錄下的設備是字符設備和塊設備。字符設備就是 鼠標、鍵盤、調制解調器,塊設備就是 硬盤、軟盤驅動器。存儲 /dev 目錄下的文件就相當于是存儲某個設備。

    比較重要的文件有

    /dev/hda :主 IDE 通道上的主設備,當提到 IDE/ATA 硬盤時,主通道是第一和第二驅動器連接到主板或接口卡的通道。

    /dev/hdb :主 IDE 通道上的從設備。

    /dev/tty0 :第一個虛擬控制臺。虛擬控制臺又被稱為 VC,也稱為虛擬終端 VT,是用于計算機用戶界面的鍵盤和顯示器的概念組合。

    /dev/tty1 :第二個虛擬控制臺。

    /dev/sda :主 SCSI 和 SATA 通道上的第一個設備。

    /dev/lp0 :第一個并行端口。

    下面是我 Linux 下面的目錄。

    /etc 目錄

    /etc 目錄是為計算機本地的配置文件保留的,系統主要的配置文件都放在這個目錄下,比如賬號密碼,服務的啟停,一般來說,這個目錄下面一般用戶只有讀權限,只有 root 用戶具有修改權限(關于權限的問題,可以閱讀筆者的上一篇文章 看完這篇 Linux 權限,通透了! )

    /etc 下比較重要的幾個文件有

    /etc/modprobe.d 內核驅動模塊

    /etc/passwd 存儲用戶密碼

    /etc/fstab 存儲掛載信息

    /etc/issue 存儲系統啟動顯示的內容

    /etc 目錄下不要存放二進制文件,二進制文件最好放在 /sbin 和 /bin 中。

    /etc 目錄下有兩個重要的文件, /etc/x11 用于存放 X Window 系統配置文件,例如 xorg.conf, /etc/opt 這個主要存放第三方協力軟件 /opt 的相關配置文件。

    /lib 目錄

    系統的函數庫有很多,而 /lib 目錄就像一個倉庫,它用于存放執行 /bin 和 /sbin 中二進制文件所需要的庫,這些共享庫映像對于系統 boot 和執行根文件系統中的命令特別重要。

    /media 目錄

    media 媒體的英文,也就是說 /media 下可以存放用于可移動媒體(例如 USB、DVD、CD-ROM 和 Zip 磁盤)的安裝點和子目錄。

    /mnt 目錄

    如果你想要暫時掛載某些額外的設備,你可以放在 /mnt 這個目錄下,其實最早的時候,/mnt 用途和 /media 一樣,只是后來有了 /media 之后,這個目錄就被用來臨時掛載了。

    /opt 目錄

    /opt/ 目錄為大多數應用程序軟件包提供存儲空間,將文件放置在 /opt/ 目錄中的包會創建一個與包同名的目錄。反過來,該目錄保存了原本會分散在整個文件系統中的文件,從而為系統管理員提供了一種簡單的方法來確定特定包中每個文件的角色。

    例如,如果 sample 是位于 /opt/ 目錄中的特定軟件包的名稱,那么所有文件都放置在 /opt/sample/ 目錄中的目錄中,例如 /opt/sample/bin/ 表示二進制文件 和 /opt/sample/man/ 用于手冊頁。

    /proc 目錄

    /proc 目錄本身是一個 虛擬文件系統(virtual filesystem),他放置的數據是在內存中,比如系統核心信息,行程信息,周邊設備網絡狀態等。因為這個目錄下的數據都是在內存中的,所以本身不占用磁盤空間。

    這個目錄下比較重要的文件有 /proc/cpuinfo 、 /proc/dma 、 /proc/interrupts 、 /proc/net/ 。

    /sbin 目錄

    /sbin 目錄存儲 root 用戶使用的可執行文件。/sbin 中的可執行文件在啟動時使用,用于系統管理和執行系統恢復操作。除了 /bin 中的二進制之外,/sbin 還包含啟動、恢復和修復系統所需要的二進制文件。

    /sbin 目錄下包含 arp、clock、halt、init、grub、ifconfig、route、shutdown 等。

    /tmp 目錄

    這個目錄下面存放的都是一些臨時文件,這些文件在系統重新啟動時被清除。

    /sys 目錄

    這個目錄其實和 /proc 非常類似,也是一個虛擬文件系統,主要是記錄核心與系統硬件相關信息。這個目錄同樣也不占用磁盤空間。

    /usr 目錄

    /usr 目錄是需要好好聊聊的一個目錄了,很多讀者都誤以為 /usr 是 user 的縮寫,其實 usr 是 Unix Software Resource 的縮寫,FHS 建議軟件開發者應該將數據合理的放置在這個目錄的次目錄下,不要自己創建軟件獨立的目錄。

    所有系統默認的軟件都會放在 /usr 下面,因此這個目錄有點類似 Windows 中的 C:\Windows\ + C:\Program files\ 這兩個目錄的綜合,一般來說,系統剛安裝完畢后,這個目錄會占用較多的磁盤容量,/usr 的次目錄建議有下面這些內容

    */usr/bin/*一般用戶能夠使用的指令都放在這個目錄下,CentOS 7 開始,/usr/bin 下指令和 /bin 目錄下指令一毛一樣。

    */usr/lib/*基本上,與 /lib 功能相同,所以 /lib 就是鏈接到這個目錄中的。

    /usr/local 系統管理員在在本機下載的軟件都建議安裝到這個目錄下,便于管理。

    /usr/sbin 非系統正常運行所需要的系統指令,最常見的就是某些網絡服務器軟件的服務指令,不過基本功能與 /sbin 差不多,因此目前 /sbin 就是鏈接到此目錄中的。

    /usr/share 共享文件放置區,這個目錄下還有這些次目錄 /usr/share/man ,/usr/share/doc,/usr/share/zoneinfo

    /usr/games 與游戲相關的數據放置處

    /usr/include C/C++ 等程序語言的 header 和 include 放置處,也是直接鏈接的。

    /usr/src 一般源碼建議放在這,src 是 source 的意思,至于核心源碼則建議放在 /usr/src/linux 目錄下。

    /run 目錄

    早期的 FHS 規定系統開機后所產生的各項信息應該要放置到 /var/run 目錄下,新版的 FHS 則規范到 /run 下面。

    /var 目錄

    如果說 /usr 是安裝時會占用較大磁盤容量的目錄,那么 /var 就是在系統運行后才會漸漸占用磁盤容量的目錄。/var 主要包括高速緩存、登錄文件以及某些軟件運行所產生的的目錄,包括程序文件,例如 MySQL 數據庫文件等,常見的目錄有

    /var/cache 應用程序緩存目錄

    /var/crash 系統錯誤信息

    /var/log 日志記錄

    /var/run 進程的標識數據

    /var/tmp 臨時文件目錄

    /var/lock 文件鎖定記錄

    /srv 目錄

    srv 可以看做 service 的縮寫,是一些網絡服務啟動之后,這些服務所需要取用的數據目錄,常見的服務例如 WWW, FTP 。

    CentOS 7 在目錄的編排上與過去的版本不同,上面已經大致描述過了,這里做個匯總,比較大的差異就是將許多原本應該在根目錄里面的目錄,將全部數據挪到了 /usr 里面去,然后進行鏈接設置,這些內容包括

    /bin -> /usr/bin

    /sbin -> /usr/sbin

    /lib -> /usr/lib

    /lib64 -> /usr/lib64

    /var/lock -> /run/lock

    /var/run -> /run

    為了方便大家直觀的看到這些目錄都是做什么的,我手繪了一個圖,圖中的這些目錄之間的關系很像一棵樹,所以這個目錄又叫做目錄樹。

    這個目錄樹已經很清晰了,就沒什么可說的了。

    絕對路徑和相對路徑

    和其他系統一樣,Linux 中的路徑也分為絕對路徑(absolute)和相對路徑(relative),這兩種的寫法依據如下:

    由根目錄開始的路徑都是絕對路徑,比如上圖目錄樹中的 /boot、/usr/local 等

    相對于當前文件路徑的寫法是相對路徑,比如 ../var/log 目錄

    這里需要注意一點,相對路徑是以你 當前所在路徑的相對位置來移動的,比如你當前在 /boot 這個目錄下,你想要移動到 /usr/src 這個目錄

    絕對路徑表示法:/usr/src

    相對路徑表示法:../usr/src

    這里還需要注意兩個特殊的目錄:

    . :代表當前目錄,也可以使用 ./ 來表示

    .. :代表上一層目錄,也可以用 ../ 來表示

    關于絕對路徑和相對路徑的取舍問題:當文件路徑很長時,推薦使用相對路徑,因為你不用向絕對路徑一樣,把所有的路徑都寫一遍,而直接使用 ../ 即可;

    但是從文件路徑的正確性來說,絕對路徑要比相對路徑要好。

    如果你是在寫程序來管理系統,務必使用絕對路徑,因為絕對路徑不管你的文件路徑在哪,都會找到指定的文件;而相對路徑如果文件移動后,就可能會存在找不到文件的情況。

    與目錄有關的指令

    下面我們就來聊一聊和目錄相關的幾條指令

    cd

    cd 就是 change directory 的縮寫,這條指令能夠切換當前工作目錄,有下面四種切換方式

    cd /路徑名 # 表示切換到指定的工作目錄

    cd ./ # 表示切換到當前工作目錄(無任何切換)

    cd .. # 表示切換到當前工作目錄的上一層目錄

    cd ~ # 表示返回到當前用戶目錄

    下面我們來演示一下這四個 cd 切換方式的操作

    可以看到,我們分別使用 cd /usr/local 切換到了指令目錄下;使用 cd ./ 沒有切換任何目錄(白浪費了兩秒鐘);使用 cd .. 切換到了當前工作目錄的上一級;使用 cd ~ 切換到了當前登錄用戶的默認工作目錄。

    這里需要注意的就是 cd ~ ,如果你直接使用 cd ,切換效果和 cd ~ 一樣,也就是說 "cd ~ == cd "。

    pwd

    上面還有一條指令是 pwd ,這個指令是我們最常用的指令,它的使用頻率幾乎和 cd 一樣,因為一條 cd 指令往往后面跟著一條 pwd 指令,所以你可以看出 pwd 指令有多么重要了吧。

    pwd 是 Print Working Directory 的縮寫,它是打印出當前所在目錄的指令。

    但是 pwd 不一定只用于顯示當前工作路徑,它還可以用來顯示指定工作目錄下的文件路徑

    不過這個指令好像沒什么用,因為我們已經知道工作目錄下的路徑了,還打印出來做什么呢?

    mkdir

    mkdir 用于創建新目錄,它是 make directory 的縮寫,一般來說,它后面會跟著兩個參數。

    -m :設置文件的權限,直接設置,不用考慮默認文件的創建權限

    -p :遞歸創建目錄

    下面是使用 mkdir 創建文件目錄的操作

    如上圖所示,我們在 /tmp 文件目錄下創建了一個叫做 test1 的空目錄,并打印出了當前的工作目錄。

    如果你想要創建不想讓其他用戶訪問的目錄,你可以使用下面的命令

    mkdir -m 711 test2

    上圖中的 ls -ld 列出文件目錄的詳細信息,可以看到,詳細信息最前面的是文件的權限。

    一個一個創建目錄太麻煩了,現在我們想要快速創建這些目錄,比如我們想要創建 /test1/test2/test3/test4 這種目錄格式,我們使用了下面代碼

    Linux 會提出我們不能使用這種創建方式。

    此時就需要 -p 這個參數的出現了,這個參數能夠允許我們遞歸創建目錄,如下所示

    只不過使用 -p 這種方式并不推薦使用,因為很容易打錯字。。。

    rmdir

    rmdir 用于刪除空目錄,它的使用和 mkdir 非常類似,mkdir -p 用于遞歸創建目錄,同樣的,rmdir -p 也能夠遞歸刪除目錄。如下圖所示

    這里需要注意,rmdir 只是刪除空目錄,這也意味著目錄里面有內容的話是無法刪除的,那該如何刪除呢?可以直接使用 rm -r 來進行刪除。

    mv

    使用 mv 能夠修改目錄的名稱,比如我們創建了一個叫做 test 的目錄,后來我們覺得這個目錄無法體現出來它的所有者,我們想要改一下它的名字,這時候就可以使用 mv 指令就可以修改。

    在了解完基本的目錄操作之后,下面來想一個問題,為什么我們能夠在各種目錄下執行 ls 指令都能夠顯示內容?按理說 ls 不應該只是在其存放路徑下才能夠使用嗎?

    首先大家需要先了解一個 PATH 的概念,PATH 是 環境變量,當我們在執行一條指令的時候,首先系統會按照 PATH 的設置去每個 PATH 下搜尋文件名為 ls 的可執行文件,如果有多個可執行文件,那么優先搜索到的先被執行。

    哈哈哈,去年這些網站"崩了"!

    從零到阿里的三年

    中美教育對比

    原來這才是動態代理。!

    原來這才是 Socket!

    "我的"職業規劃

    手撕匯編。。。

    返回搜狐,查看更多

    推薦內容
  • 亚洲免费播放视频观看_久久综合给合久久狠狠狠97色69_亚洲中文无码av永不收费_暧暧视频 免费观看