Pergunta

Eu tenho o seguinte script:

cat > /tmp/script.sh <<EndOfScript
#!/bin/sh
ulimit -n 8192
run_app
EndOfScript

que corra bem localmente, é sempre ok. Mas se eu tentar executá-lo remotamente através de ssh:

scp /tmp/script.sh user@host:/tmp/script.sh
ssh user@host "chmod 755 /tmp/script.sh; /tmp/script.sh"

Eu tenho o erro:

ulimit: open files: cannot modify limit: Operation not permitted

Eu também tentei o seguinte comando:

ssh user@host "ulimit -n 8192"

mesmo erro.

Parece que a execução do comando ssh remoto é impor um limite rígido 1024 no limite nofile, mas eu não consigo descobrir como modificar esse valor padrão. Eu tentei modificar /etc/security/limits.conf e sshd restart, ainda o mesmo erro.

Foi útil?

Solução 2

Fiannly descobri a resposta: adicione o seguinte ao / etc / initscript

ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"

Outras dicas

Em vez de usar a solução de /etc/initscript (e não fazer um erro de digitação no arquivo .. :), se você quiser apenas sshd para honrar as configurações feitas no /etc/security/limits.conf, você deve ter certeza de que UsePAM yes em /etc/ssh/sshd_config, e listas /etc/pam.d/sshd session required pam_limits.so (ou não inclui um outro arquivo que faz isso).

Isso deve ser tudo que existe para ela.

Em versões mais antigas do od openssh (<3,6 algo), houve também um problema com UsePrivilegeSeparation que os limites impediram sendo homenageado, mas foi fixado em versões mais recentes.

ulimit requer privilégios de superusuário para executar.

Eu sugiro que você peça ao administrador do servidor para modificar esse valor para você no servidor que você está tentando executar o script em.

Ele / Ela pode fazer isso modificando /etc/secutiry/limits.conf no Linux. Aqui está um exemplo que pode ajudar:

*               soft    nofile          8192
*               hard    nofile          8192

Depois disso, você não precisa reiniciar sshd. Apenas o logout e login novamente.

Eu sugiro que você faça a mesma pergunta em ServerFault embora. Você vai ficar melhor do lado do servidor respostas relacionadas lá.

Verifique o arranque de scripts (/etc/profile, ~/.??*) para uma chamada para ulimit. IIRC, uma vez que um limite foi imposto, não pode mais ser ampliado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top