Linux LSOF Comando

Linux LSOF Comando
A ferramenta de comando "LSOF" no Linux é uma das muitas ferramentas internas que são super úteis para verificar a "lista de arquivos abertos". Sim, o termo "LSOF" é a abreviação da tarefa.

Existem vários processos em execução no sistema o tempo todo, acessando diferentes arquivos do sistema. Esses arquivos podem ser arquivos de disco, scripts, soquetes de rede, dispositivos, tubos nomeados e outros. Usando "LSOF", é possível realizar muitas coisas, como depuração. Também é bastante útil para os administradores do sistema descobrirem quais arquivos estão sendo acessados ​​por quais processos. Um dos cenários mais úteis que encontrei é quando você está prestes a desmontar um sistema de arquivos, mas ainda está sendo acessado.

Sem mais delongas, vamos começar com "lsof"! Estou assumindo que seu sistema UNIX/Linux atual já possui “LSOF” instalado.

Localização

que lsof

Isso relata o caminho completo do comando, neste caso, "lsof".

Versão "LSOF"
lsof -v

Isso relatará informações detalhadas da versão de "LSOF", incluindo a data de construção do binário, versão do compilador, sinalizadores do compilador e outros.

Uso básico "LSOF"

Corra "LSOF" por si só.

LSOF

Isso relata uma grande lista de todos os arquivos que estão sendo acessados ​​pelo sistema no momento da execução do comando.

Embora todos os campos sejam auto-explicativos, principalmente ficam confusos sobre as colunas "FD" e "Type" e seus valores. Vamos conferi -los.

FD: Abreviação de "Descritor de arquivo". Ele vem com os seguintes valores.

  • CWD: diretório de trabalho atual
  • RTD: diretório raiz
  • txt: texto do programa (dados, código e outros)
  • MEM: arquivo mapeado de memória
  • ERR: erro de informação FD
  • Mmap: dispositivo mapeado de memória
  • LTX: Texto compartilhado da biblioteca (dados e código)
  • M86: arquivo mapeado de mesclagem do DOS

Também existem outros valores que você notará na coluna, como "1U" seguido por u, r, w, etc. valor. O que significa isso?

  • R: Leia o acesso
  • W: Escreva acesso
  • U: Leia e escreva acesso
  • - : Modo desconhecido e contém um personagem de bloqueio
  • ": O modo é desconhecido e não há caráter de bloqueio

Tipo: descreve o tipo de arquivo e sua identificação. Os valores são os seguintes.

  • Dir: Diretório
  • CHR: arquivo especial de personagem
  • Reg: arquivo regular
  • FIFO: primeiro em, primeiro a sair

Arquivos abertos específicos do usuário

Linux é uma brilhante plataforma multiusuário. Vários usuários podem acessar o sistema ao mesmo tempo e executar operações para as quais têm permissão.

Para verificar os arquivos que estão sendo acessados ​​por um determinado usuário, execute o seguinte comando.

lsof -u

No entanto, para verificar os usuários com classificação mais alta, o "LSOF" precisará de privilégio "superusuário".

sudo lsof -u

Que tal verificar todos os comandos e arquivos um determinado usuário está acessando? Execute o seguinte.

lsof -i -u

Novamente, para usuários com classificação mais alta, o "LSOF" precisará do privilégio "superusuário".

sudo lsof -i -u

Processos de execução específicos da porta

Para descobrir todos os processos que estão usando uma determinada porta, ligue para “LSOF” com a bandeira “-i” seguida pelo protocolo e informações da porta.

lsof -i<46><@hostname|host_address>
:

Por exemplo, para conferir todos os programas atualmente acessando a porta 80 sobre o protocolo TCP/IP, execute o seguinte comando.

LSOF -I TCP: 80

Este método também pode ser usado para mostrar todos os processos que estão usando portas dentro de um determinado intervalo, por exemplo, 1 a 1000. A estrutura de comando é semelhante a antes, com um pouco de mágica na parte do número da porta.

LSOF -I TCP: 1-1000

Processos específicos do protocolo

Aqui estão 2 exemplos mostrando os processos que estão atualmente usando os protocolos IPv4 e IPv6.

LSOF -I 4
LSOF -I 6

Listando conexões de rede

O comando a seguir reportará todas as conexões de rede do sistema atual.

lsof -i

Excluindo com ^

Sim, podemos excluir usuário específico, porta, FD e outros usando o personagem “^”. Tudo o que você precisa fazer é usá -lo com cautela para que você não estrague toda a saída.

Neste exemplo, vamos excluir todos os processos do usuário "root".

lsof -u^raiz

Existem outras maneiras de usar esse mecanismo de exclusão com "LSOF", por exemplo, com as bandeiras como "-c", "-d" etc. Nem todas as bandeiras suportam este mecanismo. É por isso que recomendo experimentar uma demonstração com este método com qualquer bandeira antes de implementá -lo em alguns scripts.

Pesquisa PID

O PID é uma propriedade importante de qualquer processo em execução no sistema. Permite pingoint mais refinado a um determinado processo. O nome do processo não é muito útil em muitas situações, pois o mesmo binário pode criar cópias de si mesmo e executar tarefas diferentes em paralelo.

Se você não sabe como obter o PID de um processo, use "ps" para listar todos os processos em execução e filtrar a saída usando "grep" com o nome do processo e/ou comandos.

ps -a

Agora, execute a filtragem usando "grep".

ps --a | grep

Agora, confira quais arquivos esse PID está acessando.

LSOF -P

Listando arquivos abertos para um dispositivo específico

A funcionalidade de "LSOF" não se limita a essas funções. Você também pode filtrar o resultado de "LSOF" por base de dispositivo também. Para esse fim, o comando ficará assim.

LSOF

Este comando é super útil para descobrir todos os processos em execução com as informações do proprietário acessando um sistema de arquivos específico. Se você está tendo problemas para desmontar um sistema de arquivos, este é o melhor caminho a seguir.

LSOF

Lista abriu arquivos em um diretório

Semelhante ao exemplo anterior, basta passar no caminho do diretório para "LSOF" para descobrir se algum processo está acessando.

Nota: “LSOF” verificará o diretório recursivamente, para que possa levar tempo.

= LSOF +D

Bônus: encerrar toda a atividade do usuário

Seja extremamente cauteloso com esta parte, pois pode simplesmente estragar tudo com tudo o que um usuário está fazendo. O comando a seguir matará todos os processos de execução de um usuário.

sudo kill -9 'lsof -t -u

Pensamentos finais

As características de "LSOF" não apenas param aqui. Os mencionados aqui são os que mais precisaremos. Existem muitas outras funcionalidades de "LSOF" que podem ser úteis (em casos específicos, é claro).

Para todos os recursos disponíveis e seu uso, confira as páginas do homem e da informação de "LSOF".

homem lsof
Informações LSOF
LSOF -?

Aproveitar!