はじめに
ulimit
は、システムリソース量の表示または制限を可能にする組み込みのLinuxシェルコマンドです。 個々のユーザーが消費します。リソースの使用を制限することは、複数のユーザーとシステムパフォーマンスの問題がある環境で役立ちます。
このチュートリアルでは、 ulimit
の使用方法を学習します Linuxでのコマンドと例。
前提条件
- Linuxを実行しているシステム
- 端末へのアクセス
- sudo特権
Limits.confとは何ですか?
Limits.conf fileは、システムリソース割り当て設定を定義する構成ファイルです ulimit
を使用します。構成ファイルへのフルパスは/etc/security/limits.confです。 。
ファイルの値の変更は、システムの再起動後も持続します。 Limits.conf を編集するには、スーパーユーザーの権限が必要です ファイル。
Limits.confの最初のセクション ファイルは次のようになります:
Linuxでのulimit、Soft Limit、およびHardLimitの説明
次のセクションでは、 ulimit
について説明します。 構文と2つのリソース制限タイプの違い-ソフト制限 およびハードリミット 。
ulimit構文
ulimit
コマンドは次の一般的な構文を取ります:
ulimit [flags][limit]
たとえば、物理メモリサイズをキロバイト単位で設定するには、次のように入力します。
ulimit -m 15000
フラグ
ulimit
を使用します さまざまなシステムリソースの個々の値を表示または制限するためのフラグ。 [limit]
の場合 が指定されている場合、それは指定されたリソースの新しい値です。
使用可能なフラグは次のとおりです。
フラグ | 説明 |
---|---|
-H | ハードリミット 指定されたリソースに対して。ルートユーザーのみがハード制限を引き上げることができ、どのプロセスでもハード制限を下げることができます。 |
-S | ソフト制限 指定されたリソースに対して。どのプロセスでもソフト制限を変更できます。 |
-a | 現在のすべてのリソース制限を一覧表示します。 |
-b | 最大ソケットバッファサイズ。 |
-c | コアダンプサイズ。512バイトのブロック数で表されます。 |
-d | データ領域のサイズ(キロバイト単位)。 |
-e | プロセススケジューリングの優先度が最も高い(良い)。 |
-f | [limit] を使用する場合のファイルサイズの制限(ブロック単位) パラメータ。 [limit] を指定しない ファイルサイズの制限を報告するようにコマンドに指示します。 |
-i | 保留中の信号数の制限。 |
-k | キュー割り当て数の制限。 |
-l </ code> | メモリにロックできる最大サイズ。 |
-m | 物理メモリサイズ(キロバイト単位)。 |
-n | プロセスが持つことができるファイル記述子の最大数。 |
-p | パイプバッファサイズ。 |
-P | 疑似端末の最大数。 |
-q | POSIXメッセージキューの最大バイト数。 |
-r | プロセスが持つことができるスレッドの最大数。 |
-R | マイクロ秒単位で表される最大プロセス実行時間。 |
-s | スタックサイズ(キロバイト単位)。 |
-t | プロセスの最大実行時間を秒単位で指定します。 |
-T | スレッド数の制限。 |
-u | ユーザーが作成できるプロセスの数を指定します。 |
-v | プロセスで使用可能な最大仮想メモリ。 |
-x | ファイルロックの最大数。 |
[limit]
パラメータ
[limit]
を追加する 指定されたリソースの新しい値を渡します。省略した場合、 -H
を指定しない限り、コマンドは指定されたリソースの現在のソフト制限値を出力します。 フラグ。
-H
のどちらでもない場合、制限はソフト制限とハード制限の両方に適用されます また、 -S
フラグが指定されています。
終了値
ulimit
コマンドには2つの終了値があります:
-
0
。正常に完了したことを示します。 -
> 0
。上限のリクエストが拒否されたか、エラーが発生しました。
ソフトリミット
ソフトリソース制限は、対応するリソースに対してカーネルによって適用される値です。ソフト制限はすべてのユーザーが管理でき、その最大値はハード制限を超えることはできません。ハード制限は、ソフト制限の上限として機能します。
現在のユーザーの詳細なソフト制限を表示するには、次のコマンドを実行します。
ulimit -Sa
ハードリミット
ハードリソース制限は、ユーザーの物理リソース制限を定義します。同時に、ハードリミットはソフトリミットの最大値です。 rootユーザーのみがハード制限を変更できます 。
現在のユーザーの詳細なハード制限を表示するには、次のコマンドを実行します。
ulimit -Ha
ulimitの使用方法
ulimit
を実行します ターミナルにコマンド名を入力してコマンドを実行します:
ulimit
出力には、現在のユーザーがアクセスできるリソース量が表示されます。この例では、ユーザーは無制限のシステムリソースを持っています。個々のリソース制限を表示または設定するには、利用可能な ulimit
を使用します フラグ。
次のセクションでは、 ulimit
の最も一般的な使用法を示します。 コマンド。
詳細な制限レポート
-a
を指定して、現在のユーザーのすべてのリソース制限を含む詳細なレポートを取得します フラグ:
ulimit -a
出力には、現在のユーザーのリソース制限に関する詳細なレポートが含まれます。
プロセス番号の制限
-u
を指定して、ユーザーの最大プロセス数を制限します フラグとプロセス数。
たとえば、プロセス数を10に制限します:
ulimit -u 10
ユーザーあたりの最大プロセス数を制限すると、ユーザーはシステムのすべてのリソースを使い果たすことができなくなります。プロセス数を制限することで、フォーク爆弾などの潜在的な攻撃の悪影響も防ぐことができます。
例:
上記の例では、最初にプロセス数を10に制限し、次にフォーク爆弾を実行しました。そうしないと、フォーク爆弾がすべてのリソースを使い果たし、システムが応答しなくなります。
ファイルサイズの制限
-f
フラグは、ユーザーが作成できる最大ファイルサイズを設定します。たとえば、次のコマンドはファイルサイズを50KBに制限します。
ulimit -f 50
より大きなファイルを作成して、制限が機能するかどうかをテストします。たとえば、catコマンドを使用して / dev / zeroをリダイレクトしました 50KBよりはるかに大きいファイルへの出力:
出力には、ファイルサイズの制限を超えたことが示されます。次のコマンドを実行してファイルサイズを確認します:
ls -lh file
lsコマンドの出力は、ファイルサイズが正確に50KBであることを示しています。これは、以前に設定した制限です。
最大仮想メモリの制限
-v
を使用します プロセスで使用可能な最大仮想メモリ量を設定するフラグ。プロセスの仮想メモリを制限すると、プロセスがすべてのメモリを使い果たすのを防ぎ、スラッシングを防ぎます。
たとえば、次のコマンドは、プロセスで使用可能な仮想メモリを1000KBに制限します。
ulimit -v 1000
開いているファイルの数を制限する
-n
フラグは、同時に開くファイル(ファイル記述子)の数を制限します。次の例では、開いているファイルの数を5に設定します。
ulimit -n 5
これをテストするために、複数のテキストファイルを開こうとしますが、エラーが発生します:
limits.confファイルを編集してソフト制限またはハード制限を変更
ソフト制限またはハード制限を変更するには、 Limits.confの値を編集します ファイル。
以下の手順に従ってください:
1.ターミナルウィンドウを開き、ディレクトリを / etc / security
に変更します。 :
cd /etc/security
2. Limits.confを開きます vimエディターなどのテキストエディターを使用してファイルを作成します。
vim limits.conf
3.既存のエントリを編集するか、新しいエントリを追加して、制限値を変更します。各制限エントリには4つの部分があります:
-
*
または%
。 -
soft
またはhard
。 -
-
例:
設定ファイルを編集するときは、必ずその行のコメントを外してください。