Como remover “lock” de arquivos apagados, mas ainda usados no Linux?

4
SERVER:~ # df -mP /home/
Filesystem         1048576-blocks      Used Available Capacity Mounted on
/dev/mapper/rootvg-home_lv       496       491         0     100% /home
SERVER:~ # 
SERVER:/home # lsof | grep -i deleted | grep -i "home" | grep home
badprocess   4315     root  135u   REG      253,2   133525523      61982 /home/username/tr5J6fRJ (deleted)
badprocess2  44654     root  133u   REG      253,2   144352676      61983 /home/username/rr2sxv4L (deleted)
...
SERVER:/home # 

Os arquivos foram excluídos enquanto ainda estavam em uso. Então eles ainda consomem espaço. Mas não queremos reiniciar o "badprocess *". OS é SLES9, mas estamos pedindo isso "em geral".

Pergunta: Como podemos remover esses arquivos já excluídos sem reiniciar o processo que os mantém, então o espaço seria liberado?

    
por wurtel 23.01.2015 / 10:29

2 respostas

5

Você pode usar as entradas em /proc para truncar esses arquivos.

# ls -l /proc/4315/fd

Isso mostrará todos os arquivos abertos pelo processo 4315. Você já usou lsof e mostra que o arquivo excluído é o descritor de arquivo 135, então você pode liberar o espaço usado pelo arquivo excluído da seguinte forma:

# > /proc/4315/fd/135

O mesmo vale para o outro arquivo deletado aberto pelo processo 44654, lá está o descritor de arquivo 133, então:

# > /proc/44654/fd/133

Agora você deve ver que o espaço está liberado.

Você também pode usar isso para copiar o conteúdo de um arquivo que foi excluído, mas ainda mantido aberto por um processo, apenas cp /proc/XXX/fd/YY /some/other/place/filename .

    
por 23.01.2015 / 10:39
0

Faltando conectar-se a badprocess usando um depurador ou qualquer outra coisa que use o recurso ptrace() para manipular o processo e fazer com que ele feche alguns de seus arquivos, eu não acho que haja alguma maneira de fazer isso. / p>

Seu título fala sobre bloqueios, mas você não menciona bloqueios no corpo de sua pergunta. De qualquer forma, também não há como forçar um processo a desistir de um bloqueio em um arquivo. Isso é verdade se o arquivo ainda está vinculado ao sistema de arquivos ou não.

    
por 23.01.2015 / 10:33