<<鳥哥私房菜>>記錄
第1章 電腦概論
- CPU的種類
CPU主要分為兩類:精簡指令集RISC和複雜指令集CISC。
對於精簡指令集,常見系列有Sun公司的SPARC系列,IBM公司的PowerPC系列,和ARM系列
複雜指令集主要有AMD,Intel 和VIA的x86系列的CPU
第3章 主機規劃與磁碟分割
1. 磁碟介紹
整顆磁碟的第一個扇區特別重要,它記錄了兩個重要的資訊:
(1) MBR (master boot record) 主要開機記錄區: 可以安裝開機管理程式的地方, 有446bytes
(2) 分區表 (partition table): 記錄整個磁碟的分區狀態, 有64bytes
MBR非常重要, 系統在開機的時候要主動讀取這個分區的內容, 這樣才知道如何引導開機
2. 磁碟分割表
在分區表所在的64 bytes 容量中,總共分為四組記錄區,每組記錄區記錄了該區段的啟始不結束的磁柱號碼。 若將硬碟以長條形來看,然後將磁柱以直條圖來看,那麼那64 bytes 的記錄區段有點像底示:
假設上面的硬碟裝置檔案名稱為/dev/hda 時,在linux中得到的裝置檔案名稱如下:
P1:/dev/hda1
P2:/dev/hda2
P3:/dev/hda3
P4:/dev/hda4
由於分區表就只有64 bytes 而已,最多隻能容納四筆分區的記錄, 這四個分區的記錄被稱為主要(Primary)或擴充(Extended)分區槽。 根據上面的圖示與說明,我們可以得到幾個重點資訊:
(1) 其實所謂的『分區』只是針對那個64 bytes 的分區表進行設定而已!
(2) 硬碟預設的分區表僅能寫入四組分區資訊
(3) 這四組分區資訊我們稱為主要 (Primary) 或擴充 (Extended) 分區槽
(4) 分區槽的最小單位為磁柱 (cylinder)
(5) 當系統要寫入磁碟時,一定會參考磁碟分割表,才能針對某個分區槽進行資料的處理
3. 磁碟分割的好處
(1) 資料的安全性
(2) 系統的效率考慮
由二分區槽將資料集中在某個磁柱的區段,例如當中第一個分區槽位二磁柱號碼 1~100號,如此一來當有資料要讀取自該分區槽時, 磁碟只會搜尋前面1~100的磁柱範圍,由於資料集中了,將有利於資料讀取的速度與效能!所以說,分區是很重要的!
4. 擴充分區
如果要多於4個分區可以使用擴充分區,將擴充分區進行劃分. 上面提到的4個分區可以劃為主要磁碟分割或擴充分區
在當中,我們知道硬碟的四個分區記錄區僅使用到兩個,P1為主要分區,而 P2則為擴充分區。
請注意, 擴充分區的目的是使用額外的扇區來記錄分區資訊,擴充分區本身並不能被拿來格式化。 然
後我們可以透過擴充分區所指向的那個區塊繼續作分區的記錄。
同樣的,上述的分區槽在Linux系統中的裝置檔案名稱分別如下:
P1:/dev/hda1
P2:/dev/hda2
L1:/dev/hda5
L2:/dev/hda6
L3:/dev/hda7
L4:/dev/hda8
L5:/dev/hda9
關於分區終結如下:
主要分區、擴充分區與邏輯分區的特性我們作個簡單的終結如下:
(1) 主要分區與擴充分區最多可以有四筆(硬碟的限制)
(2) 擴充分區最多隻能有一個 (作業系統的限制)
(3) 邏輯分區是由擴充分區持續切割出來的分區槽;
(4) 能夠被格式化後,作為資料存取的分區槽為主要分區與邏輯分區。擴充分區無法格式化;
(5) 邏輯分區的數量依作業系統而不同,在Linux 系統中,IDE硬碟最多有59個邏輯分區 (5號到63號), SATA 硬碟則有11個邏輯分區(5 號到15 號)。
5. 開機流程與主要開機記錄區 (MBR)
簡單的說,整個開機流程到作業系統之前的動作應該是這樣的:
(1). BIOS:開機主動執行的韌體,會認識第一個可開機的裝置;
BIOS會去分析電腦裡面有哪些儲存裝置,我們以硬碟為例,BIOS會依據使用者的設定去取得能夠開機的硬碟,並且到該硬碟裡面去讀取第一個扇區的 MBR 位置。 MBR 這個僅有446 bytes 的硬碟容量裡面會放置最基本的開機管理程式, 此時 BIOS 就功成圓滿,而接下來就是MBR 內的開機管理程式的工作了。
(2). MBR:第一個可開機裝置的第一個扇區內的主要開機記錄區塊,內含開機管理程式;
(3). 開機管理程式 (boot loader) :一支可讀取核心檔案來執行的軟體;
這個開機管理程式的目的是在載入(load)核心檔案, 由於開機管理程式是作業系統在安裝的時候所提供的, 所以他會認識硬碟內的檔案系統格式,因此就能夠讀取核心檔案, 然後接下來就是核心檔案的工作, 開機就完成了.
(4). 核心檔案:開始作業系統的功能...
由上面的說明我們會知道,BIOS 與MBR 都是硬體本身會支援的功能,至於Boot loader則是作業系統安裝在MBR 上面的一套軟體了。由於 MBR 僅有 446 bytes 而已,因此這個開機管理程式是非常小而美的。 這個boot loader的主要仸務有底下這些項目:
(1) 提供選單:使用者可以選擇不同的開機項目,這也是多重開機的重要功能!
(2) 載入核心檔案:直接指向可開機的程式區段來開始作業系統;
(3) 轉交其他loader:將開機管理功能轉交給其他 loader 負責。
開機管理程式除可以安裝在MBR中外,還可以安裝在其他分區的開機磁區。
6. 雙系統引導
我們舉一個例子來說,假設你的個人電腦只有一個硬碟,裡面切成四個分割槽,其中第一、二分割槽分別安裝了Windows 及Linux, 你要如何在開機的時候選擇用Windows 還是Linux開機呢?假設MBR 內安裝的是可同時認識Windows/Linux作業系統的開機管理程式, 那麼整個流程可以表徵圖如下:
在中我們可以發現,MBR 的開機管理程式提供兩個選單,選單一(M1)可以直接載入Windows 的核心檔案來開機; 選單二(M2)則是將開機管理工作交給第二個分割槽的開機磁區(boot sector)。當使用者在開機的時候選擇選單二時, 那麼整個開機管理工作就會交給第二分割槽的開機管理程式了。 當第二個開機管理程式啟動後,該開機管理程式內(中)僅有一個開機選單,因此就能夠使用Linux的核心檔案來開機囉。 這就是多重開機的工作情況啦!我們將作個總結:
(1) 每個分割槽都擁有自己的開機磁區 (boot sector)
(2) 圖中的系統槽為第一及第二分割槽,
(3) 實際可開機的核心檔案是放置到各分割槽內的!
(4) Loader只會認識自己的系統槽內的可開機核心檔案,以及其他 loader而已;
(5) Loader可直接指向或者是間接將管理權轉交給另一個管理程式。
為什麼人家常常說:『如果要安裝多重開機, 最好先安裝Windows 再安裝Linux』呢?這是因為:
(1) Linux在安裝的時候,你可以選擇將開機管理程式安裝在 MBR 或各別分割槽的開機磁區, 而且Linux的loader可以手動設定選單 (就是的 M1, M2...) ,所以你可以在 Linux 的boot loader裡面加入Windows 開機的選項;
(2) Windows 在安裝的時候,他的安裝程式會主動的覆蓋掉 MBR 以及自己所在分割槽的開機磁區,你沒有選擇的機會, 而且他沒有讓我們自己選擇選單的功能。
因此,如果先安裝Linux再安裝 Windows 的話,那 MBR 的開機管理程式就只會有Windows 的項目,而不會有Linux的項目 (因為原本在MBR 內的 Linux的開機管理程式就會被覆蓋掉)。 那需要重新安裝Linux 一次嗎?當然不需要,你只要用盡各種方法來處理 MBR 的內容即可。 例如利用全中文的spfdisk(http://spfdisk.sourceforge.net/)軟體來安裝認識Windows/Linux 的管理程式, 也能夠利用Linux的救援模式來挽救 MBR 即可。
第4章 安裝CentOS
1. 磁碟分割
如同前面談到的,磁碟分割是整個安裝過程裡面最重要的部分了。CentOS預設給了我們四種分割模式,分別為:
(1) 移除所選磁碟上的所有分割區,並建立預設分割模式: 如果選擇這種模式,linux會將硬碟裡面的分割全部被刪除後, 以安裝程式的預設重建立立分割槽
(2) 移除所選磁碟上的 Linux 分割區,並建立預設的分割模式: 在這個硬碟內,只有Linux 的分割槽會被刪除,然後再以安裝程式的預設重建立立分割槽。
(3) 使用所選取磁碟上的未使用空間,建立預設的分割模式: 如果你的這顆硬碟內還有未被分割的磁柱空間 (注意,是未被分割,而不是該分割槽內沒有資料的意思!), 那麼使用這個項目後,他不會更改原有的分割槽,只會就剩餘的未分割區塊進行預設分割的建置。
(4) 建立自訂的分割模式
2. 檔案系統的選擇
這幾種檔案系統類型分別是:
(1) Ext2/ext3:是Linux 適用的檔案系統類型。由於 ext3 檔案系統多了日誌的記錄, 對於系統的複原比較快速,因此建議你務必要選擇新的 ext3 不要用ext2 了。
(2) Physical volume (LVM) :這是用來彈性調整檔案系統容量的一種機制, 可以讓你的檔案系統容量變大或變小而不改變原有的檔案資料內容!
(3) Software RAID:利用Linux作業系統的特性,用軟體模擬出磁碟陣列的功能!
(4) Swap:就是記憶體置換空間!由於swap 並不會使用到分類樹的掛載, 所以用swap 就不需要指定掛載點!
在傳統的 Linux說明檔案當中特別有指定到『swap 最好為實體記憶體的 1.5 到2倍之間』。swap置換空間是很重要的, 因為他可以避免因為實體記憶體不足而造成的系統效能低落的問題。但是如果你的實體記憶體有 4GB以上時, 老實說,swap也可以不必額外設定.
swap 記憶體置換空間的功能是:當有資料被存放在實體記憶體裡面,但是這些資料又不是常被CPU所取用時, 那麼這些不常被使用的程式將會被丟到硬碟的 swap 置換空間當中, 而將速度較快的實體記憶體空間釋放出來給真正需要的程式使用! 所以,如果你的系統不很忙,而記憶體又很大,自然不需要 swap囉。
(5) Vfat:同時被Linux 與Windows 所支援的檔案系統類型。 如果你的主機硬碟內同時存在Windows與Linux作業系統,為了資料的交換,確實可以建置一個 vfat 的檔案系統!
3. SELinux
它是Security Enhanced Linux的縮寫,這個軟體是由美國國家安全域(National Security Agency, NAS)所開發的,這東西並不是防火牆喔!SELinux 是一個Linux系統詎問控制 (Access control) 的細部設定, 重點在於控製程序對於系統檔案的詎問許可權限制。由於 CentOS 5.x 以後的Linux版本對於SELinux的設定已經非常的妥當了, 因此建議您務必要開啟這個功能!
4. Kdump
Kdump 就是,當核心出現錯誤的時候, 是否要將當時的記憶體內的訊息寫到檔案中,而這個檔案就能夠給核心開發人員研究為啥會宕機之用。 我們並不是核心開發人員,而且記憶體內的資料實在太大了,因此常常進行 Kdump 會造成硬碟空間的浪費。 所以,這裡建議不要啟動Kdump 的功能!
5. 雙系統的安裝
新主機僅有一顆硬碟
如果你的系統是新的,並且想要安裝多重作業系統時,那麼這個多重作業系統的安裝將顯的很簡單啊! 假設以目前主流的 160GB 硬碟作為規劃好了,而你想要有WindowsXP, WindowsXP的資料碟, Linux, swap 及一個共用分割槽, 那我們首先來規劃一下硬碟分割吧!如果是這樣的需求,那你可以這樣規劃:
安裝一定要先裝WindowsX 再裝Linux才好!
- 安裝Windows XP
在這個階段依舊使用Windows XP光碟片開機來安裝,安裝到了分割時,記得依照上述表格的規劃製作出兩個主要分割槽, 並且將檔案系統格式化為 NTFS,然後再將Windows XP裝到 C 槽當中。理論上,此時僅有/dev/sda1, /dev/sda2 而已喔!
- 安裝CentOS 5.x
再來則是安裝Linux,安裝時要注意的地方也是在分割的地方,請回到前一小節的磁碟分割部分來進行分割設定。另外一個要注意的地方則是在開機管理程式的地方, 尤其是『預設開機』項目,是預設要Windows 還是Linux開機呢?這需要你的選擇喔!而且 grub 務必要安裝到MBR 上頭。
- 後續維護的注意事項
多重開機設定完畢後請特別注意, (1)Windows 的環境中最好將Linux的根目錄與 swap取消掛載,否則未來你開啟檔案總管時, 該軟體會要求你『格式化!』如果一個不留神,你的 Linux系統就毀了。 (2) 你的Linux不可以隨便的刪除! 因為grub 會去讀取Linux根目錄下的/boot/目錄內容,如果你將 Linux移除了,你的Windows 也就無法開機了! 因為整個開機選單都會不見喔!
第5章 首次登陸與線上協助
1. 關機/重新啟動相關的指令
談一談幾個與關機/重新啟動相關的指令:
(1) 將資料同步寫入硬碟中的指令: sync
(2) 慣用的關機指令: shutdown
(3) 重新啟動,關機: reboot, halt, poweroff
2.切換執行等級: init
本章上頭有談到過關於 run level 的問題。之前談到的是系統運作的模式,分為純文字(run level 3)及圖形介面模式(run level 5)。除了這兩種模式外,有沒有其他模式呢?其實 Linux 共有七種執行等級, 七種等級的意義我們在後面會再談到。本章你只要知道底下四種執行等級就好了:
run level 0:關機
run level 3:純文字模式
run level 5:含有圖形介面模式
run level 6:重新啟動
那如何切換各模式呢?可以使用 init 這個指令來處理喔!也就是說,如果你想要關機的話, 除了上述的 shutdown -h now 以及poweroff 之外,你也可以使用如下的指令來關機:
[root@www ~]# init 0
3. 保護硬碟
硬碟該如何預防發生檔案系統錯誤的問題呢?
(1) 妥善保養硬碟:
例如:主機通電之後部要搬動,避免移動或震動硬碟;盡量降低硬碟的溫度,可以加裝風扇來冷卻硬碟; 或者可以換裝 SCSI 硬碟。
(2) 劃分不同的partition:
為什麼磁碟分割這麼重要!因為Linux每個目錄被讀寫的頻率不同,妥善的分割將會讓我們的Linux更安全! 通常我們會建議劃分下列的磁碟區塊:
o /
o /boot
o /usr
o /home
o /var
這樣劃分有些好處,例如/var是系統預設的一些資料暫存或者是 cache資料的儲存目錄, 像 e-mail 就含在這裡面。如果還有使用 proxy 時,因為常常存取,所以有可能會造成磁碟損壞, 而當這部份的磁碟損壞時,由於其他的地方是沒問題的,因此資料得以儲存,而且在處理時也比較容易!
第六章、Linux 的檔案許可權與目錄配置
1. 使用權限設定
chgrp :改變檔案所屬群組
chown :改變檔案擁有者
chmod :改變檔案的許可權, SUID, SGID, SBIT 等等的特性
事實上,chown 也可以使用『chown user.group file』,亦即在擁有者與群組間加上小數點『.』也行! 不過很多朋友在設定帳號時,喜歡在帳號當中加入小數點(例如vbird.tsai這樣的帳號格式),這就會造成系統的誤判了! 所以我們比較建議使用冒號『:』來隔開擁有者與群組啦!此外,chown 也能單純的修改所屬群組呢! 例如『chown .sshd install.log』就是修改群組~看到了嗎?就是那個小數點的用途!
2. 許可權對檔案的重要性
3. 許可權對目錄的重要性
Linux下的檔案類型:一般檔案(regular file)-,目錄(directory)d,連結檔案(link)l,裝置檔案(device)【區塊裝置b和字元裝置c】,介面檔案(socket)s,資料轉送檔案(pipe)p
4. Linux目錄配置的依據—FHS
因為利用 Linux來開發產品或 distributions的社群/公司與個人實在太多了, 如果每個人都用自己的想法來配置檔案放置的目錄,那麼將可能造成很多管理上的困擾。 你能想象,你進入一個企業之後,所接觸到的 Linux目錄配置方法竟然跟你以前學的完全不同嗎? 所以,後來就有所謂的Filesystem Hierarchy Standard (FHS)標準!
根據 FHS(http://www.pathname.com/fhs/)的官方檔案指出, 他們的主要目的是希望讓使用者可以瞭解到已安裝軟體通常放置於那個目錄下, 所以他們希望獨立的軟體開發商、作業系統製作者、以及想要維護系統的使用者,都能夠遵循 FHS的標準。 也就是說,FHS的重點在於規範每個特定的目錄下應該要放置什麼樣子的資料而已。 這樣做好處非常多,因為 Linux作業系統就能夠在既有的面貌下(目錄架構不變)發展出開發人員想要的獨特風格。
事實上,FHS是根據過去的經驗一直再持續的改版的,FHS依據檔案系統使用的頻繁與否與是否允許使用者隨意更動, 而將目錄定義成為四種互動作用的形態,用表格來說有點像底下這樣:
上表中的目錄就是一些代表性的目錄,該目錄底下所放置的資料在底下會談到,這裡先略過不談。 我們要瞭解的是,什麼是那四個類型?
可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行檔案與使用者的郵件等資料, 是能夠分享給網路上其他主機掛載用的目錄;
不可分享的:自己機器上面運作的裝置檔案或者是與程式有關的 socket 檔案等, 由於僅與自身機器有關,所以當然就不適合分享給其他主機了。
不變的:有些資料是不會經常變動的,跟隨著 distribution 而不變動。 例如函式庫、檔案說明檔案、系統管理員所管理的主機服務組態檔等等;
可變動的:經常改變的資料,例如登入檔案、一般使用者可自行收受的新聞群組等。
事實上,FHS針對分類樹架構僅定義出三層目錄底下應該放置什麼資料而已,分別是底下這三個目錄的定義:
/ (root, 根目錄):與開機系統有關;
/usr (unix software resource):與軟體安裝/執行有關;
/var (variable):與系統運作過程有關。
為什舉要定義出這三層目錄呢?其實是有意義的喔!每層目錄底下所應該要放置的目錄也都又特定的規定!
5. 根目錄 (/) 的意義與內容:
根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的, 同時根目錄也與開機/還原/系統修複等動作有關。 由於系統開機時需要特定的開機軟體、核心檔案、開機所需程式、 函式庫等等檔案資料,若系統出現錯誤時,根目錄也必須要包含有能夠修複檔案系統的程式才行。 因為根目錄是這麼的重要,所以在 FHS的要求方面,他希望根目錄不要放在非常大的分割槽內, 因為越大的分割槽妳會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會。
因此 FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。 如此不但效能較佳,根目錄所在的檔案系統也較不容易發生問題。
有鑒於上述的說明,因此 FHS定義出根目錄(/)底下應該要有底下這些次目錄的存在才好:
除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之後才會持續的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:
/etc:設定檔
/bin:重要執行檔
/dev:所需要的裝置檔案
/lib:執行檔所需的函式庫與核心所需的模組
/sbin:重要的系統執行檔案
這五個目錄千萬不可與根目錄分開在不同的分割槽!
6. /usr 的意義與內容:
依據 FHS的基本定義,/usr裡面放置的資料屬於可分享的與不可變動的(shareable, static), 如果你知道如何透過網路進行分割槽的掛載(例如在朋務器篇會談到的 NFS朋務器),那麼/usr 確實可以分享給區域網路絡內的其他主機來使用喔!
很多讀者都會誤會/usr 為user 的縮寫,其實usr 是Unix Software Resource 的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦! FHS 建議所有軟體開發人員,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。 因為是所有系統預設的軟體(distribution發行者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:\Windows\ + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。 一般來說,/usr的次目錄建議有底下這些:
7. /var 的意義與內容:
如果/usr 是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。 因為/var 目錄主要針對常態性變動的檔案,包括快取(cache)、登入檔(log file)以及某些軟體運作所產生的檔案, 包括程式檔案(lock file, run file),或者例如MySQL 資料庫的檔案等等。常見的次目錄有:
針對FHS,各家distributions的異同由於 FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的檔案與目錄資料, 因此,在其他次目錄層級內,就可以隨開發人員自行來配置了。舉例來說,CentOS的網路設定資料放在 /etc/sysconfig/network-scripts/ 目錄下,但是 SuSE 則是將網路放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的 FHS標準,差異性其實有限啦!
8. 分類樹(directory tree)
另外,在 Linux底下,所有的檔案與目錄都是由根目錄開始的!那是所有目錄與檔案的源頭~ 然後再一個一個的分支下來,有點像是樹枝狀. 因此,我們也稱這種目錄配置方式為:『分類樹(directory tree)』 這個分類樹有什麼特性呢?他主要的特性有:
- 分類樹的起始點為根目錄 (/, root);
- 每一個目錄不止能使用本地端的 partition 的檔案系統,也可以使用網路上的 filesystem 。舉例來說, 可以利用 Network File System (NFS) 伺服器掛載某特定目錄等。
- 每一個檔案在此分類樹中的檔案名稱(包含完整路徑)都是獨一無二的。
如果我們將整個分類樹以表徵圖的方法來顯示,並且將較為重要的檔案資料列出來的話,那麼分類樹架構有點像這樣:
根據 FHS 的定義,最好能夠將/var 獨立出來, 這樣對於系統的資料還有一些安全性的保護!因為至少/var 死掉時,你的根目錄還會活著! 還能夠進入救援模式!
分區建議:
/boot
/:
/var:
/usr:
/home:
第7章 檔案與目錄管理
1. ls命令參數解析
2. 取得路徑的檔案名稱與目錄名稱
我們前面介紹的完整檔案名稱 (包含目錄名稱與檔案名稱) 當中提到,完整檔名最長可以到達 4096 個字元。 那麼你怎麼知道那個是檔名?那個是目錄名?就是利用斜線 (/) 來分辨! 其實,取得檔案名稱或者是目錄名稱,一般的用途應該是在寫程式的時候,用來判斷之用的~ 所以,這部分的指令可以用在第三篇內的 shell scripts 裡頭喔! 底下我們簡單的以幾個範例來談一談 basename 與 dirname 的用途!
3. 檔案內容查閱:
如果我們要查閱一個檔案的內容時,該如何是好呢?這裡有相當多有趣的指令可以來分享一下: 最常使用的顯示檔案內容的指令可以說是 cat 與 more 及 less 了!此外,如果我們要查看一個很大型的檔案 (好幾百MB時),但是我們只需要後端的幾行字而已,那麼該如何是好?呵呵!用 tail 呀,此外, tac 這個指令也可以達到!好了,說說各個指令的用途吧!
cat 由第一行開始顯示檔案內容
tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
nl 顯示的時候,順道輸出行號!
more 一頁一頁的顯示檔案內容
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
head 只看頭幾行
tail 只看尾巳幾行
od 以二進位的方式讀取檔案內容!
4. 修改檔案時間或建置新檔: touch
我們在 ls 這個指令的介紹時,有稍微提到每個檔案在 linux底下都會記錄講多的時間參數, 其實是有三個主要的變動時間,那麼三個時間的意義是什麼呢?
- modification time (mtime):
當該檔案的『內容資料』變更時,就會更新這個時間!內容資料指的是檔案的內容,而不是檔案的屬性或許可權喔!
- status time (ctime):
當該檔案的『狀態 (status)』改變時,就會更新這個時間,舉例來說,像是許可權與屬性被更改了,都會更新這個時間啊。
- access time (atime):
當『該檔案的內容被取用』時,就會更新這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man.config , 就會更新該檔案的 atime 了。
5. umask用法
在預設許可權的屬性上,目錄與檔案是不一樣的。從第六章我們知道 x 許可權對於目錄是非常重要的! 但是一般檔案的建立則不應該有執行的許可權,因為一般檔案通常是用在於資料的記錄嘛!當然不需要執行的許可權了。 因此,預設的情況如下:
- 若使用者建立為『檔案』則預設『沒有可執行( x )許可權』,亦即只有 rw 這兩個項目,也就是最大為 666 分,預設許可權如下: -rw-rw-rw-
- 若使用者建立為『目錄』,則由於 x 與是否可以進入此目錄有關,因此預設為所有許可權均開放,亦即為 777 分,預設許可權如下: drwxrwxrwx
要注意的是,umask 指的是『該預設值需要減掉的許可權!』如果以上面的例子來說明的話,因為 umask 為 022 ,所以 user 並沒有被拿掉任何許可權,不過 group 與others 的許可權被拿掉了 2 (也就是 w 這個許可權),那麼當使用者:
建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
6. find指令
find 的特殊功能就是能夠進行額外的動作(action)。我們將範例八的例子以圖解來說明如下: