У меня есть процесс, работающий от имени пользователя gearman, и я хочу изменить его, open files
чтобы избежать этой неприятной ошибки:
ОШИБКА 2014-09-12 17: 49: 14.000000 [main] accept (слишком много открытых файлов) -> libgearman-server / gearmand.cc: 788
Как я могу запустить ulimit от имени другого пользователя в Ubuntu и изменить открытые файлы? В настоящее время я не авторизуюсь в качестве gearman, но у меня есть права root. Я пытался сделать это:
su gearman --shell /bin/bash --command "ulimit -n"
как рекомендуется здесь, но ничего не получится:
$ su gearman --shell /bin/bash --command "ulimit -n"
Password:
$
Когда вы запускаете
ulimit
команду, она влияет только на запущенный процессulimit
(оболочку) и все подпроцессы. Поэтому, когда вы запускаетеbash --command "ulimit -n"
, это влияет только на количество открытых файлов для этого экземпляра bash, затем bash завершает работу, поэтому будущие процессы не затрагиваются.Таким образом, чтобы выполнить то, что вы хотите (чтобы увеличить лимит открытых файлов для вашего реального процесса), возможно, имеет больше смысла редактировать,
limits.conf
чтобы увеличить лимит открытых файлов для вашего конкретного пользователя-механика.Смотрите примеры limit.conf в другом месте или здесь .
источник
more /proc/<proc_id>/limits
... возможно, стоит добавить, чтобы ответить/etc/security/limits.conf
Попробуйте использовать
su - <USERNAME> -c ulimit' -Hn'
. Я только что проверил его на CEntOS 7, и он работает.источник
<USERNAME>
не удается войти (имеет оболочку nologin).