Você terá que encontrar o processo que está gravando no (s) arquivo (s) não-ligado (não excluído!). Todos os sistemas operacionais Unix e Unix-a-like permitem que um processo mantenha arquivos abertos que não tenham nome em um diretório. Isso é resultado do design dos sistemas de arquivos Unix, onde a estrutura de dados em disco que contém permissões e blocos de disco dos dados de um arquivo (o inode) é diferente do nome e do local do diretório. É por isso que a chamada do sistema é unlink(const char *pathname)
- tudo o que a chamada do sistema faz é remover um dos possivelmente muitos nomes de um arquivo. Se um processo tiver um arquivo aberto, você não apagou esse arquivo, apenas retirou o nome dele.
Você terá que encontrar o processo de alguma forma e fazê-lo sair. Já passou algum tempo desde que usei o Solaris. Eu sei que, às vezes, as máquinas do Solaris tinham lsof
instalado - você poderia usar isso para encontrar o processo ofensivo, provavelmente. O Solaris tem um sistema de arquivos /proc
, mas usar /proc
para localizar arquivos abertos não é tão fácil quanto é no Linux. A reinicialização fará o truque, mas parece uma medida drástica.