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
'Linux' 카테고리의 다른 글
[Ubuntu] netplan 을 이용한 IP 변경 (2) | 2023.12.11 |
---|---|
[Linux] bashrc, bash_profile, profile 비교표 (2) | 2023.12.07 |
[Linux] ldapsearch 명령어 사용 방법 (2) | 2023.11.27 |
[Unix] Unix dbx 명령어 사용 방법 (1) | 2023.11.23 |
[Linux] C언어로 C 파일 컴파일 및 실행 (3) | 2023.11.21 |