У меня есть следующий сценарий:
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 удаленное выполнение команды осуществляет 1 024 жестких предела предела nofile, но я не могу узнать, как изменить это значение по умолчанию. Я пытался изменить/etc/security/limits.conf и перезапустить sshd, тем не менее та же ошибка.
Прямо понял ответ: добавьте в /etc/initscript
ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"
ulimit
требуются права суперпользователя для запуска.
Я бы посоветовал вам попросить администратора сервера изменить это значение для вас на сервере, на котором вы пытаетесь запустить скрипт.
Он / Она может сделать это, изменив / etc / secutiry / limits.conf в Linux. Вот пример, который может помочь:
* soft nofile 8192
* hard nofile 8192
После этого вам не нужно перезапускать sshd. Просто выйдите из системы и войдите снова.
Я бы посоветовал вам задать тот же вопрос в ServerFault . Там вы получите более качественные ответы, связанные с сервером.
Проверьте сценарии запуска ( / etc / profile
, ~ /.??*
) для вызова ulimit
. IIRC, после того, как лимит был наложен, он больше не может быть расширен.