데비안 레니. 루트를 포함한 모든 사용자에 대해:
# cat /proc/sys/fs/file-max
262144
# sysctl fs.file-max
fs.file-max = 262144
# ulimit -Hn
1024
# ulimit -Sn
1024
파일 /etc/security/limits.conf
에 주석 처리되지 않은 행이 없습니다.
1024는 어디서 구하나요?
답변1
그만큼fs.file-max
sysctl할당할 수 있는 파일 핸들 수를 보여줍니다.시스템 전체, ulimit
리소스 제한은 프로세스별(또는 UID별)입니다. 전자는 다음에 설명되어 있습니다.Documentation/sysctl/fs.txt:90
:
파일-최대 및 파일-번호: file-max의 값은 최대 파일 수를 나타냅니다. Linux 커널이 할당할 핸들입니다. 많이 얻으면 파일 핸들 부족에 대한 오류 메시지가 표시되는 경우 이 한도를 늘리고 싶습니다.
1024개 파일 rlimit는 어디에도 명시적으로 설정되지 않습니다. 이는 pid 1의 기본값으로 커널에 하드코딩되어 있습니다.include/asm-generic/resource.h:81
:
/* * init 작업에 대한 부팅 시간 rlimit 기본값: */ #INIT_RLIMITS 정의 \ { \ ... [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \ ... }
어떤 참조 INR_OPEN_CUR
와INR_OPEN_MAX
include/linux/fs.h:26
:
#define INR_OPEN_CUR 1024 /* nfile rlimits의 초기 설정 */ #define INR_OPEN_MAX 4096 /* nfile rlimits에 대한 하드 제한 */
init
다른 프로세스는 단순히 (또는 pid 1인 것) 제한을 상속받습니다 .
/proc/1/limits
데비안에서 1024를 소프트로 보고하는 이유는 무엇입니까?그리고 열심히파일 제한? 모르겠어요: sysvinit 소스나 데비안 커널 패치 모두 이를 변경하지 않습니다. 아마도 initramfs 스크립트일 수도 있습니다. (저는 기본값이 1024/4096인 Arch를 실행합니다.)
답변2
@grawity가 제기한 질문에 대해 이 커널 커밋은 다음을 설명할 수 있습니다.
0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641 커밋 저자: 팀 가드너 날짜: 2011년 5월 24일 화요일 17:13:05 -0700 ulimit: 파일 수에 대한 기본 하드 ulimit를 4096으로 높입니다.
적어도 RHEL5.4에서는 1024/1024이고 RHEL6.2에서는 1024/4096입니다.