Linux文件的屬性及類型


Linux文件屬性及類型

1.Linux系統文件屬性

Linux系統中文件或目錄的屬性主要包括:文件或目錄的索引節點(inode)、類型、權限屬性、鏈接數、所歸屬的用戶和用戶組、最近修改時間等內容;在 Linux 中我們可以使用 ll 或者 ls –l 命令來顯示一個文件的屬性以及文件所屬的用戶和組,如:

d rwxr-xr-x. 4 root root     71 Mar 25 19:01 one
- rw-r--r--. 1 root root    119 Mar 25 03:42 shi.txt
1|    2   |3|4| 5 |  6  |   7  |      8     |  9

在 Linux 中第一列字符代表這個文件是目錄、文件或鏈接文件等等。

  • 當為 d 則是目錄(directory)
  • 當為 - 則是普通文件;
  • 若是 l 則表示為鏈接文檔(Link File);
  • 若是 b 則是設備文件(block塊設備文件)和存儲相關的設備,舉例:硬盤,U盤,磁盤分區
  • 若是 c 則表示為設備文件(char字符設備文件)和字符相關的設備,舉例:打印機,終端
  • 若是 s 則表示為socket安全套接字文件,網絡編程
  • 若是 p 則表示為pipe管道文件,父進程與子進程之間的通信文件

第二列字符表示用戶權限

  • r 代表可讀(read)
  • w 代表可寫(write)
  • x 代表可執行(execute)
  • -該權限位上沒有權限

第四列指該文件的硬鏈接數

第五列文件或目錄所屬的用戶(屬主)

chown:更改文件屬主
語法:
	chown [–R] 屬主名 文件名

第六列文件或目錄所屬的用戶所歸屬的組;

chgrp:更改文件屬組
語法:
    chgrp [-R] 屬組名 文件名
    
 -R:遞歸更改文件屬組,就是在更改某個目錄文件的屬組時,如果加上-R的參數,那么該目錄下的所有文件的屬組都會更改。

第七列文件或目錄的大小;

其中大小默認單位為字節,想要轉換儲存單位可以用命令 ls -h

第八列文件或目錄的修改時間

這里的時間是該文件的最后被更新(包括文件創建、內容更新、文件名更新等),可用如下命令查看文件的修改,訪問,創建的時間
   stat + 文件名.

第九列實際的文件名或目錄名

2.文件類型查看命令file

 語法:
 file [選項] 文件...
 
 舉例:
 [root@localhost ~]# file pikachupikachu: JPEG image data, JFIF standard 1.01
 
 root@localhost ~]# file /dev/sda/dev/sda: block speci
 
 [root@localhost ~]# file /dev/pts/0/dev/pts/0: character speci
 
注意: Linux文件擴展名不代表任何含義, 僅僅是為了運維人員便於識別

3.系統鏈接文件

在Linux中,一個文件數據可分為兩大類:數據元數據

  • 數據:泛指普通文件中的實際數據
  • 元數據:用來描述一個文件的特征的系統數據

在Linux中,一個文件的存儲也會被分為兩部分:inodeblock

  • inode:用來存儲文件的元數據
  • block:用來存儲文件的真實數據,一個block空間是4k
ext4 文件系統會把分區主要分為兩大部分(暫時不提超級塊):小部分用於保存文件的 inode (i 節點)信息;剩余的大部分用於保存 block 信息。

inode 的默認大小為 128 Byte,用來記錄文件的權限(r、w、x)、文件的所有者和屬組、文件的大小、文件的狀態改變時間(ctime)、文件的最近一次讀取時間(atime)、文件的最近一次修改時間(mtime)、文件的數據真正保存的 block 編號。每個文件需要占用一個 inode。大家如果仔細查看,就會發現 inode 中是不記錄文件名的,那是因為文件名記錄在文件所在目錄的 block 中。

block 的大小可以是 1KB、2KB、4KB,默認為 4KB。block 用於實際的數據存儲,如果一個 block 放不下數據,則可以占用多個 block。例如,有一個 10KB 的文件需要存儲,則會占用 3 個 block,雖然最后一個 block 不能占滿,但也不能再放入其他文件的數據。這 3 個 block 有可能是連續的,也有可能是分散的。
由此,我們可以知道以下 2 個重要的信息:
1.每個文件都獨自占用一個 inode,文件內容由 inode 的記錄來指向;
2.如果想要讀取文件內容,就必須借助目錄中記錄的文件名找到該文件的 inode,才能成功找到文件內容所在的 block 塊;

查看磁盤空間命令

查看磁盤空間命令:
    df
    
選項:
    -h:human人類可讀
    -i:查看inode空間
    
舉例:
查看磁盤的block:
    [root@localhost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.2G   18G   7% /
    devtmpfs        476M     0  476M   0% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.6M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       473M  119M  355M  25% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    
查看磁盤的inode:
    [root@localhost ~]# df -hi
    Filesystem     Inodes IUsed IFree IUse% Mounted on
    /dev/sda3        9.3M   29K  9.3M    1% /
    devtmpfs         119K   373  119K    1% /dev
    tmpfs            122K     1  122K    1% /dev/shm
    tmpfs            122K   700  121K    1% /run
    tmpfs            122K    16  122K    1% /sys/fs/cgroup
    /dev/sda1        238K   326  238K    1% /boot
    tmpfs            122K     1  122K    1% /run/user/0

4.硬鏈接與軟連接

Linux系統引入了兩種鏈接:

  1. 硬鏈接(hard link)

  2. 軟鏈接(又叫:符號鏈接即soft link或symbolic lin)

軟連接:

軟鏈接相當於windows的快捷方式,軟鏈接文件會將inode指向源文件的block

  • 當我們訪問這個軟鏈接文件時,其實就是在訪問源文件的本身
  • 那么當我們對一個文件創建多個軟鏈接時,其實就是多個inode指向同一個block
  • 那么當我們刪除軟鏈接文件時,其實只是刪除了一個inode的指向,並不會對源文件造成影響。
  • 如果我們刪除的是源文件,那么該文件的所有軟鏈接文件都會失效
顯示iNode編號命令
ls -i  

創建軟鏈接文件命令:
ln -s  源文件 鏈接文件的位置

一個文件創建多個軟連接:
[root@localhost ~]# ln -s /root/1.txt /tmp/
[root@localhost ~]# ll /tmp/
total 196
lrwxrwxrwx 1 root root     11 Mar 2910:54 1.txt -> /root/1.tx

[root@localhost ~]# ln -s /root/1.txt /tmp/2.txt
[root@localhost ~]# ll /tmp/
total 196
lrwxrwxrwx 1 root root  11 Mar 2910:54 1.txt -> /root/1.txt
lrwxrwxrwx 1 root root  11 Mar 2910:55 2.txt -> /root/1.txt

軟鏈接的應用場景

  1. 軟件升級

  2. 代碼發布

  3. 不方便移動的目錄

  4. 數據回滾

  5. 程序讀取

硬鏈接:

若一個inode號對應多個文件名,則稱這些文件為硬鏈接。換句話說,硬鏈接就是同一個文件使用了多個別名

特性

  1. 硬鏈接文件,不會受到原文件的影響

  2. 所有硬鏈接文件的inode號與源文件相同

  3. 修改一個文件,其他文件都會改變

  4. 不允許給目錄創建硬鏈接5.默認情況下,新創建的目錄,有兩個硬鏈接,一個是目錄本身,一個是該目錄下的.目錄

1)創建命令不同
    軟鏈接:ln -s
    硬鏈接:ln
    
2)目錄不能創建硬鏈接,並且硬鏈接不可以跨越系統的分區,軟鏈接可以

3)硬鏈接文件與源文件inode相同,軟鏈接文件與源文件inode不同

4)刪除軟鏈接文件,對源文件無影響,但是刪除軟鏈接源文件對軟鏈接文件有影響

5)刪除硬鏈接文件,對源文件也無影響,並且刪除源文件,對硬鏈接文件也無影響

拓展:企業面試題

當前磁盤空間還剩余500G,但是就無法往里面寫入數據,報錯,磁盤空間滿了

回答:
1.首先磁盤存儲被划分為兩塊
inode:存儲文件的元數據
block:存儲文件的真實數據

2.在問題當中剩余500G,這500G指的是block

3.應該是inode被占滿了

4.這種情況,一般是系統中,小文件太多導致的

5.找到系統中的小文件(沒用的),並刪除


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM