Introdução ao Lsof

No Linux, muitos objetos são considerados um arquivo, independentemente de o objeto ser realmente um arquivo, dispositivo, diretório ou soquete. Listar um arquivo é fácil, existe o shell embutido lspara isso. Mas e se um usuário quisesse ver quais arquivos estão atualmente abertos pelo processo do servidor da web? Ou se esse usuário quisesse descobrir quais arquivos são abertos em um determinado diretório? É aí que lsofentra em jogo. Imagine lsofcomo lscom a adição de "arquivos abertos".

Observe que, embora os BSDs tenham um utilitário diferente para este trabalho fstat, vários outros tipos de Unix (Solaris, por exemplo) também possuem lsof. As opções e sinalizadores são diferentes nas outras plataformas, bem como na aparência da saída, mas geralmente o conhecimento neste artigo deve ser aplicável a eles também.

Primeiro, vamos dar uma olhada no formato da lsofsaída e como ela deve ser lida. A saída usual de lsofsem nenhum parâmetro seria semelhante ao seguinte. Isso foi aparado para facilitar a leitura.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Essas colunas significam o seguinte:

  • COMANDO - O processo ao qual um arquivo aberto pertence, neste exemplo, a que tudo está relacionado init.
  • PID - O número de identificação do processo em questão.
  • USUÁRIO - O usuário sob o qual o processo é executado. Pois inité quase sempre root.
  • FD - O descritor do arquivo, sendo o mais comum:
    • cwd- O diretório de trabalho atual (você pode notar a semelhança com o pwdcomando que imprime o diretório de trabalho atual).
    • rtd - O diretório raiz de um processo.
    • txt- A text file, isso pode significar um arquivo de configuração relacionado ao processo ou o "código fonte" relacionado (ou pertencente a) ao processo.
    • mem - Um chamado "arquivo mapeado de memória", que significa um segmento de memória virtual (leitura: RAM) que foi atribuído a um arquivo.
    • Um número - o número representa o descritor de arquivo real, o caractere após o número é o modo em que o arquivo é aberto:
    • r - Ler.
    • w - Escreva.
    • u - Leia e escreva.
  • TIPO - Especifica o tipo real do arquivo, os mais comuns são:
    • REG - um arquivo regular.
    • DIR - um diretório
    • FIFO - Primeiro a entrar, primeiro a sair.
  • DISPOSITIVO - O número principal e secundário do dispositivo que contém o arquivo.
  • TAMANHO - O tamanho do arquivo, em bytes.
  • NODE - O número do inode do arquivo.
  • NOME - O nome do arquivo.

Isso pode ser um pouco esmagador por enquanto, mas se você trabalhar lsofalgumas vezes, ele afundará rapidamente em seu cérebro.

Como mencionado acima, a produção de lsoffoi reduzida aqui. Sem argumentos ou filtros, lsofproduz centenas de linhas de saída que apenas o deixam confuso.

Existem duas abordagens básicas para resolver esse problema:

  • Use uma ou mais lsofopções de linha de comando para restringir os resultados.
  • Conduza a saída através, por exemplo grep,.

Embora a última opção possa parecer mais confortável, já que você não precisará memorizar as lsofopções da linha de comando, geralmente não é tão flexível e eficiente; portanto, continuaremos com a primeira.

Vamos imaginar que você deseja abrir um arquivo com o seu editor de texto favorito e que o editor de texto informa que ele só pode ser aberto no modo somente leitura porque outro programa já está acessando. lsofajudará você a descobrir quem é o autor:

lsof /path/to/your/file

Isso produzirá uma saída semelhante a esta:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Aparentemente, você esqueceu de fechar e encerrar a sessão! Um problema muito semelhante ocorre quando você tenta desmontar um compartilhamento NFS e umountdiz que não pode, porque algo ainda está acessando a pasta montada. Mais uma vez, lsofpode ajudá-lo a identificar o culpado:

lsof +D /path/to/your/directory/

Observe a barra final, isso é importante. Caso contrário lsof, assumirá que você quer dizer um arquivo regular. Não fique confuso com a +parte da frente da bandeira - lsoftem tantas opções de linha de comando que precisa +, além das mais comuns -. A saída ficaria assim:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

Isso significa que o processo mocp, com o PID 5637, pertencente ao usuário musicabriu um arquivo chamado RMS_GNU_SONG.ogg. No entanto, mesmo após o encerramento desse processo, ainda há um problema - o volume NFS não pode ser desmontado.

lsoftem uma -cbandeira que exibe arquivos abriu um nome de processo arbitrário.

lsof -c mocp

Isso produziria uma saída parecida com esta:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

Neste exemplo, há outra instância de mocpexecução, impedindo que você desmonte o compartilhamento. Depois de encerrar esse processo, verifique se o usuário musicnão possui outros arquivos potencialmente problemáticos abertos. lsofpossui um -usinalizador para mostrar arquivos abertos por um usuário específico. Lembre-se, um arquivo nem sempre é apenas um arquivo comum no seu disco rígido!

lsof -u music

Você também pode passar vários usuários, separados por vírgulas:

lsof -u music,moremusic

Uma observação importante sobre o comportamento padrão de lsof: os resultados são baseados em OR , o que significa que você verá os resultados do arquivo abertos por processos pertencentes ao usuário musicou ao usuário moremusic. Se você deseja ver os resultados correspondentes aos processos pertencentes a ambos os usuários, será necessário passar o sinalizador -a:

lsof -au music, moremusic

Como os dois usuários estão no grupo musicusers, também é possível listar arquivos com base no grupo:

lsof -g musicusers

Você também pode combinar sinalizadores de linha de comando:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

Na última linha, adicionamos outra flag especial - ^, que significa um NOT lógico . Se a saída estiver vazia após a execução desse comando, a desmontagem provavelmente será bem-sucedida.

Nos exemplos anteriores, vimos principalmente arquivos comuns. E quanto a soquetes e conexões de rede?

Para listar todas as conexões de rede atuais, lsoftem o -isinalizador:

lsof -i

A saída é semelhante ao que vimos até agora ...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... exceto por uma diferença: em vez de nomes de arquivos ou diretórios, a coluna NAMEagora mostra informações de conexão. Cada conexão consiste nas seguintes partes:

  • Protocolo.
  • Nome do host local.
  • Porta de origem da conexão.
  • Nome DNS de destino.
  • Porto de destino.
  • Status da conexão.

Como em muitas outras ferramentas, você pode optar por não resolver nomes e portas DNS ( -ne -P, respectivamente). A bandeira -iusa parâmetros adicionais. Você pode especificar se deve ou não mostrar tcp, udpou icmpconexões ou certas portas:

lsof -i :25
or
lsof -i :smtp

Novamente, os parâmetros podem ser combinados. O exemplo a seguir ...

lsof -i tcp:80

... mostrará apenas as conexões TCP usando a porta 80. Você também pode combiná-lo com as opções que você já conhece dos arquivos "clássicos":

lsof -a -u httpd -i tcp

Isso mostrará todas as conexões TCP abertas pelo usuário httpd. Observe o -asinalizador, que altera o comportamento padrão de lsof(como mencionado anteriormente). Como na maioria das ferramentas de linha de comando, você pode ir extremamente fundo. A seguir, mostramos apenas as conexões TCP cujo estado é "ESTABELECIDO":

lsof -i -s TCP:ESTABLISHED

Neste ponto, você deve ter um entendimento básico de como lsoffunciona, juntamente com alguns casos de uso comuns. Para ler mais, consulte a página de manual do lsofseu sistema.



Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.