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, canais nomeados e outros. Usando “lsof”, é possível realizar muitas coisas, como depurar. Também é muito útil para administradores de 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 ele ainda está sendo acessado.
Sem mais delongas, vamos começar com “lsof”! Estou assumindo que seu sistema UNIX / Linux atual já tem o “lsof” instalado.
Localização
do qual eu
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 de “lsof”
Execute “lsof” sozinho.
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 autoexplicativos, geralmente fica confuso sobre as colunas "FD" e "TYPE" e seus valores. Vamos dar uma olhada.
FD: Abreviatura 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 na memória
- err: erro de informação FD
- mmap: dispositivo mapeado em memória
- ltx: texto da biblioteca compartilhada (dados e código)
- m86: arquivo mapeado para mesclagem do DOS
Existem também outros valores que você notará na coluna, como “1u” seguido por u, r, w, etc. valor. O que isso significa?
- r: acesso de leitura
- w: acesso de gravação
- u: Acesso de leitura e gravação
- - : Modo desconhecido e contém um caractere de bloqueio
- ": O modo é desconhecido e não há caractere 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 caracteres
- REG: arquivo normal
- FIFO: primeiro a entrar, primeiro a sair
Arquivos abertos específicos do usuário
Linux é uma plataforma multiusuário brilhante. Vários usuários podem acessar o sistema ao mesmo tempo e realizar operações para as quais eles 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, "lsof" precisará do privilégio de "superusuário".
sudo lsof -u
Que tal verificar todos os comandos e arquivos que um determinado usuário está acessando? Execute o seguinte.
lsof -i -u
Novamente, para usuários com classificação mais alta, “lsof” precisará do privilégio de “superusuário”.
sudo lsof -i -u
Processos em execução específicos de porta
Para descobrir todos os processos que estão usando atualmente uma determinada porta, chame “lsof” com o sinalizador “-i” seguido pelas informações do protocolo e da porta.
lsof -i<46>:
Por exemplo, para verificar todos os programas que acessam atualmente 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 do comando é semelhante a antes com um pouco de magia na parte do número da porta.
lsof -i TCP: 1-1000
Processos específicos de protocolo
Aqui estão 2 exemplos que mostram os processos que estão usando os protocolos IPv4 e IPv6.
lsof -i 4lsof -i 6
Listagem de conexões de rede
O seguinte comando irá relatar todas as conexões de rede do sistema atual.
lsof -i
Excluindo com ^
Sim, podemos excluir um usuário específico, porta, FD e outros usando o caractere “^”. Tudo o que você precisa fazer é usá-lo com cuidado para não bagunçar toda a saída.
Neste exemplo, vamos excluir todos os processos do usuário “root”.
lsof -u ^ root
Existem outras maneiras de usar este mecanismo de exclusão com “lsof”, por exemplo, com sinalizadores como “-c”, “-d” etc. Nem todos os sinalizadores suportam este mecanismo. É por isso que recomendo experimentar uma demonstração com este método com qualquer sinalizador antes de implementá-lo em alguns scripts.
Pesquisa PID
PID é uma propriedade importante de qualquer processo em execução no sistema. Permite uma identificação mais precisa de 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 realizar tarefas diferentes em paralelo.
Se você não sabe como obter o PID de um processo, basta usar “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, verifique quais arquivos o PID está acessando.
lsof -pListando arquivos abertos para um dispositivo específico
A funcionalidade do “lsof” não se limita apenas a essas funções. Você também pode filtrar o resultado de “lsof” por dispositivo também. Para este propósito, o comando será parecido com este.
lsof
Este comando é superútil para descobrir todos os processos em execução com suas informações de dono acessando um determinado sistema de arquivos. Se você está tendo problemas para desmontar um sistema de arquivos, esta é a melhor maneira de.
lsofLista os arquivos abertos em um diretório
Semelhante ao exemplo anterior, basta passar o caminho do diretório para “lsof” para descobrir se algum processo está acessando-o.
Nota: “lsof” irá verificar o diretório recursivamente, por isso pode levar algum tempo.
= lsof + D
Bônus: encerrar todas as atividades do usuário
Seja extremamente cauteloso com esta parte, pois ela pode simplesmente bagunçar tudo o que o usuário está fazendo. O seguinte comando irá matar todos os processos em execução de um usuário.
sudo kill -9 'lsof -t -uOs recursos do “lsof” não param por aqui. Os mencionados aqui são os que mais precisaremos no dia a dia. Existem muitas outras funcionalidades do “lsof” que podem ser úteis (em casos específicos, é claro).
Para todos os recursos disponíveis e seu uso, verifique as páginas man e info de “lsof”.
homem lsofinfo lsof
lsof -?
Apreciar!