Linux

[Linux] ulimit 에 대한 다양한 옵션과 설명

IT-PAPA 2023. 12. 6. 06:43
728x90
반응형

ulimit은 리눅스 및 유닉스 시스템에서 프로세스에 대한 리소스 제한을 설정하는 명령어입니다. 이를 통해 시스템 관리자는 각 사용자 또는 프로세스에 대해 할당된 자원을 제어할 수 있습니다. ulimit은 사용자 레벨 및 시스템 레벨의 리소스 제한을 관리합니다.

리눅스에서는 ulimit 명령어를 사용하여 현재 쉘 세션 또는 서브쉘에서 프로세스에 대한 리소스 제한을 설정할 수 있습니다. 여기에는 파일 디스크립터의 최대 개수, 코어 덤프 크기, 프로세스 가용 메모리 등이 포함됩니다.

ulimit은 사용자 레벨과 시스템 레벨에서 설정할 수 있으며, 각각 soft limit과 hard limit으로 구성됩니다. soft limit은 사용자가 설정한 제한을 나타내며, hard limit은 soft limit의 최대 값으로 시스템 관리자만 변경할 수 있습니다.

옵션 설명 설정 방법
-c 또는 core 코어 덤프(core dump) 파일의 최대 크기를 설정합니다. ulimit -c unlimited : 제한 없음 (ulimit -c 0으로도 설정 가능)
-d 또는 data 데이터 세그먼트의 최대 크기를 설정합니다. ulimit -d 51200 : 50MB로 제한
-f 또는 file 파일의 최대 크기를 설정합니다. ulimit -f unlimited : 제한 없음 (ulimit -f 1024 등으로도 설정 가능)
-l 또는 lock 메모리 잠금(lock)의 최대 크기를 설정합니다. ulimit -l 8192 : 8MB로 제한
-m 또는 mmap mmap 작업에서의 최대 메모리 맵 크기를 설정합니다. ulimit -m 32768 : 32MB로 제한
-n 또는 nofile 열린 파일 디스크립터(파일 핸들)의 최대 개수를 설정합니다. ulimit -n 1024 : 1024개로 제한
-q 또는 msgqueue 메시지 큐의 최대 크기를 설정합니다. ulimit -q 2048 : 2MB로 제한
-s 또는 stack 스택의 최대 크기를 설정합니다. ulimit -s 8192 : 8MB로 제한
-t 또는 cpu CPU 시간 제한을 설정합니다. ulimit -t 3600 : 1시간 동안만 실행 가능
-u 또는 user 사용자 프로세스 수 제한을 설정합니다. ulimit -u 50 : 50개의 프로세스로 제한
-v 또는 virtual 가상 메모리의 최대 크기를 설정합니다. ulimit -v 1048576 : 1GB로 제한
-x 또는 locks 파일 잠금(lock)의 최대 수를 설정합니다. ulimit -x unlimited : 제한 없음

 

1-1. Bash (~/.bashrc 또는 ~/.bash_profile 파일 사용 예제):

# ulimit 설정을 추가합니다.

# 코어 덤프(core dump) 파일의 최대 크기를 설정합니다.
ulimit -c unlimited

# 데이터 세그먼트의 최대 크기를 설정합니다.
ulimit -d 51200

# 파일의 최대 크기를 설정합니다.
ulimit -f unlimited

# 메모리 잠금(lock)의 최대 크기를 설정합니다.
ulimit -l 8192

# mmap 작업에서의 최대 메모리 맵 크기를 설정합니다.
ulimit -m 32768

# 열린 파일 디스크립터(파일 핸들)의 최대 개수를 설정합니다.
ulimit -n 1024

# 메시지 큐의 최대 크기를 설정합니다.
ulimit -q 2048

# 스택의 최대 크기를 설정합니다.
ulimit -s 8192

# CPU 시간 제한을 설정합니다.
ulimit -t 3600

# 사용자 프로세스 수 제한을 설정합니다.
ulimit -u 50

# 가상 메모리의 최대 크기를 설정합니다.
ulimit -v 1048576

# 파일 잠금(lock)의 최대 수를 설정합니다.
ulimit -x unlimited

1-2. 변경사항 적용:

설정 파일을 수정한 후에는 현재 세션에 변경사항이 적용되지 않습니다. 변경사항을 적용하려면 다음 명령어를 실행합니다:

source ~/.bashrc

# 또는

source ~/.bash_profile

 

2-1. /etc/security/limits.conf 작성 방법

/etc/security/limits.conf 파일은 리눅스 시스템 전체의 리소스 제한 설정을 관리하는 파일입니다. 이 파일을 사용하여 사용자별, 그룹별, 도메인별 등 다양한 설정을 할 수 있습니다. 아래는 주석과 함께 /etc/security/limits.conf 파일에 작성하는 방법에 대한 설명입니다.

# /etc/security/limits.conf 파일에 대한 주석과 예제

# <domain>      <type>    <item>         <value>
# *: 모든 사용자
# @group: 특정 그룹
# username: 특정 사용자

# 소프트 리소스 제한 (soft limit): 사용자가 설정된 값 미만으로 리소스 사용이 가능하며, 이 값 초과시 경고 메시지가 발생
# 하드 리소스 제한 (hard limit): 사용자가 설정된 값 이상으로 리소스를 사용할 수 없음

# 예제:
# 모든 사용자의 코어 덤프 크기 제한 설정
*        soft    core          unlimited
*        hard    core          unlimited

# 특정 사용자의 프로세스 개수 제한 설정
username soft    nproc         50
username hard    nproc         100

# 특정 그룹의 파일 열기 제한 설정
@group   soft    nofile        1024
@group   hard    nofile        2048

# 모든 사용자의 스택 크기 제한 설정
*        soft    stack         8192
*        hard    stack         8192

위의 예제에서 <domain>, <type>, <item>, <value>는 각각 다음을 나타냅니다:

<domain>: 사용자, 그룹 또는 모두에게 적용할 것인지를 나타냅니다.
<type>: 소프트 또는 하드 리소스 제한을 설정할 것인지를 나타냅니다.
<item>: 제한을 설정할 특정 리소스 항목을 나타냅니다.
<value>: 설정할 제한 값입니다.

2-2. 변경사항 적용:

변경사항을 적용하려면 다음 명령어를 실행합니다:

sudo sysctl -p
728x90
반응형
LIST