메뉴 닫기

ulimit 명령어의 기능

ulimit는 프로세스의 자원 한도를 설정하는 명령어입니다. ulimit에는 soft한도와 hard한도 두가지가 있는데 soft한도는 새로운 프로그램을 생성하면 기본으로 적용되는 한도이고, hard한도는 소프트 한도에서 최대로 늘릴수 있는 한도로 슈퍼유저에 의해서만 조정이 가능합니다.

ulimit [옵션] 값

-a : 모든 제한 사항을 보여줌.

-c : 최대 코어 파일 사이즈

-d : 프로세스 데이터 세그먼트의 최대 크기

-f : shell에 의해 만들어질 수 있는 파일의 최대 크기

-s : 최대 스택 크기

-p : 파이프 크기

-n : 오픈 파일의 최대수

-u : 오픈파일의 최대수

-v : 최대 가상메모리의 양

 -S : soft 한도

-H : hard 한도

ulimit의 사용법을 쉽게 이해하기 위해서 예를 하나 들어보겠습니다.

아파치 재시작을 할려고 하는데 재시작이 되지 않아서 error_log 파일을 열어 보았습니다.

(24)Too many open files: httpd: could not open error log file ~~~

너무나 많은 파일을 오픈한다고 에러 메세지가 찍혀 있는 경우가 있습니다.

이럴 때는 현재 최대 파일 오픈 허용 갯수를 확인 해 보도록 합니다.

[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7746
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) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 7746
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost ~]#

현재는 1024개까지의 파일을 오픈 할 수 있다는 것을 확인 하실 수 있습니다. 에러를 해결하기 위에 오픈 파일 허용갯수를 늘리도록 하겠습니다.

[root@localhost ~]# ulimit -n 8192
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7746
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 8192
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 7746
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost ~]#

오픈 파일 허용 갯수를 8192까지 늘리고 확인하였습니다. 그런데 리부팅을 하면 처음 설정되었던 초기값으로 돌아오기 때문에 이것을 저장시키기 위해서는 다음과 같은 작업을 진행해야 됩니다.

[root@i-web conf]# vi /etc/security/limits.conf

root    soft     nofile    8192
root    hard   nofile    8192

위와 같이 저장하면 되는데 첫째 칸에는 해당유저을 입력하고 둘째 칸에는 한도타입, 그리고 셋째칸에는 옵션 그리고 마지막에는 값을 입력하면 됩니다. 그러면 ulimit 설정이 저장되어져서 리부팅 후 해당 값으로 적용됩니다. 그러면 아파치 재시작을 해도 에러 없이 사용이 가능해집니다.

[polldaddy rating=”7739789″]

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x