iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
IT管理

Rocky Linux 8:系統管理與維運實戰系列 第 5

第4章:檔案系統結構介紹

前言

從上一章節,我們學會了基本的登入與登出桌面環境,以及如何將終端機從桌面環境進行打開,還有基本的幾個指令的介紹與使用,接下來,繼續介紹作業系統上的基礎。本章節,要來介紹檔案系統,來看看Linux之檔案系統的結構,並期許看玩了這個章節,能夠知道與描述Linux檔案系統的結構以及檔案與目錄的基本操作。

檔案系統階層式架構

檔案系統架構

從上面的圖來看,就是Linux檔案系統的架構,最上面都會從根(/)檔案系統,也是就是root開始,往下以階層的方式擴展下去,裡面有幾個重要的檔案系統目錄整理在下面的清單:

  1. /usr目錄:這個目錄會包含安裝的套件軟體、共享之系統函式庫、函式庫需要引入之檔案以及一些唯讀之程式檔案,通常這個目錄也包含一些指令的二進位之執行檔,下面列出幾個重要的子目錄:
  • /usr/bin目錄:裡面存放了很多使用者可以使用的指令執行檔。
  • /usr/sbin目錄:這個子目錄存放了一些系統管理員可以使用的指令,通常要有最高使用者權限root才可以執行成功的指令。
  • /usr/local目錄:存放一些在本地端所設定的軟體或是相關套件。
  • /usr/lib與/usr/lib64目錄:這些都是存放系統共享C或C++程式之函式庫,通常都是開發作業統或是C/C++程式會用到。
  • /lib與/lib64目錄,這兩個目錄都是軟連結,分別指向/usr/lib與/lib64目錄。
  1. /etc目錄:裡面存放了很多系統上相關的軟體套件或是指令所需要用到的設定檔案。
  2. /var目錄:裡面存放著參數檔案,這些參數檔案時常會動態的異動,像是儲存資料庫之檔案、快取檔案、系統之檔案日誌(log)、列印多工緩衝處理器(printer-spooler service)以及網頁的內容預設存放的目錄等。
  3. /run目錄:執行期的檔案資料都會存放在這裡,一直到下一此機器重新開機都會存在,在這目錄中,包含了process id,即系統程序id編號,還有鎖定的檔案,而/var/run是一個軟連結指向到/run以及/var/lock目錄會指向到/run/lock目錄。
  4. /home目錄:這個目錄底下會有一般使用者為名稱命名的目錄,意思就是每個使用者自己之家目錄會在這個目錄底下。
  5. /root目錄:這個目錄是系統最高權限使用者—root之家目錄。
  6. /tmp目錄:這個目錄是一個存放暫存檔的目錄,如果裡面的檔案或是目錄在10天都沒有被更動過,則就會被系統自動刪除,而在/var/tmp也是一個暫存的目錄,不過裡面的檔案或是目錄是在30天都沒有被更動過,才會系統自動刪除。
  7. /boot目錄:這個目錄是為了要啟動作業系統而存在的,裡面放了像是GRUB選單等啟動作業系統需要用到的檔案與目錄。
  8. /dev目錄:這個目錄包含了裝置,每一個檔案會對應到一個裝置,裡面顯示的裝置就是作業系統正在存取的硬體,像是硬碟、光碟機等。

其中,/dev、/run、/proc與/sys都是特別的目錄,不要將檔案放在這些目錄底下,原因是這些目錄會放置Kernel至存檔案的地方而且這四個目錄會對應到一個記憶體之空間。

透過名稱指定一個檔案

指定一個檔案可以透過兩種方式來完成,一種叫做絕對路徑,一種叫做相對路徑。絕對路徑指的是:從根目錄開始,直接指定到檔案的路徑位址,像是使用者存的密碼檔案之絕對路徑就會以:/etc/passwd來表示。路徑之間的隔開會用斜線(slash),相對路徑就是不是從根目錄開始指定一個路徑,可能是從某個當前目錄開始指定一個檔案路徑,什麼意思呢?可以看看下面這個例子:

[rockylinux@workstation ~]$ ls /etc/passwd
/etc/passwd
[rockylinux@workstation ~]$ ls ../
rockylinux
[rockylinux@workstation ~]$

ls指令是一個可以查看目錄或是檔案的指令,第一個指令,毫無疑問的是一個絕對路徑的例子,那第二個指令是什麼意思呢?指的是從當前目錄去察看上一層目錄下的檔案與目錄,因為當前目錄是使用者的家目錄,上一層就是/home目錄,因此就會顯示出所有使用者的目錄了,所以從這邊可以知道,./指的是當前目錄,而../指的是上一層目錄。

與目錄相關的指令

這邊介紹幾個觀看目錄會用到的指令。首先,pwd這個指令會顯示出當前目錄的完整名稱,指令的執行方式與輸出如下:

[rockylinux@workstation ~]$ pwd
/home/rockylinux
[rockylinux@workstation ~]$

ls指令是列出指定目錄下之檔案與目錄,執行指令方式與輸出的結果如下:

[rockylinux@workstation ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[rockylinux@workstation ~]$

cd指令是可以切換到某個目錄底下,相關的執行指令方式與輸出的結果如下:

[rockylinux@workstation ~]$ cd Music/
[rockylinux@workstation Music]$ cd /home/rockylinux/Videos
[rockylinux@workstation Videos]$

從上面輸出的指令結果可以看到,cd指令可以接的目錄可以是絕對路徑,也可以是相對路徑,而同樣的,ls後面接要查看的目錄位置也可以允許相對與絕對路徑,若cd指令沒有接任何的參數,則執行之後會切換到當前使用者的家目錄。

若要輸出更多每個檔案與目錄更多的資訊,像是每個檔案存取權限的資訊、擁有者、修改時間日期或是隱藏檔案,可以使用-a-l這兩個選項來做到,可以把選項合在一起變成-al,就會變成下面這樣:

[rockylinux@workstation ~]$ ls -al
total 32
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 .
drwxr-xr-x.  3 root       root         24 Sep 18 00:05 ..
-rw-------.  1 rockylinux rockylinux  453 Sep 19 23:13 .bash_history
-rw-r--r--.  1 rockylinux rockylinux   18 Jun 17 07:42 .bash_logout
-rw-r--r--.  1 rockylinux rockylinux  141 Jun 17 07:42 .bash_profile
-rw-r--r--.  1 rockylinux rockylinux  376 Jun 17 07:42 .bashrc
drwxr-xr-x. 10 rockylinux rockylinux  238 Sep 18 00:05 .cache
drwx------. 11 rockylinux rockylinux  215 Sep 18 00:05 .config
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Desktop
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Documents
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Downloads
-rw-------.  1 rockylinux rockylinux   16 Sep 18 00:05 .esd_auth
-rw-------.  1 rockylinux rockylinux 1550 Sep 19 20:31 .ICEauthority
drwxr-xr-x.  3 rockylinux rockylinux   19 Sep 18 00:05 .local
drwxr-xr-x.  4 rockylinux rockylinux   39 Sep 17 23:33 .mozilla
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Music
drwxr-xr-x.  2 rockylinux rockylinux 4096 Sep 19 20:58 Pictures
drwxrw----.  3 rockylinux rockylinux   19 Sep 18 00:05 .pki
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Public
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Templates
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Videos

上述的檔案資訊說明如下:

  1. drwx------.為例,第一個字元d指的是目錄的意思,而如果是-則指的是一般檔案,若是l的話則是soft-link,而bc則是設備檔,而s是Unix domain socket檔,而p指的是pipeline檔,後面的有rwx則會在後面提到,這邊只需要了解代表的是使用者權限的意思,最後一個字元是.的話,則是一般的檔案權限,若是+的話,指的是ACL檔案權限,至於ACL檔案權限介紹也會在後面章節中做詳細的介紹。
  2. 若是.bash_history這樣表示,則是一個隱藏檔案。

若是只要印出指定路徑所有的目錄即可的話,則可以使用ls -ald做到,意思就是加上一個-d參數做到,相關的執行指令執行後的結果如下:

[rockylinux@workstation ~]$ ls -ald
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 .
[rockylinux@workstation ~]$

若要印出某個指定路徑底下,所有子目錄底下的路徑的話,則可以使用-R來做到,相關執行後的結果如下:

[rockylinux@workstation ~]$ ls -alR /home/
/home/:
total 4
drwxr-xr-x.  3 root       root         24 Sep 18 00:05 .
dr-xr-xr-x. 17 root       root        224 Sep 17 23:34 ..
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 rockylinux

/home/rockylinux:
total 32
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 .
drwxr-xr-x.  3 root       root         24 Sep 18 00:05 ..
-rw-------.  1 rockylinux rockylinux  453 Sep 19 23:13 .bash_history
-rw-r--r--.  1 rockylinux rockylinux   18 Jun 17 07:42 .bash_logout
-rw-r--r--.  1 rockylinux rockylinux  141 Jun 17 07:42 .bash_profile
-rw-r--r--.  1 rockylinux rockylinux  376 Jun 17 07:42 .bashrc
drwxr-xr-x. 10 rockylinux rockylinux  238 Sep 18 00:05 .cache
drwx------. 11 rockylinux rockylinux  215 Sep 18 00:05 .config
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Desktop
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Documents
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Downloads
-rw-------.  1 rockylinux rockylinux   16 Sep 18 00:05 .esd_auth
-rw-------.  1 rockylinux rockylinux 1550 Sep 19 20:31 .ICEauthority
drwxr-xr-x.  3 rockylinux rockylinux   19 Sep 18 00:05 .local
drwxr-xr-x.  4 rockylinux rockylinux   39 Sep 17 23:33 .mozilla
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Music
drwxr-xr-x.  2 rockylinux rockylinux 4096 Sep 19 20:58 Pictures
drwxrw----.  3 rockylinux rockylinux   19 Sep 18 00:05 .pki
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Public
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Templates
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Videos

/home/rockylinux/.cache:
total 20
drwxr-xr-x. 10 rockylinux rockylinux   238 Sep 18 00:05 .
drwx------. 15 rockylinux rockylinux  4096 Sep 19 20:38 ..
-rw-r--r--.  1 rockylinux rockylinux 12288 Sep 19 20:31 event-sound-cache.tdb.efa711973c694923969a64fd32220e6d.x86_64-redhat-linux-gnu
drwx------.  8 rockylinux rockylinux    94 Sep 18 00:05 evolution
drwxr-xr-x.  3 rockylinux rockylinux    26 Sep 18 00:05 flatpak
drwxr-xr-x.  7 rockylinux rockylinux   114 Sep 18 02:26 gnome-software
drwxrwxr-x.  2 rockylinux rockylinux    33 Sep 18 00:05 gstreamer-1.0
drwx------.  2 rockylinux rockylinux     6 Sep 18 00:05 libgweather
drwxr-xr-x. 51 rockylinux rockylinux  4096 Sep 19 20:54 mesa_shader_cache
drwxr-xr-x.  2 rockylinux rockylinux   229 Sep 19 20:31 tracker
drwx------.  4 rockylinux rockylinux    45 Sep 18 00:05 yelp

/home/rockylinux/.cache/evolution:
total 0
drwx------.  8 rockylinux rockylinux  94 Sep 18 00:05 .
drwxr-xr-x. 10 rockylinux rockylinux 238 Sep 18 00:05 ..
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 addressbook
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 calendar
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 mail
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 memos
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 sources
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 tasks

/home/rockylinux/.cache/evolution/addressbook:
total 0
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 .
drwx------. 8 rockylinux rockylinux 94 Sep 18 00:05 ..
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 trash

/home/rockylinux/.cache/evolution/addressbook/trash:
total 0
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 .
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 ..

/home/rockylinux/.cache/evolution/calendar:
total 0
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 .
drwx------. 8 rockylinux rockylinux 94 Sep 18 00:05 ..
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 trash

/home/rockylinux/.cache/evolution/calendar/trash:
total 0
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 .
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 ..

/home/rockylinux/.cache/evolution/mail:
total 0
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 .
drwx------. 8 rockylinux rockylinux 94 Sep 18 00:05 ..
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 trash

......

新建檔案

若要新建立一個檔案,則可以使用touch指令來做到,例如:假設要在當前的使用者目錄建立一個檔案的話,則可以使用:touch file1來做到,相關的輸出指令結果如下:

[rockylinux@workstation ~]$ touch file1
[rockylinux@workstation ~]$ ls
Desktop  Documents  Downloads  file1  Music  Pictures  Public  Templates  Videos

常見檔案與目錄操作

這邊列出幾個常見的檔案與目錄的操作,相關的操作如下列表:

  1. mkdir directory:這個mkdir指令指的是新增一個目錄,後面可以接的是要新增目錄的名稱。
  2. mkdir -p directory1/directory2,多了-p參數則會在建立目錄的時候,若directory1不存在的話,則會先建立,接著再建立directory2
  3. cp file new_file:這個cp指令指的是複製一個檔案並為複製的檔案取一個新的檔案名稱。
  4. cp -r directory new_dirctory,這個cp指令搭配了-r參數,則是將一個目錄包含底下所有的目錄與檔案整個複製到一個取名的目的目錄名稱。
  5. mv file new_file,這個mv指令就是將檔案重新命名成另一個檔案名稱,而用在目錄則是將目錄重新命名。
  6. rm filerm這個指令就是將指定的檔案給刪除。
  7. rm -i file,加上-i指令則是互動式方式詢問是否要刪除這個檔案,給使用者作最後一次地確認。
  8. rm -r directory,這個指令就是將某個目錄給刪除,不管目錄是不是空的,都可以將指定的目錄給刪除掉
  9. rm -rf directory,這個指令也是將指定的目錄刪除,但是比上面指令多了一個-f參數,這個參數指的是,因為有時候檔案或是目錄可能不存在,而-f則是忽略那些檔案或是目錄,一律就是強制的刪除而且不會有任何的互動的詢問。
  10. rmdir directory,這個指令是將空的目錄刪除,若目錄底下不是空的,則會無法刪除。

建立檔案捷徑

檔案捷徑分成:soft links與hard links,所謂的hard links,中文會叫做硬連結,指的是有兩個檔案會指向同一個inode,inode會儲存檔案物件與屬性,hard links並不會暫額外的空間,但是無法跨越裝置與分割的磁碟空間,通常是用在磁碟空間有限的地方,像是嵌入系統的環境。使用-i參數在執行ls指令的時候,則會可以印出指定的檔案之inode編號是多少,相關的指令之輸出結果如下:

[rockylinux@workstation ~]$ ls -i file1
1495446 file1

soft links又是什麼呢?中文會叫做軟連結,則沒有hard links之限制,能夠跨裝置或是磁碟分割區路徑來做到連結,但是建立連結的同時,則會佔額外空間給建立連結的檔案,那要怎麼建立hard links與soft links呢?可以使用ln來做到,相關的執行方法如下:

[rockylinux@workstation ~]$ ln file1 file2_hard
[rockylinux@workstation ~]$ ls -i file1 file2_hard
1495446 file1  1495446 file2_hard

若只用ln沒有加其他參數,只有加上檔案與被建立連結檔案名稱的話,則會建立成hard links,而使用ls -i指令則可以知道,這兩個檔案之inode編號是一樣的,若要建立的是soft links,則可以使用下列的方法:

[rockylinux@workstation ~]$ ln -s file1 file2_soft
[rockylinux@workstation ~]$ ls -i file1 file2_soft
1495446 file1  2242910 file2_soft
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$

從上面輸出的結果可以得知,建立的soft link之檔案是單獨的一個檔案,因為使用的inode編號是不同的,那刪除呢?我們試著將檔案刪除之後,接著再執行上述查看檔案相關的連結之間的指令,則會看到下列的結果:

[rockylinux@workstation ~]$ rm file1
[rockylinux@workstation ~]$ ls -al file2_hard
-rw-rw-r--. 1 rockylinux rockylinux 0 Sep 21 01:17 file2_hard
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ ls -al file2_soft
lrwxrwxrwx. 1 rockylinux rockylinux 5 Sep 21 01:45 file2_soft -> file1

最後一個若在畫面上會顯示紅色的警告,表示soft link之連結已經失效,但是hard link之檔案不會有任何的影響,其檔案仍能夠存取,相關的結果如下所示:

[rockylinux@workstation ~]$ rm file1
[rockylinux@workstation ~]$ cat file2_hard
test
123
[rockylinux@workstation ~]$ cat file2_soft
cat: file2_soft: No such file or directory

課後練習

開啟workstation之虛擬主機,並以rockylinux之使用者登入,密碼為:rocky,依序完成下列的操作:

  1. 使用ls指令來查看當前使用者目錄底下所有檔案屬性等資訊
  2. 用一個指令輸出當前的絕對路徑
  3. 在當前使用者家目錄底下建立一個多重的目錄:directory1/sub_directory,請以一行指令完成
  4. 建立一個空白的文字檔案叫做:test_file1
  5. 將上述的test_file1使用指令建立一個soft link,soft link名稱為:test_file1_soft
  6. 請以一行指令將directory1刪除
  7. 使用指令將test_file1刪除並使用ls指令觀察test_file1_soft之狀態
  8. 使用指令將test_file1_soft刪除

上一篇
第3章:基本存取命令列與終端機介紹
下一篇
第5章:取得指令使用說明幫助方法
系列文
Rocky Linux 8:系統管理與維運實戰23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言