私の質問はおそらくUbuntuとは特に関係ないでしょうが、デスクトップがこのOSを実行しているので、このフォーラムに来ました。
次のようにulimit -c
コマンドを使用してコアファイルのサイズを変更しようとしています。
$ 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) 7959
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) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
制限の変更:
$ ulimit -c unlimited
結果を観察する:
$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7959
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) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
実際、制限は変更されています。ただし、別のターミナルを開いて値を確認しても、コアファイルサイズにゼロ値が表示されます。
質問:
ulimit
コマンドを使用して行った変更は、現在のプロセス、つまりこの場合はbash
のみに影響しますか?ulimit
の変更は新しいプロセスに適用されますか?ulimit
は組み込みのシェルであるため、現在のシェル、およびそのシェルによって開始されたプロセスのみに影響します。
$ type ulimit
ulimit is a Shell builtin
man ulimit
から:
The ulimit utility shall set or report the file-size writing limit
imposed on files written by the Shell and its child processes (files of
any size may be read). Only a process with appropriate privileges can
increase the limit.
そのため、はい、子プロセスが影響を受けます。
永久にまたはすべてのプロセスに制限を設定するには、 /etc/security/limits.conf
を編集して再起動します。マンページの例はかなり良いです。次のようなものを追加するだけです。
username - core unlimited