Quando arquivos grandes são excluídos em um servidor, os arquivos ainda podem ser referenciados por processos, para que o sistema de arquivos não tenha mais espaço livre.
Tentei usar o lsof , mas parece que não listou os arquivos excluídos. fuser -c
funcionou melhor, mas a lista de processos é longa demais para verificá-la para cada processo, especialmente porque cada processo é um processo Oracle.
bash-3.2# fuser -c /var
/var: 105o 29999o 20444c 3528c 27258o 7715o 3864o 3862o 2494o 18205o 17450co 17445co 14912co 14824co 14818co 14816o 14814o 8532c 8530c 7633com 7118o 6958o 6790c 6784co 6734o 6693o 6689o 6684o 6675o 6635o 6594c 6548o 6547o 6546o 6545o 6544o 6543o 6542o 6541o 6540o 6537o 6535o 6456o 6128co 6113o 335o 245co 229o 161o 8o
bash-3.2# du -hs /proc
139T /proc
Às vezes, um arquivo é excluído por um aplicativo ou usuário, por exemplo, um arquivo de log e esse arquivo ainda está sendo referenciado por um processo que não pode ser reiniciado.
Existem métodos de mercadorias para recuperar espaço em disco nos arquivos excluídos sem reiniciar o processo que tem uma referência a esse arquivo excluído?
cp /dev/null file
cp /dev/null
é um comando nulo comocp
não tem nada a cópia, um redirecionamento simples é estritamente equivalente:>file
ou mesmo>file
Respostas:
Encontre todos os descritores de arquivos abertos.
Grep excluído.
StdError para / dev / null
Resultado:
Ou você pode usar o awk
encontre / proc / * / fd -ls 2> / dev / null | awk '/ delete / {print $ 11}';
Saída awk (testada no bash Ubuntu 12.04):
Encontre e trunque todos os arquivos excluídos (testados no bash Ubuntu 12.04):
(NÃO FAÇA ISSO SE NÃO SABE O QUE FAZ)
-p prompt antes de executar truncado
Melhor maneira é truncar manualmente
Truncar manual:
ou:
ou:
Desfrutar ;)
fonte
Aqui está um exemplo simples com
less
:Vamos supor que temos um arquivo
my10MBfile
:Agora abro esse arquivo com
less
(sim, é um arquivo binário ... não importa)Então eu removo esse arquivo
Ainda está lá, mas foi excluído. Observe a quarta coluna da saída lsof: Descritor de arquivo número 4 aberto para Reading (4r)
Vamos rodar o GDB!
É isso aí!
Nossos 10 MB são bem-vindos de volta :)
O processo ainda está em execução.
fonte
Este comando mostrará todos os arquivos excluídos ainda abertos em um sistema Solaris:
Você pode truncar os que você tem certeza que deseja com este comando:
sendo p o ID do processo e x o descritor de arquivo retornado pelo primeiro comando.
Não se preocupe se, em alguns programas, o tamanho reportado por
ls
for restaurado para o tamanho anterior ao truncamento após algum tempo, o tamanho real usado no disco será muito menor, pois o arquivo agora é escasso.fonte
Você pode tentar ir para o
/proc/<pid>/fd
diretório e o descritor de arquivo correspondente truncado. Digamos que fd = 3 pontos para o arquivo excluído do pid == 123:fonte
Nenhuma dessas soluções funcionou para mim. Somente depois de usar o Bleachbit como root, consegui liberar adequadamente o espaço associado aos arquivos excluídos.
fonte