У меня проблема, когда у процесса максимальный размер файла отличается от 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 ~]$