이것은 매우 이상합니다. 내 설정으로 이것을 시도하고 있습니다 ulimit
.60000
startup.sh
#!/bin/bash
ulimit -n 60000
echo "Hello! File Descriptor set"
(755 파일 권한)으로 이 작업을 수행할 수 있으며 ./startup.sh
에코 라인은 오류 없이 인쇄됩니다. 하지만 이렇게 해도 ulimit -n
여전히 표시됩니다 1024
. 무슨 일이 일어나고 있는 걸까요?
놀랍게도 ulimit -n 60000
터미널에 입력한 다음 실행하면 ulimit -n
완벽하게 작동합니다. 스크립트를 통해 파일 설명자 제한을 설정할 수 없는 이유는 무엇입니까?
데비안 8, 64비트. OpenVZ 컨테이너
답변1
이는 단순히 제한이 셸 스크립트, 즉 bash
스크립트를 실행하여 생성된 셸(이 경우) 내부에 설정되어 있기 때문입니다(커널은 실제로 스크립트를 셸에 인수로 전달합니다).
따라서 스크립트 실행이 완료되면저것껍질도 사라졌습니다(그리고 제한적입니다). 그런 다음 원래 쉘로 돌아갑니다.
테스트하려면 ulimit -n
내부에서 스크립트를 실행하세요.
답변2
ulimit -n
프로세스는 자체 및 하위 프로세스에 대해서만 제한을 설정할 수 있습니다. 프로세스별 제한이 아닌 전역 제한을 설정하려고 합니다 . 필요에 따라 전역 제한을 설정하려면 다음을 setrlimit()
사용하여 resource.RLIMIT_NOFILE
Python 스크립트를 만들 수 있습니다.resource
기준 치수.