execução de comandos remota ssh e ulimit
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.
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.