## 6.5 指令與文件的搜尋
文件的搜尋可就厲害了!因為我們常常需要知道那個文件放在哪里,才能夠對該文件進行一些修改或維護等動作。 有些時候某些軟件配置文件的文件名是不變的,但是各 distribution 放置的目錄則不同。 此時就得要利用一些搜尋指令將該配置文件的完整文件名捉出來,這樣才能修改嘛!您說是吧!^_^
### 6.5.1 指令文件名的搜尋
我們知道在終端機模式當中,連續輸入兩次[tab]按鍵就能夠知道使用者有多少指令可以下達。 那你知不知道這些指令的完整文件名放在哪里?舉例來說,ls 這個常用的指令放在哪里呢? 就通過 which 或 type 來找尋吧!
* which (尋找“可執行文件”)
```
[root@study ~]# which [-a] command
選項或參數:
-a :將所有由 PATH 目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
范例一:搜尋 ifconfig 這個指令的完整文件名
[root@study ~]# which ifconfig
/sbin/ifconfig
范例二:用 which 去找出 which 的文件名為何?
[root@study ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/bin/alias
/usr/bin/which
# 竟然會有兩個 which ,其中一個是 alias 這玩意兒呢!那是啥?
# 那就是所謂的“命令別名”,意思是輸入 which 會等于后面接的那串指令啦!
# 更多的數據我們會在 bash 章節中再來談的!
范例三:請找出 history 這個指令的完整文件名
[root@study ~]# which history
/usr/bin/which: no history in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:
/usr/sbin:/usr/bin:/root/bin)
[root@study ~]# history --help
-bash: history: --: invalid option
history: usage: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg
# 瞎密?怎么可能沒有 history ,我明明就能夠用 root 執行 history 的啊!
```
這個指令是根據“[PATH](../Text/index.html#dir_path)”這個環境變量所規范的路徑,去搜尋“可執行文件”的文件名~ 所以,重點是找出“可執行文件”而已!且 which 后面接的是“完整文件名”喔!若加上 -a 選項,則可以列出所有的可以找到的同名可執行文件,而非僅顯示第一個而已!
最后一個范例最有趣,怎么 history 這個常用的指令竟然找不到啊!為什么呢?這是因為 history 是“bash 內置的指令”啦! 但是 which 默認是找 PATH 內所規范的目錄,所以當然一定找不到的啊(有 bash 就有 history!)!那怎辦?沒關系!我們可以通過 type 這個指令喔! 關于 type 的用法我們將在 [第十章的 bash](../Text/index.html#bash_type) 再來談!
### 6.5.2 文件文件名的搜尋
再來談一談怎么搜尋文件吧!在 Linux 下面也有相當優異的搜尋指令呦!通常 find 不很常用的!因為速度慢之外, 也很操硬盤!一般我們都是先使用 whereis 或者是 locate 來檢查,如果真的找不到了,才以 find 來搜尋呦! 為什么呢?因為 whereis 只找系統中某些特定目錄下面的文件而已,locate 則是利用數據庫來搜尋文件名,當然兩者就相當的快速, 并且沒有實際的搜尋硬盤內的文件系統狀態,比較省時間啦!
* whereis (由一些特定的目錄中尋找文件文件名)
```
[root@study ~]# whereis [-bmsu] 文件或目錄名
選項與參數:
-l :可以列出 whereis 會去查詢的幾個主要目錄而已
-b :只找 binary 格式的文件
-m :只找在說明文檔 manual 路徑下的文件
-s :只找 source 來源文件
-u :搜尋不在上述三個項目當中的其他特殊文件
范例一:請找出 ifconfig 這個文件名
[root@study ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
范例二:只找出跟 passwd 有關的“說明文檔”文件名(man page)
[root@study ~]# whereis passwd # 全部的文件名通通列出來!
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
[root@study ~]# whereis -m passwd # 只有在 man 里面的文件名才抓出來!
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
```
等一下我們會提到 find 這個搜尋指令, find 是很強大的搜尋指令,但時間花用的很大!(因為 find 是直接搜尋硬盤,為如果你的硬盤比較老舊的話,嘿嘿!有的等!) 這個時候 whereis 就相當的好用了!另外, whereis 可以加入選項來找尋相關的數據,例如,如果你是要找可可執行文件 (binary) 那么加上 -b 就可以啦! 如果不加任何選項的話,那么就將所有的數據列出來啰!
那么 whereis 到底是使用什么咚咚呢?為何搜尋的速度會比 find 快這么多? 其實那也沒有什么,只是因為 whereis 只找幾個特定的目錄而已~并沒有全系統去查詢之故。所以說,whereis 主要是針對 /bin /sbin 下面的可執行文件, 以及 /usr/share/man 下面的 man page 文件,跟幾個比較特定的目錄來處理而已。所以速度當然快的多!不過,就有某些文件是你找不到的啦! 想要知道 whereis 到底查了多少目錄?可以使用 whereis -l 來確認一下即可!
* locate / updatedb
```
[root@study ~]# locate [-ir] keyword
選項與參數:
-i :忽略大小寫的差異;
-c :不輸出文件名,僅計算找到的文件數量
-l :僅輸出幾行的意思,例如輸出五行則是 -l 5
-S :輸出 locate 所使用的數據庫文件的相關信息,包括該數據庫紀錄的文件/目錄數量等
-r :后面可接正則表達式的顯示方式
范例一:找出系統中所有與 passwd 相關的文件名,且只列出 5 個
[root@study ~]# locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
范例二:列出 locate 查詢所使用的數據庫文件之文件名與各數據數量
[root@study ~]# locate -S
Database /var/lib/mlocate/mlocate.db:
8,086 directories # 總紀錄目錄數
109,605 files # 總紀錄文件數
5,190,295 Bytes in file names
2,349,150 Bytes used to store database
```
這個 locate 的使用更簡單,直接在后面輸入“文件的部分名稱”后,就能夠得到結果。 舉上面的例子來說,我輸入 locate passwd ,那么在完整文件名 (包含路徑名稱) 當中,只要有 passwd 在其中, 就會被顯示出來的!這也是個很方便好用的指令,如果你忘記某個文件的完整文件名時~~
但是,這個東西還是有使用上的限制呦!為什么呢?你會發現使用 locate 來尋找數據的時候特別的快, 這是因為 locate 尋找的數據是由“已創建的數據庫 /var/lib/mlocate/” 里面的數據所搜尋到的,所以不用直接在去硬盤當中存取數據,呵呵!當然是很快速啰!
那么有什么限制呢?就是因為他是經由數據庫來搜尋的,而數據庫的創建默認是在每天執行一次 (每個 distribution 都不同,CentOS 7.x 是每天更新數據庫一次!),所以當你新創建起來的文件, 卻還在數據庫更新之前搜尋該文件,那么 locate 會告訴你“找不到!”呵呵!因為必須要更新數據庫呀!
那能否手動更新數據庫哪?當然可以啊!更新 locate 數據庫的方法非常簡單,直接輸入“ updatedb ”就可以了! updatedb 指令會去讀取 /etc/updatedb.conf 這個配置文件的設置,然后再去硬盤里面進行搜尋文件名的動作, 最后就更新整個數據庫文件啰!因為 updatedb 會去搜尋硬盤,所以當你執行 updatedb 時,可能會等待數分鐘的時間喔!
* updatedb:根據 /etc/updatedb.conf 的設置去搜尋系統硬盤內的文件名,并更新 /var/lib/mlocate 內的數據庫文件;
* locate:依據 /var/lib/mlocate 內的數據庫記載,找出使用者輸入的關鍵字文件名。
* find
```
[root@study ~]# find [PATH] [option] [action]
選項與參數:
1\. 與時間有關的選項:共有 -atime, -ctime 與 -mtime ,以 -mtime 說明
-mtime n :n 為數字,意義為在 n 天之前的“一天之內”被更動過內容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的文件文件名;
-mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的文件文件名。
-newer file :file 為一個存在的文件,列出比 file 還要新的文件文件名
范例一:將過去系統上面 24 小時內有更動過內容 (mtime) 的文件列出
[root@study ~]# find / -mtime 0
# 那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,
# 有變動過內容的文件都會被列出來!那如果是三天前的 24 小時內?
# find / -mtime 3 有變動過的文件都被列出的意思!
范例二:尋找 /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出
[root@study ~]# find /etc -newer /etc/passwd
# -newer 用在分辨兩個文件之間的新舊關系是很有用的!
```
時間參數真是挺有意思的!我們現在知道 atime, ctime 與 mtime 的意義,如果你想要找出一天內被更動過的文件名稱, 可以使用上述范例一的作法。但如果我想要找出“4天內被更動過的文件文件名”呢?那可以使用“ find /var -mtime -4 ”。那如果是“4天前的那一天”就用“ find /var -mtime 4 ”。有沒有加上“+, -”差別很大喔!我們可以用簡單的圖示來說明一下:
圖6.5.1、find 相關的時間參數意義
圖中最右邊為目前的時間,越往左邊則代表越早之前的時間軸啦。由圖 6.5.1 我們可以清楚的知道:
* +4代表大于等于5天前的文件名:ex> find /var -mtime +4
* -4代表小于等于4天內的文件文件名:ex> find /var -mtime -4
* 4則是代表4-5那一天的文件文件名:ex> find /var -mtime 4
非常有趣吧!你可以在 /var/ 目錄下搜尋一下,感受一下輸出文件的差異喔!再來看看其他 find 的用法吧!
```
選項與參數:
2\. 與使用者或群組名稱有關的參數:
-uid n :n 為數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在
/etc/passwd 里面與帳號名稱對應的數字。這方面我們會在第四篇介紹。
-gid n :n 為數字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在
/etc/group,相關的介紹我們會第四篇說明~
-user name :name 為使用者帳號名稱喔!例如 dmtsai
-group name:name 為群組名稱喔,例如 users ;
-nouser :尋找文件的擁有者不存在 /etc/passwd 的人!
-nogroup :尋找文件的擁有群組不存在于 /etc/group 的文件!
當你自行安裝軟件時,很可能該軟件的屬性當中并沒有文件擁有者,
這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
范例三:搜尋 /home 下面屬于 dmtsai 的文件
[root@study ~]# find /home -user dmtsai
# 這個東西也很有用的~當我們要找出任何一個使用者在系統當中的所有文件時,
# 就可以利用這個指令將屬于某個使用者的所有文件都找出來喔!
范例四:搜尋系統中不屬于任何人的文件
[root@study ~]# find / -nouser
# 通過這個指令,可以輕易的就找出那些不太正常的文件。如果有找到不屬于系統任何人的文件時,
# 不要太緊張,那有時候是正常的~尤其是你曾經以源代碼自行編譯軟件時。
```
如果你想要找出某個使用者在系統下面創建了啥咚咚,使用上述的選項與參數,就能夠找出來啦! 至于那個 -nouser 或 -nogroup 的選項功能中,除了你自行由網絡上面下載文件時會發生之外, 如果你將系統里面某個帳號刪除了,但是該帳號已經在系統內創建很多文件時,就可能會發生無主孤魂的文件存在! 此時你就得使用這個 -nouser 來找出該類型的文件啰!
```
選項與參數:
3\. 與文件權限及名稱有關的參數:
-name filename:搜尋文件名稱為 filename 的文件;
-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的文件。這個 SIZE 的規格有:
c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB
還要大的文件,就是“ -size +50k ”
-type TYPE :搜尋文件的類型為 TYPE 的,類型主要有:一般正規文件 (f), 設備文件 (b, c),
目錄 (d), 鏈接文件 (l), socket (s), 及 FIFO (p) 等屬性。
-perm mode :搜尋文件權限“剛好等于” mode 的文件,這個 mode 為類似 chmod
的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !
-perm -mode :搜尋文件權限“必須要全部囊括 mode 的權限”的文件,舉例來說,
我們要搜尋 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
當一個文件的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,
因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。
-perm /mode :搜尋文件權限“包含任一 mode 的權限”的文件,舉例來說,我們搜尋
-rwxr-xr-x ,亦即 -perm /755 時,但一個文件屬性為 -rw-------
也會被列出來,因為他有 -rw.... 的屬性存在!
范例五:找出文件名為 passwd 這個文件
[root@study ~]# find / -name passwd
范例五-1:找出文件名包含了 passwd 這個關鍵字的文件
[root@study ~]# find / -name "*passwd*"
# 利用這個 -name 可以搜尋文件名啊!默認是完整文件名,如果想要找關鍵字,
# 可以使用類似 * 的任意字符來處理
范例六:找出 /run 目錄下,文件類型為 Socket 的文件名有哪些?
[root@study ~]# find /run -type s
# 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的文件,
# 例如 socket 與 FIFO 文件,可以用 find /run -type p 或 -type s 來找!
范例七:搜尋文件當中含有 SGID 或 SUID 或 SBIT 的屬性
[root@study ~]# find / -perm /7000
# 所謂的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,所以當然要使用 /7000,
# 使用 -7000 表示要同時含有 ---s--s--t 的所有三個權限。而只需要任意一個,就是 /7000 ~瞭乎?
```
上述范例中比較有趣的就屬 -perm 這個選項啦!他的重點在找出特殊權限的文件啰! 我們知道 SUID 與 SGID 都可以設置在二進制程序上,假設我想要找出來 /usr/bin, /usr/sbin 這兩個目錄下, 只要具有 SUID 或 SGID 就列出來該文件,你可以這樣做:
```
[root@study ~]# find /usr/bin /usr/sbin -perm /6000
```
因為 SUID 是 4 分,SGID 2 分,總共為 6 分,因此可用 /6000 來處理這個權限! 至于 find 后面可以接多個目錄來進行搜尋!另外, find 本來就會搜尋次目錄,這個特色也要特別注意喔! 最后,我們再來看一下 find 還有什么特殊功能吧!
```
選項與參數:
4\. 額外可進行的動作:
-exec command :command 為其他指令,-exec 后面可再接額外的指令來處理搜尋到的結果。
-print :將結果打印到屏幕上,這個動作是默認動作!
范例八:將上個范例找到的文件使用 ls -l 列出來~
[root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
# 注意到,那個 -exec 后面的 ls -l 就是額外的指令,指令不支持命令別名,
# 所以僅能使用 ls -l 不可以使用 ll 喔!注意注意!
范例九:找出系統中,大于 1MB 的文件
[root@study ~]# find / -size +1M
```
find 的特殊功能就是能夠進行額外的動作(action)。我們將范例八的例子以圖解來說明如下:
圖6.5.2、find 相關的額外動作
該范例中特殊的地方有 {} 以及 \; 還有 -exec 這個關鍵字,這些東西的意義為:
* {} 代表的是“由 find 找到的內容”,如上圖所示,find 的結果會被放置到 {} 位置中;
* -exec 一直到 \; 是關鍵字,代表 find 額外動作的開始 (-exec) 到結束 (\;) ,在這中間的就是 find 指令內的額外動作。 在本例中就是“ ls -l {} ”啰!
* 因為“ ; ”在 bash 環境下是有特殊意義的,因此利用反斜線來跳脫。
通過圖 6.5.2 你應該就比較容易了解 -exec 到 \; 之間的意義了吧!
如果你要找的文件是具有特殊屬性的,例如 SUID 、文件擁有者、文件大小等等, 那么利用 locate 是沒有辦法達成你的搜尋的!此時 find 就顯的很重要啦! 另外,find 還可以利用萬用字符來找尋文件名呢!舉例來說,你想要找出 /etc 下面文件名包含 httpd 的文件, 那么你就可以這樣做:
```
[root@study ~]# find /etc -name '*httpd*'
```
不但可以指定搜尋的目錄(連同次目錄),并且可以利用額外的選項與參數來找到最正確的文件名!真是好好用! 不過由于 find 在尋找數據的時后相當的操硬盤!所以沒事情不要使用 find 啦!有更棒的指令可以取代呦!那就是上面提到的 [whereis](../Text/index.html#whereis) 與 [locate](../Text/index.html#locate) 啰!
- 鳥哥的Linux私房菜:基礎學習篇 第四版
- 目錄及概述
- 第零章、計算機概論
- 0.1 電腦:輔助人腦的好工具
- 0.2 個人電腦架構與相關設備元件
- 0.3 數據表示方式
- 0.4 軟件程序運行
- 0.5 重點回顧
- 0.6 本章習題
- 0.7 參考資料與延伸閱讀
- 第一章、Linux是什么與如何學習
- 1.1 Linux是什么
- 1.2 Torvalds的Linux發展
- 1.3 Linux當前應用的角色
- 1.4 Linux 該如何學習
- 1.5 重點回顧
- 1.6 本章習題
- 1.7 參考資料與延伸閱讀
- 第二章、主機規劃與磁盤分區
- 2.1 Linux與硬件的搭配
- 2.2 磁盤分區
- 2.3 安裝Linux前的規劃
- 2.4 重點回顧
- 2.5 本章習題
- 2.6 參考資料與延伸閱讀
- 第三章、安裝 CentOS7.x
- 3.1 本練習機的規劃--尤其是分區參數
- 3.2 開始安裝CentOS 7
- 3.3 多重開機安裝流程與管理(Option)
- 3.4 重點回顧
- 3.5 本章習題
- 3.6 參考資料與延伸閱讀
- 第四章、首次登陸與線上求助
- 4.1 首次登陸系統
- 4.2 文字模式下指令的下達
- 4.3 Linux系統的線上求助man page與info page
- 4.4 超簡單文書編輯器: nano
- 4.5 正確的關機方法
- 4.6 重點回顧
- 4.7 本章習題
- 4.8 參考資料與延伸閱讀
- 第五章、Linux 的文件權限與目錄配置
- 5.1 使用者與群組
- 5.2 Linux 文件權限概念
- 5.3 Linux目錄配置
- 5.4 重點回顧
- 5.5 本章練習
- 5.6 參考資料與延伸閱讀
- 第六章、Linux 文件與目錄管理
- 6.1 目錄與路徑
- 6.2 文件與目錄管理
- 6.3 文件內容查閱
- 6.4 文件與目錄的默認權限與隱藏權限
- 6.5 指令與文件的搜尋
- 6.6 極重要的復習!權限與指令間的關系
- 6.7 重點回顧
- 6.8 本章習題:
- 6.9 參考資料與延伸閱讀
- 第七章、Linux 磁盤與文件系統管理
- 7.1 認識 Linux 文件系統
- 7.2 文件系統的簡單操作
- 7.3 磁盤的分區、格式化、檢驗與掛載
- 7.4 設置開機掛載
- 7.5 內存交換空間(swap)之創建
- 7.6 文件系統的特殊觀察與操作
- 7.7 重點回顧
- 7.8 本章習題 - 第一題一定要做
- 7.9 參考資料與延伸閱讀
- 第八章、文件與文件系統的壓縮,打包與備份
- 8.1 壓縮文件的用途與技術
- 8.2 Linux 系統常見的壓縮指令
- 8.3 打包指令: tar
- 8.4 XFS 文件系統的備份與還原
- 8.5 光盤寫入工具
- 8.6 其他常見的壓縮與備份工具
- 8.7 重點回顧
- 8.8 本章習題
- 8.9 參考資料與延伸閱讀
- 第九章、vim 程序編輯器
- 9.1 vi 與 vim
- 9.2 vi 的使用
- 9.3 vim 的額外功能
- 9.4 其他 vim 使用注意事項
- 9.5 重點回顧
- 9.6 本章練習
- 9.7 參考資料與延伸閱讀
- 第十章、認識與學習BASH
- 10.1 認識 BASH 這個 Shell
- 10.2 Shell 的變量功能
- 10.3 命令別名與歷史命令
- 10.4 Bash Shell 的操作環境:
- 10.5 數據流重導向
- 10.6 管線命令 (pipe)
- 10.7 重點回顧
- 10.8 本章習題
- 10.9 參考資料與延伸閱讀
- 第十一章、正則表達式與文件格式化處理
- 11.1 開始之前:什么是正則表達式
- 11.2 基礎正則表達式
- 11.3 延伸正則表達式
- 11.4 文件的格式化與相關處理
- 11.5 重點回顧
- 11.6 本章習題
- 11.7 參考資料與延伸閱讀
- 第十二章、學習 Shell Scripts
- 12.1 什么是 Shell scripts
- 12.2 簡單的 shell script 練習
- 12.3 善用判斷式
- 12.4 條件判斷式
- 12.5 循環 (loop)
- 12.6 shell script 的追蹤與 debug
- 12.7 重點回顧
- 12.8 本章習題
- 第十三章、Linux 帳號管理與 ACL 權限設置
- 13.1 Linux 的帳號與群組
- 13.2 帳號管理
- 13.3 主機的細部權限規劃:ACL 的使用
- 13.4 使用者身份切換
- 13.5 使用者的特殊 shell 與 PAM 模塊
- 13.6 Linux 主機上的使用者訊息傳遞
- 13.7 CentOS 7 環境下大量創建帳號的方法
- 13.8 重點回顧
- 13.9 本章習題
- 13.10 參考資料與延伸閱讀
- 第十四章、磁盤配額(Quota)與進階文件系統管理
- 14.1 磁盤配額 (Quota) 的應用與實作
- 14.2 軟件磁盤陣列 (Software RAID)
- 14.3 邏輯卷軸管理員 (Logical Volume Manager)
- 14.4 重點回顧
- 14.5 本章習題
- 14.6 參考資料與延伸閱讀
- 第十五章、例行性工作調度(crontab)
- 15.1 什么是例行性工作調度
- 15.2 僅執行一次的工作調度
- 15.3 循環執行的例行性工作調度
- 15.4 可喚醒停機期間的工作任務
- 15.5 重點回顧
- 15.6 本章習題
- 第十六章、程序管理與 SELinux 初探
- 16.1 什么是程序 (process)
- 16.2 工作管理 (job control)
- 16.3 程序管理
- 16.4 特殊文件與程序
- 16.5 SELinux 初探
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考資料與延伸閱讀
- 第十七章、認識系統服務 (daemons)
- 17.1 什么是 daemon 與服務 (service)
- 17.2 通過 systemctl 管理服務
- 17.3 systemctl 針對 service 類型的配置文件
- 17.4 systemctl 針對 timer 的配置文件
- 17.5 CentOS 7.x 默認啟動的服務簡易說明
- 17.6 重點回顧
- 17.7 本章習題
- 17.8 參考資料與延伸閱讀
- 第十八章、認識與分析登錄文件
- 18.1 什么是登錄文件
- 18.2 rsyslog.service :記錄登錄文件的服務
- 18.3 登錄文件的輪替(logrotate)
- 18.4 systemd-journald.service 簡介
- 18.5 分析登錄文件
- 18.6 重點回顧
- 18.7 本章習題
- 18.8 參考資料與延伸閱讀
- 第十九章、開機流程、模塊管理與 Loader
- 19.1 Linux 的開機流程分析
- 19.2 核心與核心模塊
- 19.3 Boot Loader: Grub2
- 19.4 開機過程的問題解決
- 19.5 重點回顧
- 19.6 本章習題
- 19.7 參考資料與延伸閱讀
- 第二十章、基礎系統設置與備份策略
- 20.1 系統基本設置
- 20.2 服務器硬件數據的收集
- 20.3 備份要點
- 20.4 備份的種類、頻率與工具的選擇
- 20.5 鳥哥的備份策略
- 20.6 災難復原的考慮
- 20.7 重點回顧
- 20.8 本章習題
- 20.9 參考資料與延伸閱讀
- 第二十一章、軟件安裝:源代碼與 Tarball
- 20.1 開放源碼的軟件安裝與升級簡介
- 21.2 使用傳統程序語言進行編譯的簡單范例
- 21.3 用 make 進行宏編譯
- 21.4 Tarball 的管理與建議
- 21.5 函數庫管理
- 21.6 檢驗軟件正確性
- 21.7 重點回顧
- 21.8 本章習題
- 21.9 參考資料與延伸閱讀
- 第二十二章、軟件安裝 RPM, SRPM 與 YUM
- 22.1 軟件管理員簡介
- 22.2 RPM 軟件管理程序: rpm
- 22.3 YUM 線上升級機制
- 22.4 SRPM 的使用 : rpmbuild (Optional)
- 22.5 重點回顧
- 22.6 本章習題
- 22.7 參考資料與延伸閱讀
- 第二十三章、X Window 設置介紹
- 23.1 什么是 X Window System
- 23.2 X Server 配置文件解析與設置
- 23.3 顯卡驅動程序安裝范例
- 23.4 重點回顧
- 23.5 本章習題
- 23.6 參考資料與延伸閱讀
- 第二十四章、Linux 核心編譯與管理
- 24.1 編譯前的任務:認識核心與取得核心源代碼
- 24.2 核心編譯的前處理與核心功能選擇
- 24.3 核心的編譯與安裝
- 24.4 額外(單一)核心模塊編譯
- 24.5 以最新核心版本編譯 CentOS 7.x 的核心
- 24.6 重點回顧
- 24.7 本章習題
- 24.8 參考資料與延伸閱讀