---
title: "Linux 系統管理慣例 - 目錄及檔案"
tags: sysadm
lang: zh-TW
---
## 目錄及檔案
目錄及檔案的放置慣例,如沒有特別說明,均以 [Filesystem Hierarchy Standard](https://www.pathname.com/fhs) 為準則,並補充說明如下:
### `/opt`
`/opt` 存放「僅限本機使用」之第三方套裝軟體 (包括與系統管理相關的應用軟體),且應放在單一目錄下。
例如:`/opt/zabbix`、`/opt/ekran`、……。
其與 `/work` 目錄下應用軟體的最大區別,在不掛載其它的檔案系統的情況下,`/opt` 裡的套裝軟體仍可順利運作。
### `/pkg`
`/pkg` 是一個 symblic link,連到 `/work/pkg`。
### `/root`
`/root` 應盡可能的「淨空」,。
- `/rool/.local` 通常在 `$PATH` 的位置比 `/usr/local/{bin,sbin}` 更前,所以常用來存放一些「臨時性」或「測試性」的工具或軟體,也因此部分工具名稱可能與登入節點 `/usr/local/{bin,sbin}` 相同。
- `/rool/log` 存放系統管理日誌 (log)。\
注意:請不要將系統管理日誌放到 `/work` 下,這會導致未掛載 `/work` 時發生錯誤或 hang 住。
- `/root/Download` 存放「臨時」下載的檔案,例如:待試軟體、說明文件、……。
- `/root/work` 見以下 [`/work`](#work) 之說明。
### `/tmp`
`/tmp` 請盡可能的「淨空」,並定期檢查是否被塞滿。
### `/usr/local`
`/usr/local` 在「非」登入節點:請盡可能的「淨空」。
但在登入節點...
- `/usr/local/src` 存放「長期保存」的下載檔案,例如:應用軟體、原始碼、……
- `/usr/local/bin` 存放使用者會用到的命令稿 (script) 或「落單」的二進制 (binary) 執行檔
- `/usr/local/sbin` 存放系統管理相關的命令稿 (script) 或「落單」的二進制 (binary) 執行檔
- `/usr/local/share/doc` 存放說明文件,文件格式以純文字 (例如:text、Markdown、ReST、HTML、……) 或 PDF/ePUB 為主
### `/work`
`/work` 通常為外掛之平行檔案系統,因此在系統規劃時,必須確保主機在未掛上 `/work` 的情況下,仍可順利運作。
- `/work/USER` 為使用者 USER 之工作目錄。\
通常會在 USER 的家目錄,建一個 `~USER/work` 的 symblic link 連到這裡。
- `/work/pkg` 為整套主機共用之軟體目錄,一般透過 Environment Modules 來管理。
- `/work/pkg/license` 存放 PACKAGE 之授權檔案`
- `/work/pkg/OS_VER` 存放 OS_VER 版之 PACKAGE,\
`OS_VER` 之值為 `$(. /etc/os-release && echo "$ID")-$(. /etc/os-release && echo "$VERSION_ID")`。
- `/work/pkg/OS_VER/bin/PACKAGE` 存放 OS_VER 版本之 PACKAGE 執行檔及 runtime environment。
- `/work/pkg/OS_VER/mod/PACKAGE` 存放 OS_VER 版本之 PACKAGE 的 module 檔案。
- `/work/pkg/OS_VER/src/PACKAGE` 存放 OS_VER 版本之 PACKAGE 原始檔或二進制 archive 檔案。
- `/work/pkg/OS_VER/var/PACKAGE` 存放 OS_VER 版本之 PACKAGE 安裝及編譯的 script。
例如:
``` !
# /work/pkg/作業系統/mod/編譯軟體名稱/編譯軟體版本/套裝軟體名稱/套裝軟體版本
/work/pkg/rhel-8.9/mod/gcc/8.5.0/mkl/2018.1.163
# /work/pkg/作業系統/mod/編譯軟體名稱/編譯軟體版本/套裝軟體名稱/套裝軟體版本
/work/pkg/rhel-8.9/bin/gcc/8.5.0/mkl/2018.1.163/...
```