Если я хочу увидеть все соответствующие файлы журнала моего сервера apache2 одновременно, я использую
tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/apache2/*log |grep -v robots|grep -v favicon
Но поскольку сейчас это слишком много файлов, я бы хотел увеличить это ограничение.
Как я могу увеличить его за один сеанс SSH? И как я мог бы увеличить его во всем мире?
Я вижу ограничение на количество открытых файлов 1024 на моей машине:
ulimit -n
1024
-F
вместо того,-f
чтобы журналы открывались заново при повороте.Ответы:
Важно знать, что существуют два вида ограничений:
Решение для одного сеанса
В оболочке установлен мягкий предел:
В этом примере фактическое ограничение будет увеличено до 2048, но команда будет выполнена успешно, только если жесткий предел (check
ulimit -Hn
:) такой же или выше. Если вам нужны более высокие значения, увеличьте жесткий предел одним из следующих способов. Ограничения устанавливаются для каждого процесса, и они наследуются вновь порожденными процессами, поэтому все, что вы запускаете после этой команды в той же оболочке, будет иметь новые ограничения.Изменение жесткого лимита за один сеанс
Это нелегко, потому что только root может изменить жесткое ограничение, и после переключения на root вы должны вернуться к первоначальному пользователю. Вот решение с
sudo
:Общесистемное решение
В Debian и многих других системах, которые
pam_limits
вы используете, вы можете устанавливать системные ограничения/etc/security/limits.conf
в файлах и в файлах/etc/security/limits.d
. Файл conf содержит описание. Пример строки:Это установит жесткое ограничение и мягкое ограничение по умолчанию для пользователей в группе
webadmins
после входа в систему.Другие ограничения
Значение жесткого предела ограничено глобальным пределом значения дескрипторов открытых файлов,
/proc/sys/fs/file-max
который по умолчанию довольно высок в современных дистрибутивах Linux. Это значение ограниченоNR_OPEN
значением, используемым во время компиляции ядра.Нет ли лучшего решения?
Может быть, вы могли бы проверить , действительно ли все
*log
файлы, которые вы передаете,tail -f
являются действительно активными файлами, которые необходимо отслеживать. Возможно, что некоторые из них уже закрыты для регистрации, и вы можете просто открыть меньшее количество файлов.источник
su
получить root-su
su -c "ulimit -Hn 6000 ; su $USER"
ulimit -Hn 6000; ulimit -Sn 6000
качестве пользователя root/etc/limits.*
. Эти ограничения применяются всякий раз, когдаpam_limits.so
вызывается модуль PAM . Обычно это в начале сеанса. Например , в Ubuntu 14.04 именно в этих инструментах / командах:cron
,login
(текстовая консоль Логин),lightdm
(графический интерфейс пользователя Логин),su
. Вы можете установить, гдеpam_limits
используется в/etc/pam.*
. См. Например: faqs.org/docs/securing/chap5sec44.htmlУ меня было предупреждение PHP в моем Apache error.log:
Итак, я обнаружил, что apache устанавливает это значение индивидуально при запуске (на моем Ubuntu 14.04). Это настроено в
/etc/apache2/envvars
. Это говорит:поэтому мне пришлось настроить третью строку.
источник