O bom do Linux é que você pode visualizar e gerenciar tudo facilmente, desde o processo de inicialização até a instalação de pacotes de software. Aqui discutimos como você pode usar o comando lsof no Linux para visualizar arquivos abertos e os processos que os utilizam. Saber como visualizar isso pode te ajudar a entender como o sistema funciona e até mesmo tomar as ações necessárias para processos específicos.
Comando Lsof
Para visualizar os arquivos abertos e os usuários ou processos responsáveis por eles, usamos o lsof
Utilitário. Por padrão, lsof
é pré-instalado na maioria das distribuições.
No entanto, se você não o tiver instalado, poderá usar o gerenciador de pacotes para instalá-lo em seu sistema.
Debian/Ubuntu
No Debian, execute o comando:
sudo apt-get install lsof
Arco/Manjaro
No Manjaro e em outras distribuições baseadas em Arch, use o pacman executando o comando:
sudo pacman -S lsof
CentOS/REHL/Fedora
Para CentOS e a família REHL, você pode usar dnf:
sudo dnf install lsof
Use o comando lsof para listar arquivos abertos para um processo Linux
Como a maioria dos comandos do Linux, o utilitário lsof é incrivelmente simples de usar. Comece digitando o comando lsof
:
sudo lsof
Depois de executar o comando acima, lsof deve retornar informações sobre os arquivos abertos no sistema.
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,48 4096 2 / init 1 root rtd DIR 8,48 4096 2 / init 1 root txt REG 0,19 632048 281474976743906 /init init 1 root 0u CHR 1,3 0t0 15362 /dev/null init 1 root 1u CHR 1,3 0t0 15362 /dev/null init 1 root 2u CHR 1,3 0t0 15362 /dev/null init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg init 1 root 4u sock 0,8 0t0 22689 protocol: AF_VSOCK init 1 root 5r REG 0,4 0 4026532185 mnt init 1 root 6r REG 0,4 0 4026532201 mnt init 1 root 7r DIR 8,48 4096 240 /home/cap init 1 root 8u DIR 8,48 4096 2 / init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCK
Observação: se você tiver privilégios sudo, execute o comando com sudo
para evitar erros de “permissão negada” em arquivos específicos.
Conforme mostrado na saída acima, a saída lsof tem as seguintes colunas:
Coluna | Representação |
---|---|
Comando | Mostra o nome do processo usando o arquivo de destino. |
PID | O identificador exclusivo do processo que usa o arquivo. |
TID | A coluna mostra o identificador de thread. |
TASKCMD | O nome do comando de tarefa. |
DO UTILIZADOR | Nome de usuário ou UID do usuário que está executando o processo. |
FD | Descritor de arquivo do arquivo e modos. |
MODELO | Nó associado ao arquivo de destino. |
DISPOSITIVO | Número do dispositivo separado por vírgulas. |
TAMANHO/DESLIGADO | Tamanho do arquivo em bytes do tamanho do deslocamento do arquivo |
NÓ | Valor do inode do arquivo local. Você pode usar o comando stat para mostrar inode informações para o arquivo. |
NOME | Ponto de montagem do arquivo. |
Agora que você entende o que o conteúdo da impressão do comando lsof representa, vamos usar o comando para filtrar informações específicas.
Como filtrar por processos específicos
Para filtrar apenas arquivos específicos abertos pelo processo específico, podemos usar o nome do processo ou o valor PID.
Por exemplo, para mostrar os arquivos usados pelo processo do firefox, podemos usar o comando:
sudo lsof -c firefox

O comando mostrará todos os arquivos abertos pelo processo do firefox.
Para filtrar por ID do processo, podemos usar o -p
opção e passe o ID do processo. Você pode usar o top
comando para obter o ID do processo de destino.
Por exemplo, para obter o PID do processo do firefox, podemos usar o comando:
sudo ps aux | grep firefox
Depois de ter o PID do processo de destino, use lsof para mostrar os arquivos abertos:
sudo lsof -p 2121

O comando acima imprimirá os arquivos abertos pelo processo com o PID especificado.
Como filtrar para um usuário específico
Para visualizar apenas os arquivos abertos por um usuário específico, podemos usar o -u
bandeira. Por exemplo, para filtrar o usuário Debian, use o comando:
sudo lsof -u debian

Como filtrar um arquivo específico
Suponha que você queira conhecer apenas o processo e o usuário que abriu um arquivo específico. Para fazer isso, passe o nome do arquivo para lsof:
sudo lsof /bin/sleep

O acima apenas filtrará o arquivo específico e retornará as informações relacionadas, incluindo o usuário, o ID do processo e muito mais.
Empacotando
Neste tutorial simples, discutimos como consultar o sistema para obter informações sobre arquivos abertos usando o comando lsof no Linux. Aqui estão alguns comandos adicionais para você listar o conteúdo de um diretório no terminal.