Предел процесса и ulimit -f не совпадают

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

прок:

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/limit.conf но это только записи для nofile а также nproc

Q: Есть ли у вас какие-либо идеи, что еще может быть ограничение размера файла?

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

nohup 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

3 ответа

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

Та же проблема с начальными сценариями, если это sysvinit. С systemd немного по-другому, но ненамного.

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

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

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

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

Пример:

[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

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

[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 ~]$
Другие вопросы по тегам