ulimit command
linux의 ulimit 명령은 프로세스의 자원 한도를 설정하는 명령어 입니다.
보여 주는 형식은 Linux 또는 커널 버전 마다 다르지만 보여주는 내용은 비슷 합니다.
제한 설정은 soft 또는 hard로 나누어 집니다.
soft
: 프로그램을 새로 시작하면 기본으로 적용되는 제한.
hard
: soft
에서 설정할 수 있는 최대 제한.
CentOS or Ubuntu 20.x LTS
$> 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) 3560
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) 3560
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Mint or Ubuntu 18.x LTS
$> ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 63465
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 64
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 63465
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
옵션
-a
: 모든 제한 값 출력-t cpu time (seconds)
: CPU의 초당 사용시간-f file size (blocks)
: 쉘에 의해 생성된 파일의 최대 크기-d data seg size (kbytes)
: 프로세스의 데이터 세그먼트 최대 크기-s stack size (kbytes)
: 스택 최대 크기-c core file size (blocks)
: core 파일이 생성될 때 최대 크기-m resident set size (kbytes)
: 메모리에 상주 가능한 최대 크기-u processes
: 특정 사용자의 사용가능한 프로세스의 최대 개수-n file descriptors
: 오픈가능한 FD의 개수- too many open file 에러 발생시 해당 값을 조절 할 수 있습니다.
-l locked-in-memory size (kbytes)
: 메모리에 잠길 수 있는 최대 크기-v address space (kbytes)
: 쉘이 사용할 수 있는 가상 메모리 최대 크기-x file locks
: 최대 파일 잠금 수-i pending signals
: 보류중인 signal의 최대 수-q bytes in POSIX msg queues
: POSIX 메시지 대기 큐의 최대 byte 수-e max nice, scheduling priority
: 최대 우선 예약 순위-r max rt priority, real-time priority
: 최대 실시간 스케줄링 우선 순위-p pipe size
: 512 byte 블럭으로 파이프 크기를 설정-N 15
설정
ulimit
명령어를 통한 설정
$> ulimit -n
1024
$> ulimit -n 2048
2048
명령어를 통한 설정은 해당 세션에서만 유요합니다.
/etc/security/limits.conf
파일을 통해 user 별로 영구적인 설정이 가능합니다.
#<domain> <type> <item> <value>
geeksaga soft nofile 2048
geeksaga hard nofile 2048
/etc/profile
를 통해 로그인 한 세션에 대한 설정을 할 수 있습니다.
$> vi /etc/profile
...
# ulimit setting
ulimt -n 2048 # open files
...
$> source /etc/profile
tldr ulimit
$> tldr ulimit
ulimit
Get and set user limits.
- Get the properties of all the user limits:
ulimit -a
- Get hard limit for the number of simultaneously opened files:
ulimit -H -n
- Get soft limit for the number of simultaneously opened files:
ulimit -S -n
- Set max per-user process limit:
ulimit -u 30