65. Configure User Resource Limits
개요
여러 사용자가 Linux 시스템에 접근할 때 리소스 제한 관리가 필수적입니다. /etc/security/limits.conf 파일을 사용하여 어떤 사용자도 시스템 리소스를 독점할 수 없도록 설정합니다.
제한 설정 파일 이해
/etc/security/limits.conf 파일 구조:
$ sudo vim /etc/security/limits.conf
#<domain> <type> <item> <value>
#@student hard nproc 20
#@faculty soft nproc 20
trinity hard nproc 10
@developers soft nproc 20
* soft cpu 5
각 항목은 4개의 필드로 구성됩니다:
| 필드 | 설명 |
|---|---|
| Domain | 사용자 또는 그룹 지정 |
| Type | soft, hard, 또는 둘 다 (-) |
| Item | 제한할 리소스 |
| Value | 리소스의 최대 허용 값 |
Domain 필드
- 사용자명: 예:
trinity - 그룹명:
@접두사 (예:@developers) *: 명시되지 않은 모든 사용자의 기본 제한
사용자별 제한이 전역(*) 항목보다 우선합니다.
제한 타입 설명
- Hard Limit: 초과할 수 없는 절대 최대값
- Soft Limit: 로그인 시 적용되는 초기 임계값. 사용자는 hard limit까지 임시로 올릴 수 있음
- 결합 제한(
-): soft와 hard 카테고리 모두에 동일한 제한 적용
일반적인 리소스 항목
| 항목 | 설명 |
|---|---|
nproc | 최대 동시 프로세스 수 |
fsize | 최대 파일 크기 (KB) |
cpu | CPU 시간 제한 (분) |
전체 옵션 목록:
$ man limits.conf
사용자별 제한 설정 예시
trinity에게 최대 3개의 동시 프로세스 제한:
trinity - nproc 3
변경 후 trinity로 로그인:
$ sudo -iu trinity
4번째 프로세스를 생성하려고 하면 오류 발생:
bash: fork: retry: Resource temporarily unavailable.
로그아웃:
$ logout
현재 리소스 제한 확인 및 조정
현재 리소스 제한 확인:
$ ulimit -a
예시 출력:
core file size (blocks, -c) 0
max user processes (-u) 14722
프로세스 수 제한 (예: 5000개):
$ ulimit -u 5000
기본적으로 사용자는 자신의 제한만 낮출 수 있습니다. soft 제한은 세션당 한 번만 hard 제한까지 올릴 수 있습니다.