Abrir identificadores de arquivos

0

À medida que eu gero vários processos em um loop, eu bato o número máximo de identificadores de arquivos abertos e as quebras de loop for.

Quando conto as identificações de arquivo aberto usando lsof , obtenho:

$ lsof | wc -l
1464377

No entanto, a verificação de fs.file-nr retorna:

$ sysctl fs.file-nr
fs.file-nr = 35328      0       6553201

Eu esperava que o primeiro número fosse 1464377.

Eu tenho algumas perguntas:

  1. Qual é a diferença entre a saída de lsof (1464377) e file-nr (35328).

  2. O máximo parece ser 6553201, o que parece bastante arbitrário. Qual é o valor máximo para este número?

por Paulo Matos 16.03.2018 / 14:19

2 respostas

2

como por man lsof

An open file may be a regular file, a directory, a block special file, a character special file, an executing text reference, a library, a stream or a network file (Internet socket, NFS file or UNIX domain socket.) A specific file or all the files in a file system may be selected by path.

Portanto, o número de linhas em lsof provavelmente é muito maior do que o descritor de arquivos real.

Veja esta pergunta: link

    
por 16.03.2018 / 15:40
0

@Archemar está certo. Estou atrasado com a resposta. Eu verifico (exclui arquivo especial de caractere, arquivo de rede, dirs ...):

$ lsof /|grep -v DIR|wc -l 
1191

$ sysctl fs.file-nr
fs.file-nr = 1280   0   98018

Existem 1191 arquivos abertos e 1280 alças alocadas. Os valores são muito próximos.

Documentação do kernel sobre a partição fs no sysctl

    
por 16.03.2018 / 15:53