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アーキテクチャがサポートする場合にメモリ状態を設定する
choomout-of-memory killer のスコアを表示または調整する
chrtスケジューリングポリシーと優先度を調査または設定する
chshユーザーのログインシェルを変更する
col逆改行をフィルタリングする
colcrtnroff の重ね打ちをフィルタリングする
colrm行から指定した列を削除する
column入力を列またはテーブルに整形する
ctrlaltdelCtrl-Alt-Del の処理を設定する
delpartカーネルからパーティションを削除する
dmesgカーネルリングバッファを出力または制御する
ejectリムーバブルメディアデバイスを排出または閉じる
enosys未実装システムコールエラーを返す
exch2 つのファイルをアトミックに交換する
fadviseファイルアクセスパターンを事前宣言する
fallocateファイル領域を割り当てる
fdiskパーティションテーブルを操作する
fincoreファイル内のキャッシュ済みページ数を数える
findfsラベルまたは UUID でブロックデバイスを検索する
findmntマウント済みファイルシステムを一覧表示する
flockアドバイザリーファイルロックを取得する
fsckファイルシステムを検査して修復する
fsck.cramfscramfs ファイルシステムを検査する
fsck.minixMinix ファイルシステムを検査する
fsfreezeファイルシステムを凍結または凍結解除する
fstrim未使用のファイルシステムブロックを破棄する
getoptシェルスクリプトでコマンドラインオプションを解析する
hardlink重複ファイルをハードリンクで検索または置換する
hexdumpファイル内容を 16 進数で表示する
hwclockハードウェアクロックを照会または設定する
i386i386 パーソナリティでプログラムを実行する
ioniceI/O スケジューリング優先度を取得または設定する
ipcmkSystem V IPC オブジェクトを作成する
ipcrmSystem V IPC オブジェクトを削除する
ipcsSystem V IPC の状態を表示する
irqtop割り込み使用状況を表示する
isosizeISO-9660 イメージのサイズを報告する
killプロセスにシグナルを送信する
lastwtmp からログイン履歴を表示する
lastbbtmp からログイン失敗履歴を表示する
lastlog2lastlog2 データベースを照会または更新する
ldattachシリアルデバイスにラインディシプリンを接続する
linux3232 ビットパーソナリティでプログラムを実行する
linux6464 ビットパーソナリティでプログラムを実行する
loggerシステムログにメッセージを書き込む
loginユーザーのログインセッションを開始する
look文字列で始まる行を表示する
losetupループデバイスを管理する
lsblkブロックデバイスを一覧表示する
lsclocks利用可能なクロックを一覧表示する
lscpuCPU アーキテクチャ情報を表示する
lsfd開いているファイルディスクリプターを一覧表示する
lsipcSystem V IPC 情報を表示する
lsirq割り込み情報を一覧表示する
lslocksローカルシステムのロックを一覧表示する
lslogins既知のユーザーを表示する
lsmemメモリ範囲を一覧表示する
lsns名前空間を一覧表示する
mcookieマジッククッキーを生成する
mesg端末への書き込み権限を制御する
mkfsファイルシステムを構築する
mkfs.bfsSCO BFS ファイルシステムを構築する
mkfs.cramfs圧縮 ROM ファイルシステムを構築する
mkfs.minixMinix ファイルシステムを構築する
mkswapスワップ領域を作成する
moreテキストをページング表示する
mountファイルシステムを接続する
mountpointパスがマウントポイントかどうかを検査する
nameiパスの各コンポーネントを解決する
newgrp別のグループでシェルを開始する
nologin対話型ログインを拒否する
nsenter既存の名前空間でプログラムを実行する
partxディスクパーティションをカーネルに通知する
pgテキストをページング表示する
pipeszパイプバッファーサイズを調査または設定する
pivot_rootルートファイルシステムを変更する
prlimitプロセスのリソース制限を取得または設定する
readprofileカーネルのプロファイリング情報を読み取る
rename置換を使用してファイル名を変更する
reniceプロセスのスケジューリング優先度を変更する
resizepartパーティションエントリのサイズを変更する
rev各行の文字を反転する
rfkill無線デバイスの状態を照会または変更する
rtcwakeRTC ウェイクアラームを使用してサスペンドに入る
runuser別のユーザーとしてコマンドを実行する
scriptサブシェルの端末セッションを記録する
scriptlive記録済み端末セッションをストリーム配信する
scriptreplay記録済み端末セッションを再生する
setarch実行パーソナリティを変更する
setpgidプロセスグループ識別子を設定する
setpriv選択した権限でプログラムを実行する
setsid新しいセッションでプログラムを実行する
setterm端末属性を制御する
sfdiskスクリプト対応パーティションテーブルエディター
su別のユーザーとしてシェルを実行する
suloginシングルユーザーモードのログイン
swaplabelスワップラベルを表示または変更する
swapoffスワップデバイスまたはファイルを無効にする
swaponスワップデバイスまたはファイルを有効にする
switch_root新しいルートファイルシステムに切り替える
tasksetCPU アフィニティを取得または設定する
tunelpパラレルポートプリンターのパラメーターを設定する
uclampset利用率クランプを取得または設定する
ulバックスペースでテキストに下線を付ける
umountマウント済みファイルシステムを切り離す
uname26Linux 2.6 パーソナリティでプログラムを実行する
unshare新しい名前空間でプログラムを実行する
utmpdumputmp または wtmp の記録をダンプする
uuiddUUID 生成デーモンを実行する
uuidgenUUID を生成する
uuidparseUUID を解析して表示する
vigrgroup または gshadow を安全に編集する
vipwpasswd または shadow を安全に編集する
waitpid子プロセスを待機する
wallログイン中のユーザーにメッセージを書き込む
wdctlウォッチドッグデバイスの状態を表示する
whereisバイナリ、ソース、マニュアルファイルを検索する
wipefsファイルシステムまたはパーティションのシグネチャを消去する
write別の端末にメッセージを送信する
x86_64x86-64 パーソナリティでプログラムを実行する
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 は実行コンテキストに影響します。名前空間やアフィニティを変更しても権限は付与されません。プロセスが実行できる操作は、引き続きケーパビリティ、ユーザーマッピング、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 で閲覧・コメントする(投稿にはログインが必要です)