util-linux

最後更新: 2023-03-12 17:53:21 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

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 可以在不變更儲存裝置的情況下檢查其狀態:

sh
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 原則決定。

sh
unshare --user --map-root-user --mount-proc sh
nsenter --target "$pid" --mount --uts --ipc --net --pid
script --log-out session.typescript --log-timing session.timing

nsenter 會加入現有程序所使用的選定命名空間,因此需要具備檢查並進入這些命名空間的權限。非特權使用者命名空間中 unshare 的可用性由核心與本機安全原則控制。

script、scriptreplay 與 scriptlive 可以擷取終端機工作階段。記錄的輸入可能包含憑證或其他機密,因此檔案需要採用與其內容相符的存取控制。

評論

在 GitHub 上閱讀或評論(發表評論需要登入)