Como usar o comando lsof no Linux para listar arquivos abertos

Open Featured
⏱️ 5 min read

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
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
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
Lsof Pid

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
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
Lsof 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.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Você pode gostar...

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x