このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

システムリソースの利用制限する:ulimitコマンド

システムリソースの利用制限する:ulimitコマンド

 Linuxシステムでは、複数のユーザーが同時に作業を行うことが一般的です。しかし、特定のユーザーがシステムリソース(メモリ、CPU、ディスクなど)を過剰に消費すると、他のユーザーのパフォーマンスに悪影響を与える可能性があります。これを防ぐために、ulimitコマンドを使用して、各ユーザーが利用できるシステムリソースの上限を設定することができます。これにより、システム全体の安定性と効率を維持することが可能です。

ulimitコマンドの概要

 ulimitコマンドは、シェルやプロセスが使用できるシステムリソースの制限を設定および確認するためのコマンドです。これにより、1人のユーザーがシステムリソースを過度に占有することを防ぎ、他のユーザーへの影響を最小限に抑えることができます。

【構文】
ulimit [オプション] ユーザー名

コマンドの主なオプション

オプション説明
-a設定されているすべてのリソース制限を表示します。
-c サイズコアダンプファイルの最大サイズを指定します(単位:ブロック)。
-f サイズ作成できるファイルの最大サイズを指定します(単位:ブロック)。
-n 数ユーザーが同時にオープンできるファイルディスクリプタの最大数を指定します。
-u 数ユーザーが作成できるプロセスの最大数を指定します。
-v サイズプロセスが使用できる仮想メモリの最大サイズを指定します(単位:KB)。
コマンドの主なオプション

コマンドの使用例と解説

以下に、ulimitコマンドの使用例とその解説を示します。

1.rootユーザーに切り替えます。

・「su -」コマンドを実行します。

user01@ubuntu-vm:~$ su -
パスワード: 
root@ubuntu-vm:~#
2.現在のリソース制限を表示する。

・「ulimit -a」コマンドを実行します。

すべてのリソース制限の現在の設定を表示します。

root@ubuntu-vm:~# ulimit -a
real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 0
data seg size               (kbytes, -d) unlimited
scheduling priority                 (-e) 0
file size                   (blocks, -f) unlimited
pending signals                     (-i) 7506
max locked memory           (kbytes, -l) 249940
max memory size             (kbytes, -m) unlimited
open files                          (-n) 1024
pipe size                (512 bytes, -p) 8
POSIX message queues         (bytes, -q) 819200
real-time priority                  (-r) 0
stack size                  (kbytes, -s) 8192
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) 7506
virtual memory              (kbytes, -v) unlimited
file locks                          (-x) unlimited
3.コアダンプファイルの最大サイズを10MBに設定する。

・「ulimit -c 10240」コマンドを実行します。

 コアダンプファイルのサイズを最大10MBに制限します。サイズはブロック単位(1ブロック=1KB)で指定します。

root@ubuntu-vm:~# ulimit -c 10240
4.作成できるファイルの最大サイズを5MBに設定する。

・「ulimit -f 5120」コマンドを実行します。

 ユーザーが作成できるファイルのサイズを最大5MBに制限します。サイズはブロック単位(1ブロック=1KB)で指定します。

root@ubuntu-vm:~# ulimit -f 5120
5.同時にオープンできるファイルディスクリプタの数を100に制限する。

・「ulimit -n 100」コマンドを実行します。

ユーザーが同時にオープンできるファイルディスクリプタの数を100に制限します。

root@ubuntu-vm:~# ulimit -n 100
6.ユーザーが作成できるプロセスの数を50に制限する。

・「ulimit -u 50」コマンドを実行します。

ユーザーが同時に作成できるプロセスの数を50に制限します。

root@ubuntu-vm:~# ulimit -u 50

コマンドの使用例で設定した内容を初期値に戻す。

1.コアダンプファイルの最大サイズを0KBに戻す

・「ulimit -c 0」コマンドを実行します。

コアダンプファイルのサイズを0KBにします。※環境によって初期値が異なる可能性があります。

root@ubuntu-vm:~# ulimit -c 0
2.作成できるファイルの最大サイズを無制限に戻す。

・「ulimit -f unlimited」コマンドを実行します。

作成できるファイルのサイズ制限を解除します。

root@ubuntu-vm:~# ulimit -f unlimited
3.同時にオープンできるファイルディスクリプタの数をシステムデフォルトに戻す。

・「ulimit -n 1024」コマンドを実行します。

ファイルディスクリプタの数をデフォルト値(通常は1024)に戻します。

root@ubuntu-vm:~# ulimit -n 1024
4.作成できるプロセスの数を7506に戻す。

・「ulimit -u unlimited」コマンドを実行します。

作成できるプロセスの数を7506に戻します。※環境によって初期値が異なる可能性があります。

root@ubuntu-vm:~# ulimit -u 7506

まとめ

 ulimitコマンドは、Linuxシステムでのシステムリソースの管理において非常に重要なツールです。適切に設定することで、ユーザー間でのリソースの公平な分配を確保し、システム全体のパフォーマンスを維持することができます。また、設定を柔軟に変更することで、特定の状況に応じたリソース管理が可能となります。