Directory

一個文件夾的連結數不能反映真實狀態?

  • May 9, 2019

ls命令問題。

root@cqcloud script]# ls /var/www/html -la 
total 36 
drwxr-xr-x  9 root root 4096 Aug 31 01:12 .
drwxr-xr-x  7 root root 4096 Aug 31 01:10 ..
drwxr-xr-x  2 root root 4096 Aug 26 04:07 cmd
drwxr-xr-x  5 root root 4096 Jul  3 10:07 cn.fnmili.com
drwxr-xr-x  7 root root 4096 Aug 30 11:42 internal
drwxr-xr-x  3 root root 4096 Jul 25 02:03 node
drwxr-xr-x  4 root root 4096 Jul 11 01:26 sandbox
drwxr-xr-x 13 root root 4096 Aug 26 03:45 tpshop
drwxr-xr-x  2 root root 4096 Aug 31 01:12 trash

[root@cqcloud script]# ls /var/www/html/cmd -la 
total 16 
drwxr-xr-x 2 root root 4096 Aug 26 04:07 . 
drwxr-xr-x 9 root root 4096 Aug 31 01:12 .. 
-rw-r--r-- 1 root root 52 Aug 26 04:07 .htaccess 
-rw-r--r-- 1 root root 73 Aug 26 04:02 df.php

您可以看到該cmd文件夾的連結數為 2,但它實際上有 4 個連結,包括 2 個文件...文件夾。誰能解釋為什麼?

目錄的連結計數是目錄具有的名稱數(這與正常文件一樣)。

您的cmd目錄有兩個名稱:

  1. cmd在其父目錄中。
  2. .在目錄本身。

/var/www/html目錄有九個名稱:

  1. html在其父目錄中。
  2. .在自身。
  3. ..在它的每個(七個)子目錄中。

在正常情況下,目錄條目的連結數.應該是 2 加上它包含的子目錄數。


根目錄也是如此/,即使它沒有父目錄,因此連結計數應該1加上子目錄的數量。

它所擁有的一個..目錄,可將您帶回到/. 這樣就解決了這個謎題;它/..提供了“額外”連結到/. 這是唯一的目錄,其..目錄是指向..

引用自:https://unix.stackexchange.com/questions/389330