ulimit -n
デフォルトでソフト制限を設定します。-H
ハード制限を表示/設定するオプションを追加できます。
ほとんどの場合、ソフト制限とハード制限は次のように動作します。
- rootのプロセス(実際には、を使用するプロセス
CAP_SYS_RESOURCE
)は、プロセスの制限を増減できます。
- ユーザーのプロセスは、そのユーザーが所有する他のプロセスの制限を下げる可能性があります。
- ユーザーのプロセスは、そのユーザーが所有するプロセスのソフト制限をハード制限まで引き上げることができます。
- プロセスがソフト制限を超えようとすると、その試みは失敗します。
したがって、ハードリミットはソフトリミットの上限として機能します(通常は何でもできるrootを除く)。
例外があります。ソフトCPU制限がSIGXCPU
信号を送信します。プロセスは、それを無視するか、クリーンアップなどに時間を費やすかを選択できます。ハードCPU制限を超えると、カーネルは送信します。SIGKILL
これは、キャッチ、処理、または無視できません。したがって、この場合、ソフトリミットは「CPU時間を超えています。終了してすぐに終了するか、またはその他の警告です」という警告として機能します。ハードリミットは「その他」です。
ほとんどはプロセスごとですが、一部(などRLIMIT_NPROC
)はユーザーごとです。getrlimit(2)各制限のマニュアルページの指定。