1.02.3標準
dataとdata-backupは同じ通常ファイルへのハードリンクで、リンク数は2である。
rm dataを実行する。
実行後のdata-backupについて適切なのはどれか。
× 不正解
rmは指定名をinodeから外す。別のハードリンク名が残る限りinodeと内容は存続し、リンク数が1減る。
詳細解説
誤りリンク切れとなり内容を読めない
ハードリンクはパス文字列を参照する仕組みではなく、残る名前が同じinodeを参照する。
誤り。data-backupはdataというパスを格納したリンクではなく、同じinodeを直接参照する別名なのでリンク切れにならない。
正しい同じ内容を引き続き読め、リンク数は1になる
dataという名前だけが外れ、data-backupからinodeと内容へ到達できる。
正しい。dataのディレクトリエントリだけが除かれ、data-backupが残るため内容を読めてリンク数は1になる。
誤り自動的にシンボリックリンクへ変換される
リンク種別は自動変換されず、data-backupはハードリンクのままである。
誤り。rmはリンク種別を変換せず、残ったdata-backupは引き続き同じinodeへのハードリンク名である。
誤り内容は別inodeへ自動コピーされる
削除時に複製は行われず、既存inodeへのリンク数だけが減る。
誤り。inodeや内容を別の場所へコピーする処理はなく、同じinodeへの参照数が減るだけである。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); printf payload >"$tmp/data"; ln "$tmp/data" "$tmp/data-backup"; rm "$tmp/data"; printf '%s %s\n' "$(cat "$tmp/data-backup")" "$(stat -c '%h' "$tmp/data-backup")"; rm -rf "$tmp"期待される結果
payload 1理解のポイント
- rmは名前を外す
- 残るhard linkで内容は存続
- link countが減る
確認時の注意
- 確認環境: Linux / GNU coreutils 9.x / 一時ファイル
基礎のおさらい
unlink
ファイル名の削除は名前からinodeへの対応を外す操作として捉えられる。
データ解放
一般にハードリンク数が0になり、開いている参照もなくなった後にデータ領域が解放される。
問題IDKL-101-415
確認環境Linux / GNU coreutils 9.x / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告