É normal que milhares de arquivos sejam abertos pelos programas do Ubuntu?

5

Ter usado lsof , como sugerido em Too many arquivos abertos - como encontrar o culpado , descobri que milhares de arquivos estão abertos devido a programas de estilo do sistema operacional, como unity-2d- , gnome-do e nautilus . Apenas um dos 50 principais é um programa no estilo de aplicativo (firefox).

lsof | perl -lane '$x{"$F[0]:$F[1]"}++;
END { print "$x{$_}\t$_" for sort {$x{$a}<=>$x{$b}} keys %x}' | tail -50

lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /var/lib/lightdm/.gvfs
      Output information may be incomplete.
216 unity-2d-:26285
216 unity-2d-:31600
216 unity-2d-:2577
239 nautilus:30626
239 nautilus:3777
239 nautilus:31250
239 nautilus:30781
239 nautilus:15101
241 nautilus:26123
241 nautilus:20495
241 nautilus:9627
241 nautilus:31612
241 nautilus:26298
243 nautilus:7672
243 nautilus:603
243 nautilus:21594
243 nautilus:2590
243 nautilus:17574
243 firefox:9768
243 nautilus:12422
247 nautilus:14265
256 gnome-do:31632
256 gnome-do:20519
256 gnome-do:26318
256 gnome-do:9647
256 gnome-do:26143
257 gnome-do:12437
257 gnome-do:14284
257 gnome-do:21612
257 gnome-do:622
257 gnome-do:7686
257 gnome-do:2608
257 gnome-do:17603
270 unity-2d-:3756
270 unity-2d-:30612
272 unity-2d-:15087
277 unity-2d-:12408
277 unity-2d-:21580
278 unity-2d-:2576
278 unity-2d-:14251
278 unity-2d-:587
279 unity-2d-:9613
279 unity-2d-:30768
279 unity-2d-:20481
280 unity-2d-:26109
281 unity-2d-:26284
283 unity-2d-:31599
284 unity-2d-:31235
288 unity-2d-:7658
290 unity-2d-:17559

Isso é normal ou algo está errado?

    
por Andrew Grimm 26.09.2012 / 06:14

1 resposta

3

Sim, isso é normal. Um sistema operacional pode ter milhares de arquivos abertos simultaneamente a qualquer momento. Por exemplo, neste momento, meu sistema tem 5858 arquivos abertos.

$ lsof | wc -l
5858

Por favor, note que lsof por padrão lista todos os arquivos abertos por todos os processos . Portanto, se um arquivo for acessado por dois processos diferentes, haverá duas instâncias distintas na saída lsof.

Observe também que o arquivo não é todos os arquivos comuns. lsof manual está dizendo

  

Um arquivo aberto pode ser um arquivo normal, um diretório, um arquivo especial de bloco,          um arquivo especial de caractere, uma referência de texto em execução, uma biblioteca, uma          fluxo ou um arquivo de rede (soquete de Internet, arquivo NFS ou domínio UNIX          Um arquivo específico ou todos os arquivos em um sistema de arquivos podem ser          selecionado pelo caminho.

Mas há uma diferença sutil em arquivos abertos e descritores de arquivos abertos . Veja este artigo para ler este tópico interessante. O ponto importante é

  

O que é um arquivo aberto?

     

Um arquivo aberto é um arquivo que está sendo usado ou é um descritor de arquivo aberto? Um descritor de arquivo é uma estrutura de dados usada por um programa para obter um identificador em um arquivo, sendo o mais conhecido 0,1,2 para entrada padrão, saída padrão e erro padrão. O parâmetro do kernel file-max refere-se aos descritores de arquivos abertos, e file-nr nos fornece o número atual de descritores de arquivos abertos. Mas lsof lista todos os arquivos abertos, incluindo arquivos que não estão usando descritores de arquivos - como diretórios de trabalho atuais, arquivos de biblioteca mapeados na memória e arquivos executáveis de texto. Para ilustrar, vamos examinar a diferença entre a saída de lsof para um determinado pid e os descritores de arquivo listados para esse pid em / proc.

Veja também esses links

por Anwar 26.09.2012 / 06:16

Tags