1.10.1標準
現在のBashと以後の子processについて、open file descriptor数のsoft limitだけを2048へ設定する。
hard limitは変更しない。
適切なコマンドはどれか。
× 不正解
ulimit -S -n VALUEはopen file descriptor数のsoft limitだけを設定し、hard limitを維持する。
詳細解説
誤り
ulimit -H -n 2048-Hはhard limitを対象にする。
-Hによりhard limitを変更し、softだけという要件に合わない。
正しい
ulimit -S -n 2048soft open-file limitを2048へ設定する。
-S・-n・2048でsoft open-file limitだけを指定する。
誤り
ulimit -S -u 2048soft limitだが対象はuser process数である。
soft limitの指定だが-uはprocess数を対象にする。
誤り
ulimit -S -n値を省略するとsoft limitを表示するだけである。
値がないためsoft open-file limitの参照だけになり、2048へ設定しない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash -c 'hard=$(ulimit -H -n); current=$(ulimit -S -n); target=$((current < 2048 ? current : 2048)); ulimit -S -n "$target"; printf "soft=%s hard=%s
" "$(ulimit -S -n)" "$(ulimit -H -n)"'期待される結果
softは安全に設定した値、hardは変更前と同じ値理解のポイント
- -Sはsoft
- -Hはhard
- softはhardを超えられない
確認時の注意
- 確認環境: Bash 5.x / 短命な子shell内のみ
- 検証では環境のhard limitを超えない値へ自動調整する。
基礎のおさらい
変更可能範囲
一般userはsoftをhard以下で調整できるが、hardを引き上げるには権限が必要である。
適用範囲
ulimitはcurrent shellと子processへ作用し、既に動く別processへ遡って適用しない。
問題IDKL-102-1128
確認環境Bash 5.x / 短命な子shell内のみ
最終技術確認2026-08-13
誤り・権利侵害を報告