Linux及文件系統基本介紹
1 互聯網行業現狀
在服務器端市場:
-
- 超級計算機
-
- 2014年11月的數據顯示前500系統中的485個系統都在運行着 Linux 的發布系統,而僅僅只有一台運行着 Windows 系統
- 截止到目前,運行 Linux 系統的處理器有 22,851,693 個之多,而 windows 系統僅僅只有 30,720
-
- 雲計算
-
2014年 Linux 基金會撰寫了一個報告,研究發現 75% 的大公司在使用 Linux 系統作為他們的主要平台,相對的使用 Windows 系統的只占 23%
移動端市場:
基於Linux的Android系統,在2014年第三季度的智能手機出貨量中,Andriod 設備的市場份額從去年同期的 81.4% 上升到了 83.6%
嵌入式系統:
自2013 年的研究數字表明,按規划,大約一半的嵌入式系統將會采用 Linux。目前也誕生了越來越多的基於Linux的智能硬件設備,例如:智能路由器。
由於本系列的文章主要是對互聯網的軟件開發和測試進行介紹,按照目前的行業趨勢,Linux系統已經成為互聯網行業的最主要的生產力平台了,相關從業人員完全有必要對Linux系統進行學習和了解。
2 典型的計算機系統
一個典型的計算機系統由軟件和硬件兩部分構成。
其中硬件系統由如下幾部分構成:
- 中央處理器
- 存儲器
- 外部輸入輸出(IO)設備
各部分的組成部分如下下圖:

計算機的軟件則是硬件之上的運行程序和相應的文檔。
操作系統則是運行在計算機硬件之上的最基礎的軟件系統,常見的系統有:
-
- PC端
-
- Windows
- Linux
- Mac OS
- 其它
-
- 移動端
-
- iOS
- Android
- Windows Phone
- 其它
在如今移動設備已經如此普及的年代,相信大家已經能夠認識到操作系統其實不僅僅只是Windows了,而是基於一定的原理能夠百花齊放的基礎軟件系統。
3 Linux基本介紹
正如前面提及,一個基本的計算機系統由“硬件”和“軟件”組成,一台Linux設備,主要的組成如下圖所示:

一般情況下,我們所說的Linux系統,特指中間內核級的部分,我們看到的Linux的桌面Desktop,例如:KDE,GNOME都只是普通的應用程序而已。Linux的核心在於其內核,內核是應用程序和硬件程序聯系的紐帶。
Linux的人機交互方式有兩種:
- 圖形交互界面
- 命令行交互接口(CLI)
圖形界面,從Windows下轉過來的用戶應該不陌生,但是圖形界面不是Linux的精髓,作為一個高級的計算機工作者,應該能夠透過現象看本質,所有的計算軟件的本質其實都是數據的處理和流通。Desktop不是Linux,所以后面將逐漸脫離Desktop,而轉向對Linux進行學習和研究。
4 Linux兩種交互方式
以查看Linux的根文件系統下的文件為例子,來對比兩種交互方式的不同。
在Desktop下面,打開文件管理圖形應用程序:

在CLI下面輸入ls命令:
➜ / ls bin deepinhost etc initrd.img.old lost+found opt run sys var boot dev home lib media proc sbin tmp vmlinuz cxassoc disk initrd.img lib64 mnt root srv usr vmlinuz.old
在圖形界面上通過不同的視圖或者屬性可以查看到更多的文件目錄和信息,同樣在CLI界面上可以輸入不同的命令參數,得到相應的文件目錄的文本描述信息。
同樣的,Linux的其它常用系統管理工具,如:
- 磁盤管理
- 網絡管理
- 進程管理
- 軟件管理
都有對應的桌面程序和CLI程序來提供管理,后續會詳細展開,在此不一一贅述。總之,從承載的信息上來看,兩種交互基本上是等價的,甚至嚴格來說CLI可以提供的操作甚至多於圖形用戶界面。因為圖形用戶界面可以說是一種更高層的應用,是對CLI功能的進一步封裝的圖形表現方式而已。
如果作為普通的桌面級消費用戶來說,掌握圖形交互和圖形界面應用即可,但是對於Linux的開發人員來說,則一定要熟練掌握CLI命令來完成對系統的各種操作和調用。
5 文件目錄及系統
和Windows完全不同,Linux下面的所有目錄都來自於 "/" 目錄,沒有將硬盤分區成C、D、E盤。Linux下所有的文件系統都衍生於同一個根節點,所有的磁盤必須掛載在文件系統相應的目錄下面。

不管是Windows還是Linux,都有如下流程:
-
新購置的物理硬盤,必須要分區,不管是分一個區還是多個區。這個分區實際上是對磁盤的分區表進行數據定入,和啟動位置有關
-
- 分區的硬盤必須要格式化相應的文件系統
-
- Windows系統一般是NTFS文件系統
- Linux系統一般是EXT4文件系統
-
- 被格式化的磁盤必須要掛載到操作系統相應的文件目錄下
-
- Windows相當於在C/D/E盤之上還有一個根目錄,但是顯然它實際上沒有按照這種觀念來普及此系統。Windows系統自動幫用戶完成了掛載分區到目錄的工作,即自動將磁盤分區掛載到C/D/E盤的“目錄”
- Linux則除了會自動掛載根分區啟動項外,別的需要用戶自己配置。
在Linux系統中,信息的基本組織單位稱作文件。對於物理設備,Linux也通過文件系統來提供了簡化的訪問方式,用戶可以使用同樣的命令處理普通文件和物理設備。
6 標准文件結構
在根目錄下,列出Linux的主要目錄:
➜ / ll 總用量 104K drwxr-xr-x 2 root root 4.0K 9月 18 10:33 bin drwxr-xr-x 3 root root 4.0K 9月 7 15:31 boot drwxr-xr-x 17 root root 4.3K 9月 18 21:18 dev drwxr-xr-x 3 root root 4.0K 9月 7 16:02 disk drwxr-xr-x 141 root root 12K 9月 18 21:18 etc drwxr-xr-x 4 root root 4.0K 8月 31 12:01 home drwxr-xr-x 22 root root 4.0K 9月 7 18:01 lib drwxr-xr-x 4 root root 4.0K 9月 11 21:01 media drwxr-xr-x 5 root root 4.0K 8月 31 17:59 mnt drwxr-xr-x 8 root root 4.0K 8月 31 09:35 opt dr-xr-xr-x 211 root root 0 9月 19 2015 proc drwx------ 16 root root 4.0K 9月 18 17:30 root drwxr-xr-x 22 root root 720 9月 18 21:18 run drwxr-xr-x 2 root root 12K 9月 7 18:01 sbin drwxr-xr-x 2 root root 4.0K 4月 28 00:05 srv dr-xr-xr-x 13 root root 0 9月 19 2015 sys drwxrwxrwt 8 root root 4.0K 9月 18 22:05 tmp drwxr-xr-x 10 root root 4.0K 4月 28 00:19 usr drwxr-xr-x 13 root root 4.0K 8月 31 17:15 var ……
關於根目錄下的文件描述,Linux是有一套標准可以進行參考:FHS(Filesystem Hierarchy Standard)。
本文只對主要的目錄的功能介紹。
- boot目錄
- 包含系統引導程序,Linux內核程序文件vmlinuz,磁盤內存映像文件initrd以及GRUB初始化引導程序和配置文件
除了boot目錄,系統啟動必須的5個目錄:
-
- dev
-
系統設備目錄。在Linux系統下,任何設備都對應着一個或多個設備文件,例如磁盤對應着 /dev/sd*文件
-
- etc
-
Linux系統運行的配置文本文件
-
- lib
-
該目錄含有系統引導過程,及運行系統命令所需要挾內核模塊和各種動態鏈接共享庫文件
-
- sbin
-
超級用戶組使用的系統命令
-
- bin
-
系統管理員和普通用戶共享的各種通用命令程序
記憶方法
目錄簡稱拼接:delsb,刪除SB,誰刪除這其中的目錄了,誰就是那啥啥了 ^_^
其它主要會經常碰到的目錄:
-
- home
-
用戶主目錄的根目錄,每增加一個新用戶,系統都會在此目錄下面增加一個和用戶名相同的目錄,存儲用戶相關的配置及數據
-
- media
-
移動存儲介質的安裝點
-
- mnt
-
文件系統的臨時掛載點
-
- opt
-
應用程序等附加軟件的安裝目錄
-
- var
-
存儲各種可變長的數據文件,如日志文件等等
-
- usr
-
Unix Soft Resource 存儲系統提供的各種共享數據(用戶命令、庫函數、頭文件和文檔等)
-
- root
-
超級管理員的主目錄
-
- tmp
-
臨時文件目錄,系統重啟后會自動清空
-
- proc
-
進程文件系統的根目錄,是一個虛擬文件系統,通過對此目錄的文件讀取可以獲取系統運行態的很多信息:如CPU、內存、運行時間等等
關於根目錄下的其它目錄及其子目錄的詳細介紹及目錄之間的區別,請參考linux官網關於 FHS 的最新更新(基本上每年都會有更新)。
7 文件描述及權限
在Linux下面對文件的操作有個很重要的概念,就是:文件權限。很多初學者認為Linux不好用,基本上很大的原因就是止步於這個地方就沒有深入研究下去。因為對於任何一個系統來講,文件數據的各種操作肯定是很高頻的交互,在Linux系統下,如果不了解文件系統的權限概念,那么在對文件數據進行操作的時候,必然會遇到各種阻礙,然后不得已而放棄了Linux的繼續研究。
在圖形界面下,文件的權限是通過在文件圖標是否上鎖(或者X號等)來進行形象可視化,在CLI界面,則是通過特殊的文本標記來顯示:
➜ / ll |grep bin drwxr-xr-x 2 root root 4.0K 9月 25 14:56 bin drwxr-xr-x 2 root root 12K 9月 25 14:55 sbin
如上對目錄及文件的描述一共7段:
- permissions:文件的詳細信息,主要是權限信息/類型信息
- link:文件硬鏈接數或目錄子目錄數
- user:文件所屬用戶
- group:文件所屬組
- size:文件大小
- time:文件創建時間
- file:文件名稱
記憶方法
七段的英文簡稱連寫為:
PLUGSTF
參考記憶:插入TF卡
- PLUGS:插頭
- TF:目前手機上使用的小型SD擴展卡
PLUG 部分是重要的權限組成部分,在Linux下進行操作,最最重要的基礎概念就是文件的權限概念,如果這個沒弄清楚,則會經常遇到各種阻礙。
7.1 文件類型及權限
典型的文字文件權限描述字符如下所示:
drwxr-xr-x
一共10位,按照功能對位進行划分,總共可以分為4個功能段,如下表所示:
類型 | 用戶權限 | 組權限 | 其它權限 |
---|---|---|---|
1 | 3 | 3 | 3 |
d | rwx | r-x | r-x |
第一段表示文件的類型:
-
d: directory,表示目錄
-
-: 短橫線“空”表示普通文件,例如:文本文件,二進制文件
-
l: link,表示鏈接文件,例如:快捷方式
-
b: block,表示塊狀設備,例如:磁盤
-
c: character,表示字符特殊文件,例如:控制台終端/打印機等等
-
p: pipe,管理文件
-
- 其它類型
-
一般對於應用層開發人員,最多接觸的就是目錄和普通文件兩種,其它有興趣的可以去具體的查閱相應的資料。
純粹的文件操作權限的描述有三類:
- r 可讀
- w 可寫
- x 可執行
對文件操作的使用者身份划分成三類:
- U User 直接從屬用戶
- G Group 文件所屬組
- O Other 不屬於上面兩樣的其它用戶
文件權限的三段,對應着不同的使用者身份對此文件的不同權限,任何身份的用戶不能夠對文件做超過其權限的事情。
特別注意,在Linux系統下:
- 不是通過擴展名來判定程序的類型的
- 不是通過 .exe 來判定程序是否可執行,而是通過 x 屬性表明此文件可以被執行
- 和文件不同,目錄的 x 屬性表示可以將工作路徑切換到目錄里面
權限相關的9位,分別通過是1或者0來表示是不具有相應的權限,所以會產生如下的一些常見的數字值來表示文件的權限(使用一個小於8的整數來表示3個bit位的狀態值):
-
- 777
-
111 111 111 表示對於U,G,O都是讀/寫/可執行全開發權限
-
- 666
-
110 110 110 表示對於U,G,O都是可讀寫但是不可執行
-
- 644
-
110 100 100 表示對於U是可讀寫,對於U和O則是只讀的
所以如果要將某個文件修改為對所有的用戶/組/其它都是可讀寫及執行的權限,可以執行如下命令:
chmod 777 xxx_file
或者使用一種主義化的方式來添加權限:
chmod a+rwx xxx_file
關於文件的權限及操作者身份限定,CLI里面提供了豐富的命令行工具,基本上用戶可以通過這些命令完成所有對文件系統所需要的操作。具體的命令及操作,可以查閱相應的書藉和文檔,多加練習,熟練操作即可。
7.2 其它描述信息
- 文件大小
- 創建時間
- 文件名稱
這些信息的用途正如其名稱一樣直觀和明確,在此不再贅述。
8 文件和目錄的基本操作
對文件和目錄的基本操作包括但不限於:
- 目錄創建和刪除
- 文件創建/修改/刪除
- 文件或目錄的移動
- 文件或目錄名稱修改
- 文件查找
等等,這些工具類的使用及熟練,屬於比較低級的知識階段,了解前面的理論框架后,只需要不斷重復的操作練習即可,使之成為不經過大腦就可以快速操作的基本本領。
這些命令行,在相應的Linux介紹書藉,或者網絡技術文章里面到處都是,在此也略去不表。
9 小結
本文的目標是以最小的篇幅,盡快的給Linux初學者建立整體的Linux的認識,具體各部分的延伸細節和工具的介紹,本文篇幅有限,就都不做詳細的介紹。那些碎片化的信息,有低門檻的獲取途徑(通過網絡搜索引擎),和低門檻的加強學習方式(不斷練習,熟能生巧),都不是本文的重點,本文及后續的系列文章,主要是在假定從業人員有了一定的Linux操作基礎的情況下,而展開的Linux的應用領域的技能。
最后重申一句話: 工具很重要,但是不是目的,對於工具,最好的估計就是“有空時不斷的加強練習,熟練操作”,使之成為不經大腦的習慣,然后自己有更多的時間和更高效的方式去解決高層次的問題。
作者: | Harmo哈莫 |
---|---|
作者介紹: | https://zhengwh.github.io |
技術博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
時間: | 2015-09-18 |
版權說明: | 未經許可,嚴禁用於商業目的的非法傳播 |
聯系或打賞: | http://zhengwh.github.io/contact-donate.html |