실행하기 위해 스택이 8192kb로 제한되지 않아야 하는 일부 오래된 코드가 있습니다. 나는 이 일에 익숙하다/etc/security/limits.conf
* stack hard unlimited
* stack soft unlimited
그러나 bash 셸이 있는 로컬 계정을 사용하는 RHEL 7.9에서는 작업을 수행할 때 ulimit -s
여전히 응답합니다 8192
. 그러면 Limits.conf를 수정해도 효과가 없는 것 같습니다.
Bash 셸이 있는 터미널 창에서 ulimit -s unlimited
코드를 먼저 실행한 다음 실행하면 코드가 제대로 실행됩니다.
RHEL 7.9의 모든 사용자에 대해 스택 크기를 전역적으로 무제한으로 설정하는 가장 좋은 방법은 무엇입니까?
내가 뭔가를 놓치고 있는 걸까, ulimit
똑같은 /etc/security/limits.conf
걸까?
답변1
사용한계값제한을 설정하는 명령은 현재 생성된 프로세스(셸) 및 해당 하위 프로세스에 대한 제한만 변경합니다.
예를 들어, 다음과 같은 경우:
#With root
ulimit -s unlimited
#Switch to other user
su - <user>
ulimit -s ## unlimited ; because this still be a child process
하지만 그렇게 한다면:
#With root
ulimit -s unlimited
#Logout
logout
#Login as the other user then execute the following
ulimit -s ## 8192
사용/etc/security/limits.conf영구적으로 설정되지만 적용하려면 다시 로그인(새 세션)해야 합니다.
스택을 설정했다면/etc/security/limits.conf 유효하지 않습니다. 덮어썼는지 확인하세요./etc/security/limits.d/또는 프로필 ~/.bash_profile ~/.bashrc를 살펴보세요.
위의 항목이 /에서 사용 가능한지 확인하세요.etc/pam.d/비밀번호 확인그리고/etc/pam.d/system-auth그럼 확실해?/etc/security/limits.conf짐을 실은:
session requires pam_limits.so