Tente isso.
$ sudo lsof | egrep '^COMMAND|deleted'
Exemplo de saída que vejo no meu sistema ...
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 2842 mysql 5u REG 9,1 4633 6209543 /tmp/ibLRNV1i (deleted)
mysqld 2842 mysql 6u REG 9,1 424 6209545 /tmp/ibnnYl1y (deleted)
mysqld 2842 mysql 7u REG 9,1 0 6209546 /tmp/ib5ViM0O (deleted)
mysqld 2842 mysql 8u REG 9,1 0 6209547 /tmp/ibh9U55F (deleted)
mysqld 2842 mysql 13u REG 9,1 0 6209548 /tmp/ibRzqtwm (deleted)
mysqld 2842 mysql 319u REG 9,1 25894907 6209553 /tmp/MLFxqPDX (deleted)
mysqld 2842 mysql 350u REG 9,1 267677827 6209550 /tmp/MLFBkHbP (deleted)
Uma característica comum de muitos sistemas de arquivos * nix é o fato de que nada impede que um processo continue a ler / gravar em / de um arquivo excluído, e não há nada que impeça a exclusão de um arquivo que um processo ainda tenha aberto. / p>
Uma maneira de alguns programas garantirem que os arquivos temporários não permaneçam (e possivelmente também como uma medida de segurança, embora não tenha certeza de como isso é seguro) é abri-los e imediatamente "desvincular" (excluir) eles. Se o processo terminar inesperadamente, o espaço em disco será liberado. O MySQL faz isso:
O MySQL organiza que os arquivos temporários sejam removidos se o mysqld for finalizado. Em plataformas que o suportam (como o Unix), isso é feito ao desvincular o arquivo depois de abri-lo. A desvantagem disso é que o nome não aparece nas listagens de diretórios e você não vê um grande arquivo temporário que preenche o sistema de arquivos no qual o diretório de arquivos temporários está localizado. (Nesses casos, lsof + L1 pode ser útil na identificação de arquivos grandes associados ao mysqld.)
- link
Ponto importante: Quando um arquivo que ainda está aberto é excluído, o espaço não é realmente liberado no disco até que o último processo que contém um identificador no arquivo o feche. Até que o arquivo seja fechado, ninguém, incluindo o root, poderá liberar esse espaço além de matar o processo. Por outro lado, matando (ou parando graciosamente, se possível) o processo deve sempre liberar o espaço.
Então, eu recomendo que você dê uma olhada no que seu sistema pode ter na forma de arquivos abertos e excluídos, e isso pode lhe dar algo para continuar.
No caso do meu sistema, o MySQL tem vários arquivos temporários abertos, alguns deles bastante grandes.
Se você quiser espiar dentro desses arquivos, isso é feito facilmente, embora a natureza do que você possa discernir varie muito. Pegue o PID e os dígitos em FD que fazem isso ... exemplo, PID 2842 FD 350:
$ sudo strings /proc/2842/fd/350 | less
Se o MySQL tiver arquivos temporários excluídos abertos, parando e reiniciando o MySQL irá liberar esse espaço, e então você precisará investigar o que pode estar mantendo abertos, pois eles demoram mais tempo do que o apropriado e se você tem consultas que são gerando tabelas temporárias excessivamente grandes e esgotando seu espaço / tmp. Se o seu diretório / tmp for sua própria partição / sistema de arquivos, então df -h
lhe dará uma resposta melhor sobre o espaço livre e usado. Você provavelmente não precisa se preocupar muito com o tamanho real da própria entrada de diretório.
E é claro que pode não ser o MySQL. :)