Назад | Перейти на главную страницу

лимит proc и ulimit -f не совпадают

У меня проблема, когда у процесса максимальный размер файла отличается от ulimit для пользователя. Файл журнала для этого процесса в основном не превышает 524288

proc:

less /proc/20238/limits

Limit                     Soft Limit           Hard Limit           Units
...
Max file size             524288               524288               bytes
...

ulimit:

ulimit -a

...
file size               (blocks, -f) unlimited
...

Насколько я могу судить, в сценарии, запускающем процесс, не установлен ulimit.

Я также посмотрел на /etc/security/limits.conf но это только записи для nofile и nproc

В: У вас есть идеи, что еще может устанавливать ограничение на размер файла?

Если это поможет, вот очищенная версия того, что запускает процесс:

поЬир Java $ WALLET_OPTS -DOracleName = "FileSender" -DAPP = FILE_SDR -Dapp_props = $ APP_PROPS -Dfile_name = $ {FILE_NAME} -XX: + UseParallelGC -XX: + DisableExplicitGC -XX: -EliminateLocks $ APPMEM -DDEBUG_MQSERVER = TRUE -classpath $ CLASSPATH com.some.path.FileSdrSrv 10 1 >> $ APP_LOG / filesdr.log 2> & 1 &

В java-файле также не установлен ulimit.

В системах, использующих systemctl для управления такими сервисами, как centos 7, есть специальное место для установки ограничений для сервисов systemctl. Вы можете поместить файл конфигурации в папку /etc/systemd/system/$service_name.service.d/ чтобы перезаписать ulimit. Вы также можете поместить конфигурации в файлы определения услуг.

Пример:

[Service]
LimitFSIZE=1024

Приведенная выше конфигурация перезапишет «ограничение размера файла» службы.

видеть

Изменить ограничение на количество открытых файлов для службы SysV в CentOS 7

https://fredrikaverpil.github.io/2016/04/27/systemd-and-resource-limits/

https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Process%20Properties

Улимиты наследуются от родительского процесса, если, например, вы входите в систему как root и su пользователю. Вы БУДЕТЕ получить другие ограничения, чем при входе непосредственно в систему пользователя.

Та же проблема со стартовыми скриптами, если он sysvinit. С systemd все немного иначе, но не намного.

Конфигурация PAM решает, в каких случаях загружаются ограничения. Вы можете проверить это в человеке.

Вы должны проверить, есть ли файлы в /etc/security/limits.d/*.conf поскольку они могут отменять значения по умолчанию.

IIRC, значения по умолчанию установлены в limits.h, но я не помню его расположение на rhel5.

Приложение может ограничивать ресурсы при запуске, всегда можно установить более строгие ограничения ресурсов, чем настроенное значение пользователя. См. Следующий пример:

[centos@be0 ~]$ ulimit -n
32000
[centos@be0 ~]$ ulimit -n 16000
[centos@be0 ~]$ ulimit -n
16000
[centos@be0 ~]$ ulimit -n 32000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
[centos@be0 ~]$