Tentei remover um arquivo no Linux usando rm -rf file_name, mas obtive o erro:
rm: file_name not removed. Text file busy
Como posso descobrir qual processo está usando este arquivo?
Respostas:
Você pode usar o fusercomando, como:
fuser file_name
Você receberá uma lista de processos usando o arquivo.
Você pode usar diferentes sinalizadores com ele, a fim de receber uma saída mais detalhada.
Você pode encontrar mais informações no artigo da Wikipédia do fusor ou nas manpáginas.
fuserimplementações sejam iguais ou funcionem da mesma maneira. Mesmo que -iseja definido em POSIX, a implementação particular que você está usando não tem necessariamente as mesmas opções que as descritas no artigo da Wikipedia. Por exemplo, estou usando AIX agora, e o fuserdisponível neste sistema também não tem a -iopção.
fusernem lsofestavam trabalhando para mim em um convidado virtualbox. Essa resposta me salvou.
A resposta de @jim está correta - fuseré o que você deseja.
Além disso (ou alternativamente), você pode usar lsofpara obter mais informações, incluindo o nome de usuário, caso precise de permissão (sem ter que executar um comando adicional) para encerrar o processo. (Embora, claro, se matar o processo é o que você deseja, fuserpode fazer isso com sua -kopção. Você pode fuserusar outros sinais com a -sopção - verifique a página de manual para obter detalhes.)
Por exemplo, com uma tail -F /etc/passwdexecução em uma janela:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Observe que você também pode usar lsofpara descobrir quais processos estão usando soquetes específicos. Uma excelente ferramenta para ter em seu arsenal.
lsof | head -1para ver todos os cabeçalhos.
lsof | grep -E "PID|<your_process_name>"mostra a 1ª linha e o processo que você deseja consultar.
treeler qualquer coisa a partir de stdin? Se sim, o que ele faz com essa entrada?
tree, não lsof. Pelo que entendi, treenão lê a entrada padrão, portanto, a saída de lsofé descartada quando você executa lsof | tree .... Se estiver correto, então lsof | tree MyFoldé o mesmo que tree MyFold, que apenas exibe o conteúdo, mas não quais arquivos são abertos por algum processo.