1. ulimit 개요
- ulimit은 리눅스와 유닉스 계열 운영체제에서 프로세스가 사용할 수 있는 시스템 리소스의 제한을 설정하는 도구입니다.
- 이러한 제한은 시스템의 안정성, 보안 및 성능에 직접적인 영향을 미칩니다.
- ulimit은 크게 두 가지 유형의 제한을 다룹니다:
- 소프트 제한(soft limit): 프로세스가 기본적으로 따르는 제한이지만, 필요에 따라 프로세스 자체가 제한을 하드 제한까지 늘릴 수 있습니다.
- 하드 제한(hard limit): 소프트 제한의 상한선으로, 루트 권한 없이는 변경할 수 없습니다.
1.1 ulimit의 중요성
- 시스템 보호: 특정 프로세스가 시스템 리소스를 독점하여 시스템 전체가 불안정해지는 것을 방지합니다.
- 자원 분배: 여러 사용자와 프로세스 간에 시스템 리소스를 공정하게 분배할 수 있습니다.
- 애플리케이션 안정성: 애플리케이션이 사용할 수 있는 리소스에 명확한 경계를 설정하여 예측 가능한 동작을 보장합니다.
- 성능 최적화: 특정 워크로드에 맞게 제한을 조정하여 시스템과 애플리케이션의 성능을 최적화할 수 있습니다.
2. ulimit 기본 사용법
2.1 현재 제한 확인하기
현재 쉘 세션에 설정된 ulimit 값을 확인하는 방법은 다음과 같습니다:
# 모든 제한 확인
ulimit -a
# 특정 제한 확인 (예: 최대 오픈 파일 수)
ulimit -n
일반적인 ulimit 출력 예시:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7595
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) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
2.2 제한 설정하기
ulimit 값을 변경하는 기본 문법은 다음과 같습니다:
# 소프트 제한 설정
ulimit -S -n 4096
# 하드 제한 설정
ulimit -H -n 8192
# 소프트 및 하드 제한을 동시에 설정
ulimit -n 4096
주의사항
일반 사용자는 하드 제한을 초과하여 소프트 제한을 늘릴 수 없으며, 소프트 제한을 낮출 수는 있지만 다시 높일 수는 없습니다. 루트 사용자만 하드 제한을 변경할 수 있습니다.
2.3 주요 ulimit 옵션
| 옵션 | 설명 | 단위 |
|---|---|---|
| -c | 최대 코어 파일 크기 | 블록 |
| -d | 프로세스 데이터 세그먼트 최대 크기 | KB |
| -f | 쉘에서 생성 가능한 파일의 최대 크기 | 블록 |
| -l | 프로세스가 잠글 수 있는 최대 메모리 크기 | KB |
| -m | 최대 상주 메모리 크기 | KB |
| -n | 최대 오픈 파일 수(파일 디스크립터) | 개수 |
| -s | 최대 스택 크기 | KB |
| -t | 최대 CPU 시간 | 초 |
| -u | 사용자당 최대 프로세스 수 |