ulimit이란?
user limits의 줄임말로, 유저 프로세스가 사용할 수 있는 시스템 자원의 한도를 설정하는 명령어
soft, hard두 가지 유형으로 나뉨
Soft : 새로운 프로그램을 생성하면 기본(default)으로 적용되는 한도
Hard : 소프트한도에서 **최대(Max)**로 늘릴 수 있는 한도
명령어를 이용하여 수정하거나 limits.conf 파일을 수정하는 방법이 있다.
두 방법 모두 장비 재부팅 없이 설정할 수 있으나, 명령어를 사용하는 방법은 세션이 끊어지면 초기화 되고 limits.conf 파일을 수정하는 방법은 한번 세션을 끊었다가 다시 로그인해야 적용된다.
명령어를 사용하여 수정
ulimit -a: 모든 자원 제한을 표시
ulimit -c: 코어 덤프 파일의 최대 크기를 설정 (단위: 바이트, <item>: core)
ulimit -d: 데이터 영역의 최대 크기를 설정 (단위: 킬로바이트, <item>: data)
ulimit -f: 파일 크기의 최대 크기를 설정 (단위: 킬로바이트, <item>: fsize)
ulimit -l: 최대 잠금 가능한 메모리의 크기를 설정 (단위: 킬로바이트, <item>: memlock)
ulimit -m: 최대 상주 메모리의 크기를 설정 (단위: 킬로바이트, <item>: rss)
ulimit -n: 열 수 있는 파일의 최대 수를 설정 (<item>: nofile )
ulimit -s: 스택 영역의 최대 크기를 설정 (단위: 킬로바이트, <item>: stack)
ulimit -t: 프로세스의 최대 실행 시간을 설정 (단위: 초, <item>: cpu)
ulimit -u: 사용자당 최대 프로세스 수를 설정 (<item>: nproc)
ulimit -v: 가상 메모리의 최대 크기를 설정 (단위: 킬로바이트, <item>: as)
ulimit -x: 파일 잠금의 최대 수 설정 (<item>: locks)
예시
# 열 수 있는 파일의 최대 수를 설정
ulimit -n 4096
limits.conf 변경 ( /etc/security/limits.conf )
<domain> <type> <item> <value> 형식으로 ulimit을 설정할 수 있음
<domain> : user명을 의미하며, 모든 user에 적용하고 싶다면 *를 사용할 수 있다.
<type>: soft limit을 할지, hard limit을 할지 선택할 수 있다.
<item>: 설정하고 싶은 자원을 기입
<value>: 원하는 한도의 값을 넣어줌 단, soft 값은 ( 0≤ soft value ≤ hard value)로 설정
적용 후
# soft 설정 확인
ulimit -Sa
# Hard 설정 확인
ulimit -Ha
참고
[Linux] 5분이면 가능! ulimit 확인 및 설정 방법(feat. open files) (tistory.com)