Arquivos deletados ainda em uso: memfd: pulseaudio (pulsaudi), memfd: xshmfence (Xorg), / tmp / ib… (mysqld)

2

Então, estou executando uma Debian 9.1 recém-instalada com o KDE e algumas ferramentas mostraram que esses arquivos foram excluídos, mas ainda estão em uso:

  • memfd: pulseaudio (pulsaudi)
  • memfd: xshmfence (Xorg)
  • / tmp / ibAbCdEf (mysqld)
  • [mais 4 / tmp / ones acima]

Note que esta é uma instalação nova e eu não baixei nenhum pacote até agora e fiz apenas pequenas configurações. Por que estes são excluídos, mas ainda estão em uso? Posso deletá-los totalmente? Isso quebraria alguma coisa - alguém mais tendo isso? E se eles podem ou devem ser excluídos: como?

Relacionado, pergunta anterior: " Como localizar e excluir arquivos que foram apagados do disco, mas cujo identificador de arquivo não foi fechado no Debian? "

    
por mYnDstrEAm 01.08.2017 / 20:57

1 resposta

1

Usar um filehandle em um nome de arquivo excluído é um método legítimo de acesso a arquivos; Isso ajuda a garantir que nada mais possa (facilmente) acessar ou interagir com o file-that-is-now-only-held-aberto-pelo-filehandle. No entanto, não há nada para distinguir esse caso de uso de um bug oops-deleted-yet-open sem entender o código que está gerando aqueles arquivos temporários. Em outras palavras, os arquivos excluídos, mas abertos, podem ser totalmente legítimos.

O módulo Perl Arquivo :: Temp , por exemplo, desativa o arquivo temporário por padrão se apenas o filehandle (e não o nome do arquivo) for solicitado:

$ perl -MFile::Temp=tempfile -e 'my$fh=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67001
$ lsof | grep qqqq
perl5.24 67001 jdoe 3u REG 1,2 0 65834304 /Users/jdoe/qqqq4mnuKXT3fS
$ file /Users/jdoe/qqqq4mnuKXT3fS
/Users/jdoe/qqqq4mnuKXT3fS: cannot open '/Users/jdoe/qqqq4mnuKXT3fS' (No such file or directory)
$ fg
perl -MFile::Temp=tempfi
^C
$

E agora, com um nome de arquivo solicitado, o arquivo não é automaticamente desvinculado:

$ perl -MFile::Temp=tempfile -e 'my($fh,$name)=tempfile("qqqqXXXXXXXXXX");sleep 999' &
[1] 67012
$ lsof | grep qqqq
perl5.24 67012 jdoe 3u REG 1,2 0 65834307 /Users/jdoe/qqqqEvy9FFVnLQ
$ file /Users/jdoe/qqqqEvy9FFVnLQ
/Users/jdoe/qqqqEvy9FFVnLQ: empty
$ 
    
por 01.08.2017 / 21:32