Mac

Mac : Too many open files 에러 해결

이석사 중 2023. 12. 9. 21:11
728x90

오늘은 Too may open files 에러를 해결해보겠습니다


Too many open files라는 에러는 살아생전 처음 봤습니다

sh-3.2# python3 gif.py 
Traceback (most recent call last):
  File "/Users/lsh/coding/python/gif.py", line 12, in <module>
  File "/opt/homebrew/lib/python3.11/site-packages/PIL/Image.py", line 3243, in open
OSError: [Errno 24] Too many open files: '002557.png'

 

제가 하려던 작업은 조만간 포스팅 할 geocat  라이브러리를 활용해서 파이썬으로 전구 기압 분포를 그리고

 

경도만 조절하여 gif화를 시키려고 했습니다

 

하지만 360˚를 0.1˚씩 나누다 보니 3600개가 있고 이를 이어 붙이는 과정에서 저러한 에러가 발생했습니다

 

제가 이 에러를 해결하기위해 찾아보던 중 리눅스 환경은 열 수 있는 파일의 개수가 정해져있다고 하더군여

 

그래서 아래 명령어로 제 맥은 몇개인지 확인해봤습니다

ulimit -aS

이렇게 명령어를 실행하면 아래와 같이 출력이 됩니다

sh-3.2# ulimit -aS
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 2560
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8176
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1333
virtual memory          (kbytes, -v) unlimited

중간에 보시면 open files라는 부분에 2560이라고 쓰여져 있습니다

 

제 맥북은 한번에 작업할 때 열 수 있는 파일 개수가 2560으로 제한되어 있는 것입니다

 

그럼 바꾸는 것도 가능할까요?? 

 

물론입니다

 

아래 명렁어를 입력해주시면 됩니다

ulimit -n 사용할 숫자

 

뒤에 사용할 숫자는 사용자가 하고 싶은 만큼 열어주시면 됩니다

 

저는 여유롭게 10240개로 지정해줬습니다

 

ulimit -n 10240

 

잘 바뀌었는지 확인해보면

sh-3.2# ulimit -aS
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 10240
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8176
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1333
virtual memory          (kbytes, -v) unlimited

open files 부분이 10240개로 바뀌었습니다

 

바꾸고 작업을 다시 실행하면 simul.gif 파일이 생성되어야 합니다

sh-3.2# python3 gif.py 

sh-3.2# ls -lrt

.
.
.

-rw-r--r--     1 lsh   staff     437882 12  9 20:52 007.png
-rw-r--r--     1 lsh   staff        383 12  9 20:55 gif.py
-rw-r--r--     1 lsh   staff      12288 12  9 20:57 .gc2.py.swp
-rw-r--r--@    1 lsh   staff     198660 12  9 20:59 .DS_Store
-rw-r--r--     1 root  staff  352074096 12  9 21:06 simul.gif

실행하고 ls -lrt로 확인해보면 정상적으로 만들어졌습니다

 

오늘도 긴 글 읽어주셔서 감사합니다!!

728x90