Bóson Treinamentos em Ciência e Tecnologia

Comando lsof – Listar Arquivos e Processos abertos no Linux

Comando lsof no Linux - Listar arquivos e processos abertos

Comando lsof – Listar Arquivos e Processos abertos

lsof significa “listar arquivos abertos” (List Open Files), e é um comando usado para retornar uma listagem de todos os arquivos abertos e dos processos que os abriram.

Um arquivo aberto pode ser um arquivo de disco, diretório, biblioteca, pipes, dispositivos e  sockets de rede que tenham sido abertos por um processo qualquer.

Por exemplo, podemos usar esse comando quando tentamos desmontar um disco e não conseguimos, pois algum arquivo, que desconhecemos, está em uso ainda. Como resolver o problema? Podemos listar os arquivos abertos e identificar os processos que os estão usando, e então, finalizá-los.

Essa ferramenta está disponível nos sistemas Linux, FreeBSD, Solaris e Mac OS X, entre outros.

Sintaxe:

lsof [opções]

Opções comuns:

lsof <enter>
Lista todos os arquivos abertos por todos os processos.
+D diretório
 Procura todas as instâncias abertas do diretório listado e todos os arquivos e diretórios que ele contém
-i
Mostra uma lista de sockets de rede abertos
-i :n
Mostra as conexões abertas na porta n
-i [tcp|udp]
Mostra as conexões ativas usando TCP ou UDP
-u usuário
Mostra o que o usuário tem aberto
-p PID
Mostra os arquivos abertos pelo processo com PID especificado
-t
 Retorna apenas os identificadores do processos (somente PIDs)
-c comando
Mostra quais arquivos e conexões de rede um comando está usando

 

Informações comumente retornadas pelo lsof são:

Consulte a página de manual lsof(8) para ver mais detalhes.

Exemplos:

1. Mostrar os processos ativos no diretório /acesso. Usamos o comando lsof sem opções, e filtramos o resultado com grep:
# lsof | grep  /acesso
Veja que temos um arquivo chamado planilhas aberto com o programa vi. O PID do processo é 2312, trata-se de um arquivo regular (REG) e o arquivo está aberto para eitura e gravação (3u).
 
2. Listar todas as conexões ativas que usem o protocolo UDP:
# lsof -i UDP
 
3. Mostrar as conexões abertas na porta 931:
# lsof -i:931
 
4. Mostrar o que o usuário fabio possui aberto no sistema:
# lsof -u fabio
 
5. Mostrar quais arquivos e conexões de rede o comando ping usa após ser disparado por um usuário:
# lsof -c ping
 
6. Procura todas as instâncias abertas do diretório /root:
# lsof +D /root
 
7. Obter o tráfego IPv6 na máquina:
# lsof -i 6
 
8. Descobrir portas que estão aguardando conexões (LISTEN):
# lsof -i -s TCP:LISTEN
Funciona usando o grep também, como em lsof -i | grep LISTEN
 
9. Mostrar os arquivos abertos por todos os usuários EXCETO o usuário fabio. para isso usaremos o caractere ^ (expressão regular):
# lsof -u ^fabio
 
10. Matar todos os processos pertencentes ao usuário fabio de uma só vez:
# kill -9 $(lsof -t -u fabio)
 
Esse comando executa lsof com as opções -u (usuário) e -t (retorna apenas PIDs), e passa o resultado para o comando kill -9.
Há várias outras opções disponíveis para o comando lsof. Pesquise nas páginas de manual se quiser saber mais a respeito.
 
Sair da versão mobile