← Systems Foundations

LINUX CORE · 81

Linux Filesystem / CLI:Path、Current Directory、File Metadata

Server debugging 常從 filesystem 開始:程式在哪、config 在哪、log 在哪、目前 shell 位於哪個 directory、這個 path 是 absolute 還是 relative。Path model 不清楚,後面 service/network debug 會一直迷路。

Learning outcomes

1. Filesystem tree

/
├─ home/
├─ etc/
├─ var/
├─ usr/
└─ tmp/

/ 是 filesystem root,不是 user home。一般 user home 常像 /home/anson。

2. Absolute vs Relative

/var/log/app.log
./config.json
../shared/data.json

Relative path 由 current directory 解讀;同一 command 在不同 cwd 可能指向完全不同檔案。

3. 基本觀察 commands

pwd
ls -la
cd /var/log
cat app.log
find . -name "*.log"

先觀察再修改。Server 上的 command 更應該避免一開始就 rm/chmod/chown。

4. Hidden file 與 metadata

ls -la

開頭為 dot 的檔案通常不會在普通 ls 顯示;-l 也能看到 owner、group、permission、size、mtime 等 evidence。

5. Symlink 是另一層 path indirection

lrwxrwxrwx current
  -> releases/2026-10-03

你看到的 path 可能是 symbolic link。Deploy/release 常用 symlink 切換 current version。

Project checkpoint:Server Workspace v1

建立一個模擬 server tree,找到 app、config、log、current symlink,並記錄每個 path 的 absolute location。

/srv/course-api/
  current -> releases/42
  releases/42/
  shared/config/
  shared/logs/

Debug evidence:程式說找不到 config

  1. process cwd 是哪裡?
  2. config path 是 absolute 還 relative?
  3. symlink 最後指去哪?
  4. 檔案真的存在且 process 可讀嗎?

Knowledge check

  1. / 與 ~ 差在哪?
  2. relative path 依什麼 context 解讀?
  3. symlink 為何可能讓你「看錯版本」?
  4. 用 pwd/ls/find 找出一個模擬 config path。