2. lsof e fuser

Você já tentou desmontar uma unidade USB e recebeu um erro de "Dispositivo ou Recurso Ocupado"? Este problema comum ocorre quando um processo ainda está usando um arquivo ou diretório no dispositivo. Para resolver isso, você precisa descobrir qual processo está mantendo o recurso. Duas utilidades poderosas para esta tarefa são lsof e fuser.

Usando lsof para Listar Arquivos Abertos

No Linux, quase tudo é tratado como um arquivo, incluindo discos, pipes, soquetes de rede e dispositivos. O comando lsof (abreviação de "list open files" - listar arquivos abertos) mostra uma lista detalhada de todos os arquivos abertos e os processos que os estão usando.

Para ver quais processos estão usando o diretório atual (.), você pode executar:

pete@icebox:~$ lsof .
COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
lxsession 1491 pete  cwd    DIR    8,6     4096  131 .
update-no 1796 pete  cwd    DIR    8,6     4096  131 .
nm-applet 1804 pete  cwd    DIR    8,6     4096  131 .
xterm     2205 pete  cwd    DIR    8,6     4096  131 .
bash      2207 pete  cwd    DIR    8,6     4096  131 .
lsof      5914 pete  cwd    DIR    8,6     4096  131 .

A saída mostra o comando (COMMAND), o ID do processo (PID) e o usuário (USER) associados a cada arquivo aberto. Com essas informações, você pode identificar os processos que o impedem de desmontar um dispositivo.

O Comando fuser

Outra excelente ferramenta é o comando fuser (abreviação de "file user" - usuário de arquivo). Esta utilidade identifica quais processos estão usando arquivos, soquetes ou sistemas de arquivos específicos. O comando linux fuser é uma maneira rápida de ver os PIDs dos processos que acessam um recurso específico.

Usar a opção -v (verbose/detalhado) fornece uma saída mais detalhada:

pete@icebox:~$ fuser -v .
                     USER        PID ACCESS COMMAND
/home/pete:         pete  1491 ..c.. lxsession
                     pete  1796 ..c.. update-notifier
                     pete  1804 ..c.. nm-applet
                     pete  2205 ..c.. xterm
                     pete  2207 ..c.. bash

Aqui, podemos ver claramente quais processos estão usando nosso diretório atual. A coluna ACCESS mostra como o arquivo está sendo usado (por exemplo, c para diretório atual).

Terminando Processos com fuser

Uma característica chave do comando fuser é sua capacidade de terminar processos que estão usando um recurso. A opção fuser -k envia um sinal SIGKILL para cada processo que acessa o arquivo ou sistema de arquivos especificado. Isso é particularmente útil para desmontar um dispositivo ocupado.

Por exemplo, para matar todos os processos que usam um ponto de montagem em /mnt/usb, você executaria:

sudo fuser -k /mnt/usb

Usar fuser -k no Linux é uma maneira rápida e eficaz de liberar um recurso.

fuser vs lsof

Então, quando você deve usar fuser vs lsof?

  • lsof é ótimo para investigação detalhada. Ele fornece informações extensas sobre todos os arquivos abertos, tornando-o ideal para solução de problemas complexos.
  • fuser é mais direto. É perfeito para identificar rapidamente e, se necessário, terminar processos em um arquivo ou ponto de montagem específico. O fuser command é frequentemente a escolha mais rápida para resolver erros de "Dispositivo ou Recurso Ocupado".

Ambas as ferramentas são essenciais para qualquer usuário Linux. Familiarize-se com elas para gerenciar arquivos e processos de forma eficiente.

Entre para salvar seu progresso de aprendizado

Entrar

Exercícios

A prática leva à perfeição! Aqui estão alguns laboratórios práticos para reforçar sua compreensão sobre o gerenciamento de processos e a solução de conflitos de recursos:

  1. Gerenciar e Monitorar Processos Linux - Pratique a interação com processos em primeiro plano e em segundo plano, inspecionando-os com ps, monitorando recursos com top e terminando-os com kill. Este laboratório ajudará você a identificar e gerenciar processos que podem estar retendo recursos, como arquivos em uma unidade USB.

Este laboratório ajudará você a aplicar esses conceitos em cenários do mundo real e a ganhar confiança na identificação e gerenciamento de processos do sistema.

Questionário

Qual comando é usado para listar arquivos abertos e suas informações de processo associadas? (Por favor, responda em inglês, usando apenas letras minúsculas.)