util-linux 是一組系統工具集合,由獨立的上游專案維護。它為區塊裝置、掛載、終端機、工作階段、命名空間、資源控制與資料格式化提供介面。發行版可以將工具拆分到不同套件中,因此已安裝的命令取決於套件封裝政策。
操作邊界 #
修改分割區、掛載、交換空間、裝置狀態、程序憑證或命名空間的命令需要適當權限。變更狀態前先檢查狀態,使用 UUID 或 /dev/disk/by-id 等穩定屬性識別裝置,並確認目標未掛載且未被使用中。
此專案涵蓋多個核心介面:
lsblk、blkid、blockdev、fdisk與wipefs檢查 sysfs、裝置 節點、ioctl 與磁碟上的簽章;mount、umount、findmnt與fsfreeze操作 VFS 掛載 API 以及/proc/self/mountinfo;unshare、nsenter、setpriv、prlimit、taskset與chrt設定 程序命名空間、憑證、資源限制、親和性與排程器;agetty、script、setterm與wall操作終端機與登入記錄。
確切的命令集合取決於 util-linux 的建置設定與發行版套件封裝方式。依賴較新的選項前,請使用 command --help、命令的 man 頁面、發行版套件中繼資料,或個別命令的 --version 輸出進行確認。
命令參考 #
| 命令 | 用途 |
|---|---|
addpart | 將分割區加入核心可識別的磁碟表 |
agetty | 開啟終端機線路並啟動登入 |
blkdiscard | 捨棄區塊裝置上的磁區 |
blkid | 尋找或列印區塊裝置屬性 |
blkpr | 管理區塊裝置持久保留 |
blkzone | 管理分區區塊裝置的區域 |
blockdev | 對區塊裝置發出 ioctl 操作 |
cal | 顯示行事曆 |
cfdisk | 互動式分割區表編輯器 |
chcpu | 在架構支援時設定 CPU 狀態 |
chfn | 變更使用者的 finger 資訊欄位 |
chmem | 在架構支援時設定記憶體狀態 |
choom | 顯示或調整記憶體不足終止器分數 |
chrt | 檢查或設定排程原則與優先順序 |
chsh | 變更使用者登入 shell |
col | 篩選反向換行 |
colcrt | 篩選 nroff 重疊列印 |
colrm | 從行中移除選取的欄 |
column | 將輸入格式化為欄或表格 |
ctrlaltdel | 設定 Ctrl-Alt-Del 的處理方式 |
delpart | 從核心移除分割區 |
dmesg | 列印或控制核心環形緩衝區 |
eject | 彈出或關閉可移除媒體裝置 |
enosys | 回傳未實作系統呼叫錯誤 |
exch | 以原子方式交換兩個檔案 |
fadvise | 預先宣告檔案存取模式 |
fallocate | 配置檔案空間 |
fdisk | 操作分割區表 |
fincore | 計算檔案中的快取頁面 |
findfs | 依標籤或 UUID 尋找區塊裝置 |
findmnt | 列出已掛載的檔案系統 |
flock | 取得建議式檔案鎖 |
fsck | 檢查並修復檔案系統 |
fsck.cramfs | 檢查 cramfs 檔案系統 |
fsck.minix | 檢查 Minix 檔案系統 |
fsfreeze | 凍結或解除凍結檔案系統 |
fstrim | 捨棄未使用的檔案系統區塊 |
getopt | 在 shell 指令碼中解析命令列選項 |
hardlink | 尋找重複檔案,或以硬連結取代它們 |
hexdump | 以十六進位顯示檔案內容 |
hwclock | 查詢或設定硬體時鐘 |
i386 | 以 i386 personality 執行程式 |
ionice | 取得或設定 I/O 排程優先順序 |
ipcmk | 建立 System V IPC 物件 |
ipcrm | 移除 System V IPC 物件 |
ipcs | 顯示 System V IPC 狀態 |
irqtop | 顯示中斷使用量 |
isosize | 回報 ISO-9660 映像檔大小 |
kill | 向程序傳送訊號 |
last | 從 wtmp 顯示登入歷程 |
lastb | 從 btmp 顯示登入失敗歷程 |
lastlog2 | 查詢或更新 lastlog2 資料庫 |
ldattach | 將線路規程附加至序列裝置 |
linux32 | 以 32 位元 personality 執行程式 |
linux64 | 以 64 位元 personality 執行程式 |
logger | 將訊息寫入系統記錄 |
login | 開始使用者登入工作階段 |
look | 顯示以字串開頭的行 |
losetup | 管理迴圈裝置 |
lsblk | 列出區塊裝置 |
lsclocks | 列出可用時鐘 |
lscpu | 顯示 CPU 架構資訊 |
lsfd | 列出開啟的檔案描述元 |
lsipc | 顯示 System V IPC 資訊 |
lsirq | 列出中斷資訊 |
lslocks | 列出本機系統鎖 |
lslogins | 顯示已知使用者 |
lsmem | 列出記憶體範圍 |
lsns | 列出命名空間 |
mcookie | 產生 magic cookie |
mesg | 控制終端機寫入權限 |
mkfs | 建立檔案系統 |
mkfs.bfs | 建立 SCO BFS 檔案系統 |
mkfs.cramfs | 建立壓縮 ROM 檔案系統 |
mkfs.minix | 建立 Minix 檔案系統 |
mkswap | 建立交換區域 |
more | 分頁顯示文字 |
mount | 掛載檔案系統 |
mountpoint | 測試路徑是否為掛載點 |
namei | 解析路徑元件 |
newgrp | 以不同群組啟動 shell |
nologin | 拒絕互動式登入 |
nsenter | 在現有命名空間中執行程式 |
partx | 將磁碟分割區資訊告知核心 |
pg | 分頁顯示文字 |
pipesz | 檢查或設定管道緩衝區大小 |
pivot_root | 變更根檔案系統 |
prlimit | 取得或設定程序資源限制 |
readprofile | 讀取核心效能分析資訊 |
rename | 使用替換方式重新命名檔案 |
renice | 調整程序排程優先順序 |
resizepart | 調整分割區項目大小 |
rev | 反轉每一行中的字元 |
rfkill | 查詢或變更無線裝置狀態 |
rtcwake | 使用 RTC 喚醒警報進入暫停狀態 |
runuser | 以其他使用者身分執行命令 |
script | 記錄子 shell 終端機工作階段 |
scriptlive | 串流已記錄的終端機工作階段 |
scriptreplay | 重播已記錄的終端機工作階段 |
setarch | 變更執行 personality |
setpgid | 設定程序群組識別碼 |
setpriv | 使用選定的權限執行程式 |
setsid | 在新工作階段中執行程式 |
setterm | 控制終端機屬性 |
sfdisk | 可由指令碼操作的分割區表編輯器 |
su | 以其他使用者身分執行 shell |
sulogin | 單一使用者模式登入 |
swaplabel | 列印或變更交換空間標籤 |
swapoff | 停用交換裝置或檔案 |
swapon | 啟用交換裝置或檔案 |
switch_root | 切換至新的根檔案系統 |
taskset | 取得或設定 CPU 親和性 |
tunelp | 設定平行埠印表機參數 |
uclampset | 取得或設定使用率限制 |
ul | 使用退格字元為文字加底線 |
umount | 卸載已掛載的檔案系統 |
uname26 | 以 Linux 2.6 personality 執行程式 |
unshare | 在新命名空間中執行程式 |
utmpdump | 傾印 utmp 或 wtmp 記錄 |
uuidd | 執行 UUID 產生精靈 |
uuidgen | 產生 UUID |
uuidparse | 解析並列印 UUID |
vigr | 安全地編輯 group 或 gshadow |
vipw | 安全地編輯 passwd 或 shadow |
waitpid | 等待子程序 |
wall | 向已登入的使用者寫入訊息 |
wdctl | 顯示看門狗裝置狀態 |
whereis | 尋找二進位檔、來源檔與手冊檔 |
wipefs | 清除檔案系統或分割區簽章 |
write | 向另一個終端機傳送訊息 |
x86_64 | 以 x86-64 personality 執行程式 |
zramctl | 設定壓縮 RAM 區塊裝置 |
常見工作流程 #
lsblk --fs、blkid、findmnt 與 mountpoint 可以在不變更儲存裝置的情況下檢查其狀態:
lsblk --json --output NAME,PATH,SIZE,FSTYPE,UUID,MOUNTPOINTS
findmnt --json --output SOURCE,TARGET,FSTYPE,OPTIONS
blkid --probe --usages filesystem /dev/disk/by-id/example由於 util-linux 會加入新的資訊,預設輸出會變更,因此請在指令碼中指定欄位。在支援的情況下,優先使用 --json、--pairs 或 --raw;解析人類可讀的診斷訊息時,請設定 LC_ALL=C。不要將對齊後的預設表格解析為穩定介面。
fdisk、cfdisk 與 sfdisk 會修改分割區表。使用 sfdisk --dump 儲存目前配置,並在寫入前透過大小、型號、序號與穩定路徑驗證裝置。預期的分割區表變更後,partx 會要求核心新增或移除分割區對映;它不會編輯磁碟上的分割區表。mkswap 準備交換區域,接著由 swapon 啟用,並由 swapoff 停用。
unshare、nsenter、setpriv、runuser、setarch 與 taskset 會影響執行內容。變更命名空間或親和性不會授予權限;程序能執行的操作仍由 capabilities、使用者對映與 cgroup 原則決定。
unshare --user --map-root-user --mount-proc sh
nsenter --target "$pid" --mount --uts --ipc --net --pid
script --log-out session.typescript --log-timing session.timingnsenter 會加入現有程序所使用的選定命名空間,因此需要具備檢查並進入這些命名空間的權限。非特權使用者命名空間中 unshare 的可用性由核心與本機安全原則控制。
script、scriptreplay 與 scriptlive 可以擷取終端機工作階段。記錄的輸入可能包含憑證或其他機密,因此檔案需要採用與其內容相符的存取控制。
評論
在 GitHub 上閱讀或評論(發表評論需要登入)