Открытый предел файла демона достигнут даже при том, что системные пределы были увеличены

Это вызывается путем буферизации в glibc. В случае ls вывод находится в одном внутреннем буферном, и как таковое передается только head. Для ps -eF, вывод больше и так однажды head концы, следующее grep получает остающиеся части (но не целое) вывод ps.

Можно избавиться от него путем освобождения буфера канала - например, с sed -u (Я не уверен, что это не расширение GNU):

$ ls -al / | sed -u "#" | { head -n 1; grep bin; }
total 76
drwxr-xr-x   2 root root  4096 Oct  2 21:52 bin
drwxr-xr-x   2 root root  8192 Oct  3 01:54 sbin
3
13.10.2014, 01:29
1 ответ

Есть два параметра, которые ограничивают количество открытых файлов: ограничение на процесс и ограничение на уровне системы. Общесистемный предел устанавливается sysctl fs.file-max , который можно настроить в /etc/sysctl.conf (чтение во время загрузки) или установить на лету. командой sysctl или записав в / proc / sys / fs / file-max . Ограничение на процесс устанавливается ulimit -n .

Предел для каждого процесса наследуется каждым процессом от своего родителя. Значение по умолчанию может быть установлено в /etc/security/limits.conf , но это применимо только к интерактивным сеансам, а не к демонам, запускаемым во время загрузки.Он будет применяться к демону, только если он запущен через интерактивный сеанс.

Чтобы увеличить (или уменьшить) ограничения на процесс для демона, в общем,отредактируйте его сценарий запуска и добавьте вызов ulimit непосредственно перед запуском демона. Пакет Redis Debian поставляется с настройкой конфигурации в отдельном файле: / etc / default / redis . Закомментируйте строку ULIMIT = и при необходимости увеличьте значение.

3
27.01.2020, 21:23

Теги

Похожие вопросы