/etc/security/limits.conf
の変更を有効にするには、再起動が必要ですか?
たとえば、/etc/security/limits.conf
に次の制限を設定するスクリプトがある場合、これらの制限を有効にする前にシステムを再起動する必要がありますか?
* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
いいえ。ただし、アクティブなセッションウィンドウをすべて閉じる必要があります。彼らはまだ古い値を覚えています。つまり、ログアウトして再度ログインします。すべてのリモートの新しいセッションまたはローカルのセキュアシェルは、limitsの変更を有効にします。
Prlimitがインストールされている場合は、実行中のプロセスに直接変更を適用します(util-linux-2.21に付属)
prlimit --pid <pid> --<limit>=<soft>:<hard>
例えば
prlimit --pid 12345 --nofile=1024:2048
現在ログインしているユーザー( 'root'など)の開いているファイルの制限を一時的に設定するには:ulimit
コマンドを使用して、現在のシェルの値を変更することもできます。ただし、ハードリミットは、rootでない限り、下方にしか調整できません。
例:
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62449
max locked memory (kbytes, -l) 64
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) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
nofile
を940に変更するには、次のようにします。
ulimit -n 94000
制限は、親プロセスから子プロセスに継承されます。ルートとして実行されているプロセスは、制限を任意に変更できます。他のプロセスはハード制限を増やすことができません。したがって、ログインプロセスによって設定されたハード制限は、セッション内のすべてのプロセスに影響します。
/etc/security/limits.conf
を変更すると、すべての新しいセッションと、これらの新しいセッションのプロセスに影響します。すでに実行中のプロセスや、すでに実行中のプロセスによって開始されたプロセスには影響しません。
したがって、制限を増やす必要がある場合は、ログアウトしてから再度ログインするか、別のセッションを開始する必要があります(例:ssh localhost
、または別のコンソール)。
引用するには @ Tombartの答え
これらの制限は、再起動後に適用されます。
再起動せずに変更を適用する場合は、
/etc/pam.d/common-session
ファイルの最後に次の行を追加します。session required pam_limits.so