6

Если я сделаю

lsof | grep user | wc -l

Я вернул число в диапазоне 25 000.

Если я проверю

ulimit -a пользователь

nofiles установлен на 1024.

Может кто-нибудь помочь мне лучше понять настройку количества открытых файлов? Ясно, что это не так, но я подумал, что жесткие цифры 1024 означают, что у пользователя не может быть более 1024 открытых файлов.

2 ответа2

4

Ограничение на количество файлов, возвращаемое ulimit, - это количество файлов, которые могут быть открыты одним процессом (ulimit -n, чтобы увидеть только количество дескрипторов). Возвращаемое значение - RLIMIT_NOFILE (или man getrlimit), описанное в man ulimit. Это небольшое приложение выведет то же значение (1024):

#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>

int main(){
    struct rlimit info;
    getrlimit(RLIMIT_NOFILE, &info);
    printf("%d\n", info.rlim_cur);
    return 0;
}
2

Вы, вероятно, считаете много дубликатов файлов. Пытаться

lsof -u <user> | grep "/" |sort -k9 -u | wc

который должен отфильтровывать некоторые не файловые дескрипторы и дубликаты файловых записей. Я украл этот ответ из идентичных вопросов на Serverfault.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .