ulimit 이란?

사용자가 시스템 리소스를 사용하는 한계를 설정하는 데 사용됩니다. 이 한계는 시스템의 안정성을 유지하고, 개별 사용자나 프로세스가 시스템 리소스를 과도하게 사용하는 것을 방지하는 데 도움이 됩니다.

ulimit 옵션

  • -a : 현재 설정된 모든 limit를 보여줍니다.
  • -n : 열 수 있는 파일의 최대 수를 설정합니다.
  • -u : 사용자 프로세스의 최대 개수를 설정합니다.
  • -m : 최대 resident set size를 설정합니다.

소프트 설정과 하드 설정

ulimit 에서 설정할 수 있는 타입에는 두 가지가 있습니다. 바로 softhard 설정입니다.

소프트 limit 역시 리소스를 제한하는 최대값 입니다. 어떤 유저가 할당된 제한 값 이상의 리소스를 사용할 수는 없습니다.

소프트 값은 0과 하드 limit 사이의 값을 가질 수 있습니다. (0 <= soft limit <= hard limit)

즉, 하드 limit은 소프트 limit들의 최대값 역할을 합니다.

하드 limit 은 root 사용자만 값을 증가시킬 수 있습니다.

ulimit -a (soft limit )

ulimit -a 명령어는 리눅스 시스템에서 현재 사용자의 리소스 제한 정보를 보여주는 명령어입니다. 이 명령어를 사용하면 현재 사용자의 제한된 자원에 대한 정보를 확인할 수 있습니다.

예제 코드:

$ 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) 16382
max locked memory       (kbytes, -l) 65536
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) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ulimit -aH ( hard limit)

ulimit -aH 명령어는 ulimit -a와 동일한 기능을 수행하지만, 하드 제한(hard limit)에 대한 정보를 보여줍니다. 하드 제한은 시스템 관리자가 설정한 최대 제한 값으로, 사용자는 이 값을 초과할 수 없습니다.

예제 코드:

$ ulimit -aH

결과계시

core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 65536
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) unlimited
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

위의 예제 코드와 결과에서 볼 수 있듯이 ulimit -a와 ulimit -aH 명령어는 현재 사용자의 리소스 제한 정보를 보여주는데 사용됩니다. 이를 통해 사용자는 자원 제한에 대한 정보를 확인하고 필요에 따라 수정할 수 있습니다.

ulimit 주요 옵션

-a : 모든 제한 값 출력 -b : 최대 소켓 버퍼 크기 제한 -d : 프로세스의 데이터 세그먼트 최대 크기 제한 -e : 최대 우선 예약 순위

-f : 쉘에 의해 생성된 파일의 최대 크기 제한

-i : 보류중인 신호의 최대 수 제한

-l : 메모리에 잠길 수 있는 최대 크기 제한

-s : stack 최대 크기 제한

-t : CPU의 초당 사용시간 제한

-m : 메모리에 상주 가능한 최대 크기 제한

-c : core파일이 생성될때의 최대 크기 제한

-u : 특정 사용자의 사용가능한 프로세스의 최대갯수 제한

-v : 쉘이 사용할 수 있는 가상 메모리의 최대 크기 제한

-p : 512 byte 블록으로 파이프 크기를 설정

-q : POSIX 메시지 대기 행렬의 최대 byte 수 제한

-r : 최대 실시간 스케줄링 우선 순위

-n : 오픈가능한 FD의 갯수 제한 (too many open file 등의 Error가 발생하는 경우 해당 값을 수정하여 해결 가능)

-x : 최대 파일 잠금 수 제한

-S : 주어진 자원에 대한 소프트 한도 설정

-H : 주어진 자원에 대한 하드 한계 설정

-T : 최대 스레드 수 제한

값 확인

  • core file size : 코어파일의 최대 크기 (-c 옵션)

  • data seg size : 프로세스의 데이터 세그먼트 최대 크기 (-d 옵션)

  • scheduling priority : 쉘에서 생성되는 파일의 최대 크기 (-e 옵션)

  • file size : 파일의 최대 크기 (-f 옵션)

  • pending signals : 보류중인 신호 제한 (-i 옵션)

  • max locked memory : 메모리에 잠길 수 있는 최대 크기 (-l 옵션)

  • max memory size : resident set size의 최대 크기 (메모리 최대크기로 -m 옵션)

  • open files : 한 프로세스에서 열 수 있는 open file descriptor의 최대 수 (열수 있는 최대 파일 수로 -n 옵션)

  • pipe size : 512 byte 블록의 파이프 크기 (-p 옵션)

  • POSIX message queues : POSIX 메시지 대기 행렬의 최대 byte 수 (-q 옵션)

  • real-time priority : 최대 실시간 스케줄링 우선 순위 (-r 옵션)

  • stack size :  stack 최대 크기 (-s 옵션)

  • cpu time : 총 누적된 CPU 시간[초] (-t 옵션)

  • max user processes : 단일 유저가 사용가능한 프로세스의 최대 갯수 (-u 옵션)

  • virtual memory : 쉘에서 사용가능 한 가상 메모리의 최대 용량 (-v 옵션)

  • file locks : 최대 잠금 파일 수 (-x 옵션)

태그: ,

카테고리:

업데이트:

댓글남기기