38
第第第 第第第第第第 第第第第 第 第第第第第第第第第第 第 第第第第 第 第第第第第第第第 第 第第第第第第第第第第第第 第 第第第第第第 第 第第第第第第第第第第第第 第 第第 vim 第第第第第第

第五章 進階檔案處理

  • Upload
    barbra

  • View
    78

  • Download
    0

Embed Size (px)

DESCRIPTION

第五章 進階檔案處理. 學習目標 管理與建立檔案與目錄 執行檔案 硬碟空間指令操作 能進行系統輸出入指令應用 搜尋特定檔案 過濾複製或多餘的輸出資料 使用 vim 編輯文字檔案. 章節大綱. 5-1 檔案系統. 5-4 搜尋檔案. 5-2 硬碟空間使用情形. 5-5 篩選內容. 5-3 指令的輸出入. 5-6 文字編輯器 vim. 備註:可依進度點選小節. 系統管理工作中和檔案處理有很大的關係 檔案的一致性 建立連結 執行例行性的指令與工具 監控磁碟空間的使用情形 搜尋特定檔案. - PowerPoint PPT Presentation

Citation preview

Page 1: 第五章  進階檔案處理

第五章 進階檔案處理

學習目標 管理與建立檔案與目錄 執行檔案 硬碟空間指令操作 能進行系統輸出入指令應用 搜尋特定檔案 過濾複製或多餘的輸出資料 使用 vim 編輯文字檔案

Page 2: 第五章  進階檔案處理

章節大綱

備註:可依進度點選小節

5-1 檔案系統

5-2 硬碟空間使用情形

5-4 搜尋檔案

5-5 篩選內容

5-3 指令的輸出入 5-6 文字編輯器 vim

Page 3: 第五章  進階檔案處理

3

進階檔案處理

系統管理工作中和檔案處理有很大的關係檔案的一致性 建立連結 執行例行性的指令與工具 監控磁碟空間的使用情形 搜尋特定檔案

Page 4: 第五章  進階檔案處理

4

5-1 檔案系統

CentOS 的檔案系統使用的是最新的「 Ext4 」檔案系統Ext4 前身是 Ext3, Ext3 的前身是 Ext2檔案系統 Ext3 是以 Ext2 為基礎再加上「日誌功能( journaling )」

開機只需檢查更動過檔案是否出問題 , 不需整顆硬碟檢查 節省了傳統需掃描整顆硬碟所耗費的時間

Page 5: 第五章  進階檔案處理

5

5-1 檔案系統

Ext4 檔案系統以 ext3 為基礎再加上許多提昇檔案效能的新技術

相容於 Ext3突破檔案系統 ( 即 partition) 的大小限制ext4 使用了「 Extent file writing 」範圍性寫入檔案的新技術,減少檔案在寫入磁碟時的游離區塊的程度

Page 6: 第五章  進階檔案處理

6

5-1 檔案系統

檔案資訊記錄檔 inode記載著這個檔案的所有資訊 ( 權限 & 屬性 )

包括檔名、更動時間、權限與檔案儲存的區塊位置等資料

這一部份最多就只有 48+12bytes( 指到一個 block需要 4bytes, 那請問多出 12k 的檔案要怎麼辦 ?)

每個 inode 都有唯一的編號 ls -i 可以列出檔案的 inode 編號 [root@proj ch5]# touch file1 file2[root@proj ch5]# ls -i1178618 file1 1178619 file2

Page 7: 第五章  進階檔案處理

7

5-1 檔案系統

檔案資訊記錄檔 inode

Page 8: 第五章  進階檔案處理

8

5-1 檔案系統

連結 Link連結允許多個檔案參考到一個檔案 連結是一種指向另一個檔案的特別檔案 如 Windows 的捷徑 連結「指向」真實存在的檔案或目錄 連結的用途:

不需要多複製一份檔案至其他位置,節省空間。保持連結指向檔案都是最近資料。

Page 9: 第五章  進階檔案處理

9

每個檔案都會佔用一個 inode ,檔案內容由 inode 的記錄來指向想要讀取該檔案,必須要經過目錄中的檔名來指向到正確的 inode 號碼才能讀取

檔案內容由 inode 決定 !!

可不可能有兩個檔案有相同 inode?Yes, 就是 hard link filehard link 只是在某個目錄下新增一筆檔名連結到某 inode 號碼的關連記錄而已根本指向同一個檔 , 所以屬性 & 權限完全相同

Hard Link

Page 10: 第五章  進階檔案處理

10

Hard Link 目的是 : 安全 , 不用真的浪費空間 copy 另一個檔案 , 只是新增一筆”記錄inode number” 的檔案

刪除任一個 HL,inode number 與實際檔案內容都還在

不要把 HL file, 當成是 file, 把它當成是多了一筆某個 file inode number 的關連記錄 !!

不佔用 inode, 也不會用到 real data block

不能跨 filesystem (partition)link 目錄

Hard Link

Page 11: 第五章  進階檔案處理

11

Symbolic link ( 就是潔淨 )

建立符號連結利用 ln 指令加上選項 -s 可建立符號連結 語法:

ln -s  目標對象 連結名稱Symbolic link 建立一個獨立檔案

指向他 link 的那個檔案的檔名只是利用檔案來做為指向的動作,來源檔被刪除後, symbolic link 的檔案會『開不了』是真正的檔案 , 會佔 inode & data block

Page 12: 第五章  進階檔案處理

12

5-1 檔案系統

連結 Link建立硬連結

硬連結 (hard link) 建立的方法也是使用 ln 指令,不需加選項 語法:

ln 目標對象 連結名稱與符號連結不一樣的是,當真實檔案被刪除或移至其他目錄時,硬連結仍可正常得到檔案的內容,不會變成無效連結

Page 13: 第五章  進階檔案處理

13

5-1 檔案系統

連結 Link建立硬連結時的限制

硬連結不可跨越分割區 硬連結不可使用於目錄

Page 14: 第五章  進階檔案處理

14

Linux 的執行檔

沒有特別規定副檔名 只要檔案具有可執行 (Executable) 權限即可執行兩種執行檔案的方式

以絕對路徑執行 /usr/bin/ddate /bin/netstat

執行目前所在目錄下的執行檔 先以 ./ 開始,代表「目前目錄下」 ./runme

Page 15: 第五章  進階檔案處理

15

安裝 gccvim hello.c#include <stdio.h>main() {

printf("This is my c code.\n");}gcc hello.c -o hello.exe

不要再用 .exe 了 !!ll hello.exe./hello.exe

Linux 的執行檔

Page 16: 第五章  進階檔案處理

16

5-1 檔案系統

Linux 的執行檔為什麼不直接打檔名就執行目前目錄下的執行檔呢?

保護系統安全 如果有一個惡意的使用者在自己的家目錄下新增一個惡意執行檔 ls管理者如果在該使用者的家目錄中打了 ls 指令,那就很容易掉入陷阱中

Page 17: 第五章  進階檔案處理

17

5-2 硬碟空間使用情形

df 指令

加入選項 -h讓顯示的單位以 KB 、 MB 、 GB來表示

Page 18: 第五章  進階檔案處理

18

5-2 硬碟空間使用情形

目錄下已使用的檔案空間du 指令 ( 以 block-4k 為單位 , 所以佔掉 size都是 4k倍數 )

想知道目前目錄下(含子目錄)已用空間

Page 19: 第五章  進階檔案處理

19

5-3 指令的輸出入

輸出設備一般有螢幕、印表機、檔案等 輸入設備有鍵盤、讀卡機、掃描器與檔案等 「標準輸入」、「標準輸出」與「標準錯誤訊息輸出」

01

2

Page 20: 第五章  進階檔案處理

20

stdout 是執行正確的輸出ls > ok_out_1 [ 其中 ,>隱含著 1>,ok_out有正確執行結果 ]cd /root; ls 2> ok_out2 [ok_out2 不會有內容 ]因為又沒執行錯誤 , 所以不會有錯誤輸出 !

stderr 是執行錯誤的輸出ls /hello > ok_out_3這個 > 就是 1>,沒此 hello 資料夾 , 當然不會有正確的執行結果輸出 ,ok_out_3 也會是空的ls /hello 2> err_out_1

err_out_1 當然有內容 :ls: 無法存取 /hello: 沒有此一檔案或目錄

redirect

Page 21: 第五章  進階檔案處理

21

5-3 指令的輸出入

重導輸出將原本會輸出到螢幕上的文字( stdout 或stderr),改為輸出到檔案成為文字檔 使用 >(大於符號,重導) 將 df 指令的結果,重導至 myfile 檔案

df > myfile

ls /abcde 2> myerror (將錯誤訊息輸出至檔案儲存)

Page 22: 第五章  進階檔案處理

22

5-3 指令的輸出入

管線單一指令無法做到想要完成的工作 可以使用 Linux 的管線功能「 | 」 結合二個以上的指令,處理較複雜的工作 ls -l 指令輸出很多頁內容, more 指令又可以將輸入的資料分頁輸出,結合 ls -l 的輸出與more 指令功能的指令如下:

ls -l /usr/lib/ |more

Page 23: 第五章  進階檔案處理

23

5-3 指令的輸出入

管線「接收左邊指令的輸出,將資料接至右邊指令,成為其輸入來源」

Page 24: 第五章  進階檔案處理

24

| pipe後 , 只能接管線命令管線命令

可以接受 stdin 的指令more, less, head, tail, grep

Page 25: 第五章  進階檔案處理

25

5-4 搜尋檔案whichwhich 來搜尋環境變數 PATH裏的所有目錄中是否有特定執行檔 只會搜尋 PATH變數的目錄

whereis & locate (先 updatedb)知道要搜尋檔案的完整檔名,則用 whereis 搜尋whereis & locate 都是透過 updatedb 所產生的 index file 來 searchwhereis 會找出相關所有檔案 ,並且要有完整檔名

where http 找不到東西 , 一定要是 httpd( 請先裝 httpd)

locate http 可以找到 ,但東西太多 ~

Page 26: 第五章  進階檔案處理

26

5-4 搜尋檔案

查詢部份檔名 locate 用 locate 檔名來查詢檔案位置 查詢部份指令 netst :

whereis netst 找不到/usr/bin/netstat

locate 向系統內建的資料庫去查詢而得到結果 以 updatedb 指令更新資料庫

目錄與檔案

updatedb資料庫

locate

Page 27: 第五章  進階檔案處理

27

5-4 搜尋檔案

搜尋特定檔案 find 直接在檔案系統內搜尋特定檔案 find 的用法是在指令後面空白後加上搜尋的起始目錄,再加上想要查詢的條件 想要從 /home 以下的子目錄,搜尋檔名為install 的檔案

find /home -name install

想要從 /var/spool/ 下,搜尋檔案名稱為 jack的檔案:

find /var/spool/ -name jack

Page 28: 第五章  進階檔案處理

28

5-4 搜尋檔案

增量備份的實務應用 只有在初次備份時,備份目錄內的所有檔案 爾後備份時,只需處理自上次備份時間之後有變動或新增的檔案

Page 29: 第五章  進階檔案處理

29

5-4 搜尋檔案

增量備份的實務應用 初次備份( 3月 1日)的指令:

tar cvfz backup-0301.tar.gz /root/testdir/* touch /root/testdir/timebase

增量備份 tar cvfz backup-0302.tar.gz `find /root/testdir/ -cnewer /root/testdir/timebase -type f`

Page 30: 第五章  進階檔案處理

30

5-5 篩選內容

遇到某個檔案或指令輸出內容很多時需要篩選符合特定資料的結果 只顯示我們想要的資料 grep 特定文字 檔案 ( 對象 )grep sam install.loggrep sam *

Page 31: 第五章  進階檔案處理

31

5-6 文字編輯器 vim

所有 UNIX 與 Linux 都內建的文字編輯器 只要學好 vim ,在任何 Linux 都能夠利用它來編輯文字檔案

Page 32: 第五章  進階檔案處理

32

5-6 文字編輯器 vim

重要的三個模式

Page 33: 第五章  進階檔案處理

33

5-6 文字編輯器 vim

一般模式( Common mode)可以使用具有特殊意義的按鍵 在文件內容中移動、刪除、複製、貼上等功能 在一般模式中,按下 i 、 o 或 a鍵可以進入編輯模式 按下冒號「 : 」則會進入命令模式

編輯模式( Insert mode)按下內容會新增在文件游標所在處 像打字一樣,按鍵不再具有特殊意義 按下 [ESC]鍵可回到一般模式

Page 34: 第五章  進階檔案處理

34

5-6 文字編輯器 vim

命令模式( Command line mode)可以儲存、開啟檔案、結束 vi 、取代特定文字等檔案處理功能 按下 ESC鍵可回到一般模式 觀察左下方是否出現「 : 」冒號

Page 35: 第五章  進階檔案處理

35

5-6 文字編輯器 vim

一般模式下的功能按鍵瀏覽文件利用以下按鍵,我們可以在 vi 內瀏覽文件內容:h :游標向左移,與 [左鍵 ] 的功能相同。j :游標向下移,與 [ 下鍵 ] 的功能相同。k :游標向上移,與 [ 上鍵 ] 的功能相同。l :游標向右移,與 [右鍵 ] 的功能相同。PageUp :游標向上一頁PageDown :游標向下一頁G :游標移到文件最後一行。gg :游標移到文件第一行。

Page 36: 第五章  進階檔案處理

36

5-6 文字編輯器 vim

一般模式下的功能按鍵Ctrl+g :顯示游標目前位置的資訊,包括第幾行,第幾個字元,位於文件中的百分比。顯示行號:按下冒號後,打入 set nu取消顯示行號:按下冒號後,打入 set nonu複製游標所在該行p :將先前複製的內容,貼在游標所在下行,原文字會往下移 dd :刪除游標所在行,原該行下方資料往上移。u :復原上次做的更動. :重覆上一個動作

Page 37: 第五章  進階檔案處理

37

5-6 文字編輯器 vim

命令模式功能開啟另一個檔案 :o  檔案名稱儲存目前內容 :w將目前編輯內容另存為其他檔案 :w  檔名離開 q不存檔離開 q!

Page 38: 第五章  進階檔案處理

38

Q&A討論時間

本章結束