문제
다음 스크립트가 있습니다.
cat > /tmp/script.sh <<EndOfScript
#!/bin/sh
ulimit -n 8192
run_app
EndOfScript
로컬로 부드럽게 실행되면 항상 괜찮습니다. 그러나 내가 ssh를 통해 원격으로 실행하려고한다면 :
scp /tmp/script.sh user@host:/tmp/script.sh
ssh user@host "chmod 755 /tmp/script.sh; /tmp/script.sh"
오류가 발생했습니다.
ulimit: open files: cannot modify limit: Operation not permitted
또한 다음 명령을 시도했습니다.
ssh user@host "ulimit -n 8192"
동일한 오류.
SSH 원격 명령 실행이 Nofile 한계에서 1024 하드 제한을 시행하는 것처럼 보이지만이 기본값을 수정하는 방법을 찾을 수는 없습니다. /etc/security/limits.conf를 수정하고 SSHD를 다시 시작하려고 시도했습니다.
해결책 2
Fiannly는 답을 알아 냈습니다 : /etc /initscript에 다음을 추가하십시오.
ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"
다른 팁
해결 방법을 사용하는 대신 /etc/initscript
(그리고 그 파일에서 오타를 만들지 마십시오 .. :), 당신이 원한다면 sshd
당신이 만든 설정을 존중합니다 /etc/security/limits.conf
, 당신은 당신이 가지고 있는지 확인해야합니다 UsePAM yes
안에 /etc/ssh/sshd_config
, 그리고 /etc/pam.d/sshd
기울기 session required pam_limits.so
(또는 그렇지 않으면 다른 파일이 포함되어 있습니다).
그게 전부가되어야합니다.
구형 버전에서는 Od Openssh (<3.6 Something)에서도 한계가 존중되는 것을 방지하는 사용 - 프리 빌 레지 영점에 문제가 있었지만 새로운 버전으로 수정되었습니다.
ulimit
수퍼 유행어 권한이 실행되어야합니다.
스크립트를 실행하려는 서버에서 해당 값을 수정하도록 서버 관리자에게 요청하는 것이 좋습니다.
Linux에서 /etc/secutiry/limits.conf를 수정하여 그렇게 할 수 있습니다. 다음은 도움이 될 수있는 예입니다.
* soft nofile 8192
* hard nofile 8192
그 후에는 sshd를 다시 시작할 필요가 없습니다. 로그 아웃하고 다시 로그인합니다.
나는 당신이 같은 질문을 할 것을 제안합니다 ServerFault 그렇지만. 서버 측 관련 답변을 더 잘 얻을 수 있습니다.
시작 스크립트를 확인하십시오 (/etc/profile
, ~/.??*
) 전화를 위해 ulimit
. IIRC, 일단 한계가 부과되면 더 이상 넓어 질 수 없습니다.