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 | out-of-memory killer のスコアを表示または調整する |
chrt | スケジューリングポリシーと優先度を調査または設定する |
chsh | ユーザーのログインシェルを変更する |
col | 逆改行をフィルタリングする |
colcrt | nroff の重ね打ちをフィルタリングする |
colrm | 行から指定した列を削除する |
column | 入力を列またはテーブルに整形する |
ctrlaltdel | Ctrl-Alt-Del の処理を設定する |
delpart | カーネルからパーティションを削除する |
dmesg | カーネルリングバッファを出力または制御する |
eject | リムーバブルメディアデバイスを排出または閉じる |
enosys | 未実装システムコールエラーを返す |
exch | 2 つのファイルをアトミックに交換する |
fadvise | ファイルアクセスパターンを事前宣言する |
fallocate | ファイル領域を割り当てる |
fdisk | パーティションテーブルを操作する |
fincore | ファイル内のキャッシュ済みページ数を数える |
findfs | ラベルまたは UUID でブロックデバイスを検索する |
findmnt | マウント済みファイルシステムを一覧表示する |
flock | アドバイザリーファイルロックを取得する |
fsck | ファイルシステムを検査して修復する |
fsck.cramfs | cramfs ファイルシステムを検査する |
fsck.minix | Minix ファイルシステムを検査する |
fsfreeze | ファイルシステムを凍結または凍結解除する |
fstrim | 未使用のファイルシステムブロックを破棄する |
getopt | シェルスクリプトでコマンドラインオプションを解析する |
hardlink | 重複ファイルをハードリンクで検索または置換する |
hexdump | ファイル内容を 16 進数で表示する |
hwclock | ハードウェアクロックを照会または設定する |
i386 | i386 パーソナリティでプログラムを実行する |
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 ビットパーソナリティでプログラムを実行する |
linux64 | 64 ビットパーソナリティでプログラムを実行する |
logger | システムログにメッセージを書き込む |
login | ユーザーのログインセッションを開始する |
look | 文字列で始まる行を表示する |
losetup | ループデバイスを管理する |
lsblk | ブロックデバイスを一覧表示する |
lsclocks | 利用可能なクロックを一覧表示する |
lscpu | CPU アーキテクチャ情報を表示する |
lsfd | 開いているファイルディスクリプターを一覧表示する |
lsipc | System V IPC 情報を表示する |
lsirq | 割り込み情報を一覧表示する |
lslocks | ローカルシステムのロックを一覧表示する |
lslogins | 既知のユーザーを表示する |
lsmem | メモリ範囲を一覧表示する |
lsns | 名前空間を一覧表示する |
mcookie | マジッククッキーを生成する |
mesg | 端末への書き込み権限を制御する |
mkfs | ファイルシステムを構築する |
mkfs.bfs | SCO BFS ファイルシステムを構築する |
mkfs.cramfs | 圧縮 ROM ファイルシステムを構築する |
mkfs.minix | Minix ファイルシステムを構築する |
mkswap | スワップ領域を作成する |
more | テキストをページング表示する |
mount | ファイルシステムを接続する |
mountpoint | パスがマウントポイントかどうかを検査する |
namei | パスの各コンポーネントを解決する |
newgrp | 別のグループでシェルを開始する |
nologin | 対話型ログインを拒否する |
nsenter | 既存の名前空間でプログラムを実行する |
partx | ディスクパーティションをカーネルに通知する |
pg | テキストをページング表示する |
pipesz | パイプバッファーサイズを調査または設定する |
pivot_root | ルートファイルシステムを変更する |
prlimit | プロセスのリソース制限を取得または設定する |
readprofile | カーネルのプロファイリング情報を読み取る |
rename | 置換を使用してファイル名を変更する |
renice | プロセスのスケジューリング優先度を変更する |
resizepart | パーティションエントリのサイズを変更する |
rev | 各行の文字を反転する |
rfkill | 無線デバイスの状態を照会または変更する |
rtcwake | RTC ウェイクアラームを使用してサスペンドに入る |
runuser | 別のユーザーとしてコマンドを実行する |
script | サブシェルの端末セッションを記録する |
scriptlive | 記録済み端末セッションをストリーム配信する |
scriptreplay | 記録済み端末セッションを再生する |
setarch | 実行パーソナリティを変更する |
setpgid | プロセスグループ識別子を設定する |
setpriv | 選択した権限でプログラムを実行する |
setsid | 新しいセッションでプログラムを実行する |
setterm | 端末属性を制御する |
sfdisk | スクリプト対応パーティションテーブルエディター |
su | 別のユーザーとしてシェルを実行する |
sulogin | シングルユーザーモードのログイン |
swaplabel | スワップラベルを表示または変更する |
swapoff | スワップデバイスまたはファイルを無効にする |
swapon | スワップデバイスまたはファイルを有効にする |
switch_root | 新しいルートファイルシステムに切り替える |
taskset | CPU アフィニティを取得または設定する |
tunelp | パラレルポートプリンターのパラメーターを設定する |
uclampset | 利用率クランプを取得または設定する |
ul | バックスペースでテキストに下線を付ける |
umount | マウント済みファイルシステムを切り離す |
uname26 | Linux 2.6 パーソナリティでプログラムを実行する |
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 パーソナリティでプログラムを実行する |
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/exampleutil-linux が情報を追加するとデフォルト出力は変わるため、スクリプトでは列を明示してください。サポートされている場合は --json、--pairs、--raw を優先し、人間向けの診断メッセージを解析する場合は LC_ALL=C を設定します。整列されたデフォルトテーブルを安定したインターフェースとして解析してはなりません。
fdisk、cfdisk、sfdisk はパーティションテーブルを変更します。sfdisk --dump で現在のレイアウトを保存し、書き込み前にサイズ、モデル、シリアル番号、安定したパスでデバイスを検証してください。意図したテーブル変更後に、partx はパーティションマッピングの追加または削除をカーネルに要求します。ディスク上のテーブル自体は編集しません。mkswap はスワップ領域を準備し、swapon が有効化し、swapoff が無効化します。
unshare、nsenter、setpriv、runuser、setarch、taskset は実行コンテキストに影響します。名前空間やアフィニティを変更しても権限は付与されません。プロセスが実行できる操作は、引き続きケーパビリティ、ユーザーマッピング、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 で閲覧・コメントする(投稿にはログインが必要です)