CentOS Linux 버전 7.1.1503(Linux 커널 버전 3.10.x) VM에서 /etc/security/limits.conf 및 /etc/security/limits.d/20-nproc.conf에 다음 줄을 추가했습니다.
someuser soft nofile 8000
someuser hard nofile 8000
가상 머신을 다시 시작한 후에도 ulimit -n
4096이 계속 보고되고 ulimit -n 8000
"-bash: ulimit: open files:cannotmodifylimit:Operation not allowed"가 계속 발생합니다.
이 시점에서 나는 열린 파일 제한을 늘리는 방법에 대해 혼란스러워합니다.
답변1
이 오류는 여러 가지 이유로 발생할 수 있습니다.
먼저 다음 명령을 사용하여 열려 있는 파일 설명자의 최대 수를 표시합니다.
$ cat /proc/sys/fs/file-max
출력이 4096이라고 가정하면 이는 무엇을 의미합니까? 즉, 일반 사용자는 단일 로그인 세션에서 4096개의 파일을 열 수 있으며 다음 명령을 사용하여 하드 및 소프트 제한을 확인하여 표시할 수도 있습니다.
$ ulimit -Hn
$ ulimit -Sn
시스템 전체에서 동시에 열려 있는 파일 설명자 수는 편집을 통해 변경할 수 있습니다 /etc/sysctl.conf
. 다음과 같이 시스템 전체 파일 설명자 제한을 커널 변수의 새 값으로 설정하여 최대 열린 파일 수를 늘릴 수 있습니다 /proc/sys/fs/file-max
.
$ sysctl -w fs.file-max=200000 #it forces the limit to 200000 files
/etc/sysctl.conf
그런 다음 재부팅 후에도 설정이 원하는 대로 유지되도록 파일을 편집해야 합니다 . 이렇게 하려면 다음 줄을 추가하세요.
$ fs.file-max = 200000
로그아웃했다가 다시 로그인할 필요 없이 다음을 입력하세요.
$ sysctl -p
그런 다음 다음을 통해 변경 사항을 확인할 수 있습니다.
$ cat /proc/sys/fs/file-max
OR
$ sysctl fs.file-max
그런 다음 사용자의 소프트 및 하드 제한을 변경하려면 루트로 로그인하는 것이 가장 좋습니다. 일반 사용자는 소프트 제한만 변경할 수 있고 하드 제한은 루트에서 관리하기 때문입니다. 언급한 대로 루트로 이 작업을 수행하려면 를 변경해야 합니다 /etc/security/limits.conf
. 예를 들어 Oracle 사용자인 경우:
oracle soft nofile 4096
oracle hard nofile 63536
재부팅할 필요가 없는 변경 사항을 보려면 다시 로그인하여 sudo -i
작동하는지 확인하면 문제를 식별할 수 있습니다. 로그인하지 않은 사용자의 경우 루트로 다음을 수행해야 합니다.
$ sudo -i -u <user>
그런데, /etc/pam.d/login 파일을 편집하고 다음 줄을 추가해야 할 수도 있습니다.
$ session required pam_limits.so
pam_limit.so
/etc/pam.d/login에서는 로그인할 때를 의미하지만 sudo에서는 그렇지 않습니다. /etc/pam.d/sudo
제한 사항은 "-i" 없이 sudo를 실행할 때도 적용되며 /etc/pam.d에서 이 작업을 수행해야 할 수도 있습니다. 필요에 따라 승인하려면 /system-을 변경하세요. PAM 모듈에 대해 읽어 보시기 바랍니다.
그런데 현재 실행 중인 프로세스에 제한을 즉시 적용하려면 변경 외에도 다음을 수행해야 합니다 /etc/security/limits.conf
.
$ prlimit
이 글을 읽어보시길 권합니다Red Hat의 기사, 다음과 같은 상황이 발생할 수 있기 때문입니다.
일부 Linux 시스템에서는 SSH를 통해 oracle 사용자로 로그인할 때 다음 예에 설정된 "하드" 및 "소프트" 제한이 제대로 작동하지 않을 수 있습니다. root로 로그인하고 oracle에 su하면 작동할 수 있습니다. 이 문제가 발생하면 /etc/ssh/sshd_config에서 UsePrivilegeSeparation을 "no"로 설정하고 service sshd restart를 실행하여 SSH 데몬을 다시 시작해 보십시오. 일부 Linux 시스템에서는 PAM을 사용하여 권한 분리가 제대로 작동하지 않습니다. SSH 보안 기능인 '권한분리'를 비활성화하기 전 반드시 보안담당자에게 문의하시기 바랍니다.
내가 도울 수 있기를 바랍니다. 행운을 빌어요.
답변2
일부 사용자의 프로필을 확인하고 싶을 수도 있습니다. 사용자가 로그인할 때. 프로필은 ulimit를 변경할 수 있습니다. 확인할 파일: /etc/profile /etc/bashrc ~someuser/.bash_profile ~someuser/.bashrc