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.
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.
Também existem outros valores que você notará na coluna, como "1U" seguido por u, r, w, etc. valor. O que significa isso?
Tipo: descreve o tipo de arquivo e sua identificação. Os valores são os seguintes.
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 -uPensamentos 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 lsofInformações LSOFLSOF -?Aproveitar!