Lsof – Listar arquivos abertos
Lsof – Listar arquivos abertos
O comando lsof é usado em muitos Linux/Unix para listar todos os arquivos abertos e exibir os processos . Os arquivos abertos estão incluídos: os arquivos do disco, rede, tabulações, equipamentos e processos. Um dos principais motivos para a utilização deste comando é quando um disco não pode ser desmontado e exibe o erro que os arquivos estão sendo usados ou aberto. Com este comando você pode facilmente identificar quais arquivos estão em uso.
Mais uma parte de uma serie de comando em Linux que irei explicar bem afundo, hoje vamos ver sobre o comando lsof com exemplos práticos. Como todos sabemos nas distribuições Linux/Unix tudo é considerado como arquivos (sockets, diretórios, dispositivos etc.) Uma das razões para usar o comando lsof é quando um disco não pode ser desmontado, pois vai lhe mostrar os arquivos que estão sendo usados ou abertos no momento. Com a ajuda deste comando você pode facilmente identificar os arquivos que se encontram em uso.
Para os exemplos abaixo irei fazer o print de tela e depois vou marca-lo com um numero no meio conforme sequência abaixo:
1. Listar todos os arquivos abertos com comando lsof
Neste exemplo, ele irá mostrar umaa longa lista de arquivos abertos alguns deles são extraídos para uma melhor compreensão, que exibe as colunas como Command, PID, USER, FD, tipo, etc
# lsof
Seções e seus valores. No entanto, vamos rever FD & colunas do tipo mais precisamente.
FD – significa descritor de arquivo e pode ver alguns dos valores como:
– cwd diretório de trabalho atual
– diretório raiz do IDT
– txt texto do programa (código e dados)
– mem arquivo de memória mapeada
Também em números de coluna FD como 1U é descritor de arquivo real e seguido por u, r, w de seu modo como:
– r para acesso de leitura.
– w para acesso de gravação.
– u para ler e escrever de acesso.
TYPE – de arquivos e de identificação.
– DIR – Diretório
– REG – arquivo regular
– CHR – arquivo especial de caracteres.
– FIFO – First In First Out
2. Lista arquivos abertos por um Usuário específico.
O comando abaixo irá exibir a lista de todos os arquivos abertos pelo usuario dejano.
# lsof -u dejano
3. Encontre os processos em execução em uma porta específica
Para saber todo o processo de execução de uma porta específica, basta usar o seguinte comando com a opção -i. O exemplo abaixo irá listar todos os processos de execução de porta 22 (SSH).
# lsof -i TCP:22
Você pode usar em qualquer porta exemplo: 3389, 80, 8080 etc.
4. Listar apenas Arquivos Abertos em IPv4 e IPv6
No exemplo abaixo mostra apenas os arquivos de rede IPv4 e IPv6 abertas com comandos separados.
# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
5. Listar arquivos em um Range de portas TCP especificos TCP:1-1024
Para listar todos os processos em execução de arquivos abertos do protocolo TCP Range 1-1024.
# lsof -i TCP:1-1024
6. Excluir usuário com o caracter ‘^’
Aqui, nós podemos excluímos usuário root. Você pode excluir um usuário em particular usando ‘^’ com o comando abaixo:
# lsof -i -u^root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep
rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146
rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
7. Descubra quem está procurando e quais arquivos e comandos?
Abaixo exemplo mostra o usuário dejano usando o comando ping no diretório / etc.
# lsof -i -u dejano | less | grep etc
8. Listar todas as conexões de rede
O seguinte comando com a opção ‘-i’ mostra a lista de todas as conexões de rede ‘LISTENING & ESTABLISHED’.
# lsof -i
9. Buscar por PID
O exemplo abaixo mostra apenas cujo PID é um [1].
# lsof -p 1
10. Mate todos Atividade de um determinado usuário
Às vezes você pode ter que matar todos os processos de um usuário específico. Abaixo comando mata todos os processos de usuário dejano.
# kill -9 `lsof -t -u dejano`