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?
Você pode usar o fuser
comando, 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 man
páginas.
fuser
implementações sejam iguais ou funcionem da mesma maneira. Mesmo que-i
seja 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 ofuser
disponível neste sistema também não tem a-i
opção.fuser
nemlsof
estavam 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
lsof
para 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,fuser
pode fazer isso com sua-k
opção. Você podefuser
usar outros sinais com a-s
opção - verifique a página de manual para obter detalhes.)Por exemplo, com uma
tail -F /etc/passwd
execução em uma janela:Observe que você também pode usar
lsof
para descobrir quais processos estão usando soquetes específicos. Uma excelente ferramenta para ter em seu arsenal.fonte
lsof | head -1
para ver todos os cabeçalhos.lsof | grep -E "PID|<your_process_name>"
mostra a 1ª linha e o processo que você deseja consultar.Conforme mostrado na imagem anexa:
fonte
tree
ler qualquer coisa a partir de stdin? Se sim, o que ele faz com essa entrada?tree
, nãolsof
. Pelo que entendi,tree
não lê a entrada padrão, portanto, a saída delsof
é descartada quando você executalsof | tree ...
. Se estiver correto, entãolsof | tree MyFold
é o mesmo quetree MyFold
, que apenas exibe o conteúdo, mas não quais arquivos são abertos por algum processo.