ulimit nofiles e lsof

6

Se eu fizer um

lsof | grep user | wc -l

Eu recebo um número retornado na faixa de 25.000.

Se eu verificar

ulimit -a user

nofiles é definido como 1024.

Alguém pode me ajudar a entender melhor o número de arquivos abertos? Claramente não é o caso, mas eu pensei que um número de 1024 não significa que um usuário não pode ter mais do que 1024 arquivos abertos.

    
por HayekSplosives 08.04.2013 / 14:45

2 respostas

4

O limite de arquivo retornado por ulimit é o número de arquivos que podem ser abertos por um único processo (ulimit -n para ver apenas o número de descritores). O valor retornado é o RLIMIT_NOFILE (ou man getrlimit), descrito em man ulimit. Este pequeno aplicativo gerará o mesmo valor (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;
}
    
por 08.04.2013 / 15:09
2

Você provavelmente está contando muitos arquivos duplicados. Experimente

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

que deve filtrar alguns dos descritores sem arquivo e as entradas duplicadas do arquivo. Eu roubei esta resposta de perguntas idênticas em Falha do servidor .

    
por 08.04.2013 / 18:43

Tags