[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,839 次)