[Linux] 用 readlink/realpath 找出 symbolic link file 真正指向的目錄/檔案

[Linux] 用 readlink/realpath 找出 symbolic link file 真正指向的目錄/檔案

最近在查一個 Linux 磁碟空間爆掉的問題,

很自然的先用 df 看一下目前的狀況,可以看到 /opt 已經爆掉了,完全沒有空間:

testuser@localhost ~ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper-root           7.8G  4.0G  3.4G  55% /
/dev/mapper-app_bin         20G   20G     0 100% /opt
/dev/mapper-app_data       325G   36G  274G  12% /var/app_data

 

但吊詭的是,程式寫入一個叫 /opt/data/temp 的目錄下去,

卻完全不受這個磁碟空間的問題影響:

testuser@localhost ~ ll /opt/data/temp
lrwxrwxrwx 1 root root 23 May 31  2016 /opt/data/temp -> /var/app_data/temp/

 

原來是因為這個 /opt/data/temp 是個 symbolic link,

因此實際指向的路徑並不在 /opt 底下…

要看 symbolic link 實際指到的路徑,可以用 readlink -f <path>:

testuser@localhost ~ readlink -f /opt/data/temp
/var/app_data/temp

 

或是直接用 realpath <path> 指令 (但 realpath 這指令在部分 Linux 上不支援):

testuser@localhost ~ realpath /opt/data/temp
/var/app_data/temp

 

得知真正指向的目錄後,就可以再去對照 df 的結果,

可以發現 /var/app_data 這個掛載點還有很大的空間,因此寫入檔案進去是沒有問題的囉~

 

參考資料:stackoverflow: How to see full symlink path

(本頁面已被瀏覽過 7,646 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料