fbpx

Comandos Linux – Comando lsof

Comando Linux lsof

comando lsof

lsof lista informações sobre arquivos abertos no sistema, incluindo qual processo tem o arquivo aberto.

Um “arquivo aberto” é qualquer arquivo no disco, denominado pipe, soquete de rede, soquete Unix ou dispositivo aberto por um processo.

Sintaxe

  lsof [-? abChKlnNOPRtUvVX] [-AA] [-cc] [+ cc] [+ | -dd] 
      [+ | -DD] [+ | -es] [+ | -f [cfgGn]] [-F [f]] [-g [s]]
      [-i [i]] [-kk] [+ | -L [l]] [+ | -mm] [+ | -M] 
      [-o [o]] [-ps] [+ | -r [t [m <fmt> ]]] 
      [-s [p: s]] [-S [t]] [-T [t]] [-us] [+ | -w] 
      [-x [fl]] [-z [z]] [-Z [Z]] [-] [ nomes ]

Opções

-? -hEssas duas opções equivalentes selecionam uma lista de saída de uso (ajuda). lsof exibe uma forma abreviada dessa saída quando detecta um erro nas opções fornecidas, depois de exibir mensagens explicando cada erro.
-umafaz com que as opções de seleção de lista sejam ANDed, conforme descrito acima.
-A Aestá disponível em sistemas configurados para o AFS cujo código do kernel do AFS é implementado por meio de módulos dinâmicos. Ele permite que o usuário lsof especifique A como um arquivo de lista de nomes alternativo, onde os endereços do kernel dos módulos dinâmicos podem ser encontrados.
-bfaz com que o lsof evite funções do kernel que possam bloquear – ou seja, lstat, readlink e stat .
-c cseleciona a listagem de arquivos para processos que executam o comando que começa com os caracteres de c . Vários comandos podem ser especificados, usando várias opções -c . Eles são unidos em um único conjunto ORed antes de participar da seleção da opção AND.

Se c começar com um ‘ ^ ‘, os seguintes caracteres especificarão um nome de comando cujos processos devem ser ignorados (excluídos).

Se c começa e termina com uma barra (‘ / ‘), os caracteres entre as barras são interpretados como uma expressão regular. Os metacaracteres do shell na expressão regular devem ser citados para impedir sua interpretação pelo shell. A barra de fechamento pode ser seguida por estes modificadores:

ba expressão regular é básica.
Euignore o caso das letras.
xa expressão regular é estendida (padrão).

A especificação de comando simples é testada primeiro. Se esse teste falhar, a expressão regular do comando será aplicada. Se o teste de comando simples for bem-sucedido, o teste de expressão regular do comando não será realizado. Isso pode resultar em mensagens “nenhum comando encontrado para regex:” quando a opção -s -V de lsof é especificada.

+ c wdefine o número máximo de caracteres iniciais do nome, fornecido pelo dialeto UNIX, do comando UNIX associado a um processo a ser impresso na coluna COMMAND. O padrão lsof é nove.

Observe que muitos dialetos do UNIX não fornecem todos os caracteres do nome do comando para lsof nos arquivos e estruturas a partir dos quais lsof obtém o nome do comando. Frequentemente, os dialetos limitam o número de caracteres fornecidos nessas fontes. Por exemplo, o Linux 2.4.27 e o Solaris 9 limitam o comprimento do nome do comando a 16 caracteres.

Se w for zero (‘ 0 ‘), todos os caracteres de comando fornecidos a lsof pelo dialeto UNIX serão impressos.

Se w for menor que o comprimento do título da coluna, “COMANDO”, ele será aumentado para esse comprimento.

-Cdesabilita o relatório de qualquer componente de nome de caminho do cache de nomes do kernel.
+ d sfaz com que o lsof procure por todas as instâncias abertas do diretório se os arquivos e diretórios que ele contém em seu nível superior. + d NÃO desce a árvore de diretórios, enraizada em s . A opção + D D pode ser usada para solicitar uma pesquisa em árvore de diretório descendente completo, enraizada no diretório D.

O processamento da opção + d não segue os links simbólicos dentro de s , a menos que a opção -x ou -xl também seja especificada. Também não procura arquivos abertos nos pontos de montagem do sistema de arquivos nos subdiretórios s , a menos que a opção -x ou -xf também seja especificada.

Nota: a autoridade do usuário desta opção a limita a procurar arquivos que o usuário tem permissão para examinar com a função stat do sistema.

-d sespecifica uma lista de FDs (descritores de arquivo) a serem excluídos ou incluídos na listagem de saída. Os descritores de arquivo são especificados no conjunto separado por vírgula s – por exemplo, ” cwd, 1,3 “, ” ^ 6, ^ 2 “. Não deve haver espaços no conjunto.

A lista é uma lista de exclusão se todas as entradas do conjunto começarem com ‘ ^ ‘. É uma lista de inclusão se nenhuma entrada começar com ‘ ^ ‘. Listas mistas não são permitidas.

Um intervalo de número de descritor de arquivo pode estar no conjunto desde que nenhum membro esteja vazio, ambos os membros sejam números e o membro final seja maior que o inicial – por exemplo, ” 0-7 ” ou ” 3-10 “. As faixas podem ser especificadas para exclusão se elas tiverem o prefixo ‘ ^ ‘ – por exemplo, ” ^ 0-7 ” exclui todos os descritores de arquivo de 0 a 7 .

Vários números de descritores de arquivos são unidos em um único conjunto ORed antes de participar da seleção da opção AND.

Quando há membros de exclusão e inclusão no conjunto, lsof os relata como erros e sai com um código de retorno diferente de zero.

+ D Dfaz com que o lsof procure todas as instâncias abertas do diretório D e todos os arquivos e diretórios que ele contém em sua profundidade completa.

O processamento da opção + D não segue os links simbólicos em D , a menos que a opção -x ou -x l também seja especificada. Também não procura arquivos abertos nos pontos de montagem do sistema de arquivos nos subdiretórios D , a menos que a opção -x ou -x f também seja especificada.

Nota: a autoridade do usuário desta opção a limita a procurar arquivos que o usuário tem permissão para examinar com a função stat do sistema.

Nota adicional: lsof pode processar esta opção lentamente e requer uma grande quantidade de memória dinâmica para fazê-lo. Isso ocorre porque ele deve descer a árvore de diretórios inteira, com raiz em D , chamando stat para cada arquivo e diretório , criando uma lista de todos os arquivos encontrados e pesquisando nessa lista uma correspondência com todos os arquivos abertos. Quando o diretório D é grande, essas etapas podem levar muito tempo, portanto, use essa opção com prudência.

-D Ddireciona o uso de lsof do arquivo de cache do dispositivo. Às vezes, o uso desta opção é restrito.

-D deve ser seguido por uma letra de função; a letra da função pode opcionalmente ser seguida por um nome de caminho. lsof reconhece estas letras de função:

?relatar caminhos do arquivo de cache do dispositivo
bconstruir o arquivo de cache do dispositivo
Euignore o arquivo de cache do dispositivo
rleia o arquivo de cache do dispositivo
vocêleia e atualize o arquivo de cache do dispositivo

As funções b , re u , acompanhadas por um nome de caminho, às vezes são restritas. Quando essas funções são restritas, elas não aparecerão na descrição da opção -D que acompanha -h ou -? saída de opção.

? A função relata os caminhos de somente leitura e gravação que lsof pode usar para o arquivo de cache do dispositivo, os nomes de quaisquer variáveis ​​de ambiente cujos valores lsof examinarão ao formar o caminho do arquivo de cache do dispositivo e o formato do caminho do arquivo de cache pessoal do dispositivo.

Quando disponíveis, as funções b , re u podem ser seguidas pelo caminho do arquivo em cache do dispositivo. O padrão padrão é .lsof_hostname no diretório inicial do ID do usuário real que executa lsof, mas isso pode ter sido alterado quando lsof foi configurado e compilado. A saída do -h e -? As opções mostram o prefixo padrão atual – por exemplo, ” .lsof “. O sufixo, nome do host, é o primeiro componente do nome do host retornado por gethostname .

Quando disponível, a função b direciona lsof para criar um novo arquivo de cache do dispositivo no caminho padrão ou especificado.

A função i instrui o lsof a ignorar o arquivo de cache do dispositivo padrão e obter suas informações sobre os dispositivos por meio de chamadas diretas ao kernel.

A função r direciona lsof para ler o cache do dispositivo no caminho padrão ou especificado, mas impede a criação de um novo arquivo de cache do dispositivo quando não existe ou o existente está incorretamente estruturado. A função r , quando especificada sem um nome de caminho, impede que lsof atualize um arquivo de cache de dispositivo incorreto ou desatualizado ou crie um novo em seu lugar. A função r está sempre disponível quando é especificada sem um argumento de nome de caminho; pode ser restringido pelas permissões do processo lsof .

Quando disponível, a função u instrui lsof para ler o arquivo de cache do dispositivo no caminho padrão ou especificado, se possível, e para recriá-lo, se necessário. Essa é a função padrão do arquivo de cache do dispositivo quando nenhuma opção -D foi especificada.

+ | -e sisenta o sistema de arquivos cujo nome do caminho é s de ser sujeito a chamadas de função do kernel que podem bloquear. A opção + e isenta stat , lstat e a maioria das chamadas de função do kernel readlink . A opção -e isenta apenas chamadas de função stat e lstat do kernel. Vários sistemas de arquivos podem ser especificados com + | -e especificações e cada uma pode ter chamadas de readlink isentas ou não.

Esta opção está atualmente implementada apenas para Linux.

CUIDADO: essa opção pode ser facilmente aplicada incorretamente a outro sistema que não seja o sistema de arquivos de interesse, porque usa o nome do caminho em vez dos números de dispositivo e inode mais confiáveis. Os números de dispositivo e inode são adquiridos através da chamada de kernel stat potencialmente bloqueadora e, portanto, não estão disponíveis, mas consulte o + | -m m como uma maneira alternativa possível de fornecer números de dispositivos. Use esta opção com muito cuidado e especifique completamente o nome do caminho do sistema de arquivos a ser isento.

Quando são relatados arquivos abertos em sistemas de arquivos isentos, talvez não seja possível obter todas as informações. Portanto, algumas colunas de informações ficarão em branco, os caracteres “UNKN” precedem os valores na coluna TYPE e a opção de isenção aplicável é adicionada entre parênteses ao final da coluna NAME. Algumas informações de número de dispositivo podem ser disponibilizadas via + | opção -m m .

+ | -f [ cfgGn ]f, por si só, esclarece como os argumentos do nome do caminho devem ser interpretados. Quando seguido por c , f , g , G ou n em qualquer combinação, especifica que a listagem das informações da estrutura de arquivos do kernel deve ser ativada (‘ + ‘) ou inibida (‘  ‘).

Normalmente, um argumento de nome de caminho é considerado um nome de sistema de arquivos se corresponder a um nome de diretório montado relatado por mount ou se representar um dispositivo de bloco, nomeado na saída de montagem e associado a um nome de diretório montado. Quando + f é especificado, todos os argumentos do nome do caminho serão considerados como nomes de sistema de arquivos e lsof reclamará se não houver. Isso pode ser útil, por exemplo, quando o nome do sistema de arquivos (o dispositivo montado) não é um dispositivo de bloco. Isso acontece em alguns sistemas de arquivos CD-ROM.

Quando -f é especificado por si só, todos os argumentos do nome do caminho serão considerados arquivos simples. Assim, por exemplo, os argumentos ” -f – / ” direcionam lsof para procurar arquivos abertos com um nome de caminho ‘ / ‘, nem todos os arquivos abertos no sistema de arquivos ‘ / ‘ (raiz).

Tenha cuidado para garantir que + f e -f sejam finalizados corretamente e não sejam seguidos por um caractere (por exemplo, do arquivo ou nome do sistema de arquivos) que possa ser usado como parâmetro. Por exemplo, use ”  ” após + f e -f, como nesses exemplos.

  $ lsof + f - / arquivo / sistema / nome
  $ lsof -f - / arquivo / nome

A listagem de informações das estruturas de arquivos do kernel, solicitadas com o formulário de opção + f [ cfgGn ], é normalmente inibida e não está disponível no todo ou em parte para alguns dialetos – por exemplo, kernels do Linux baseados em / proc abaixo de 2.6.22. Quando o prefixo f é um sinal de adição (‘ + ‘), esses caracteres solicitam informações sobre a estrutura do arquivo:

ccontagem de uso da estrutura de arquivos (não Linux)
fendereço da estrutura do arquivo (não Linux)
gabreviações de sinalizadores de arquivo (Linux 2.6.22 e superior)
Gsinalizadores de arquivo em hexadecimal (Linux 2.6.22 e superior)
nendereço do nó da estrutura de arquivos (não Linux)

Quando o prefixo é menos (‘  ‘), os mesmos caracteres desabilitam a listagem dos valores indicados.

Endereços de estrutura de arquivo, contagens de uso, sinalizadores e endereços de nó podem ser usados ​​para detectar arquivos mais facilmente idênticos herdados por processos filhos e arquivos idênticos em uso por diferentes processos. A saída da coluna lsof pode ser classificada por colunas de saída contendo os valores e listadas para identificar o uso idêntico do arquivo, ou a saída do campo lsof pode ser analisada por um script pós-filtro AWK ou Perl ou por um programa C.

-F fespecifica uma lista de caracteres, f , que seleciona os campos a serem enviados para processamento por outro programa e o caractere que termina cada campo de saída. Cada campo a ser produzido é especificado com um único caractere em f . O terminador de campo é padronizado como NL, mas pode ser alterado para NUL (000).

Quando a lista de caracteres de seleção de campo está vazia, todos os campos padrão são selecionados (exceto o campo bruto do dispositivo, o contexto de segurança e o campo da zona por motivos de compatibilidade) e o terminador de campo NL é usado.

Quando a lista de caracteres de seleção de campo contém apenas um zero (‘0’), todos os campos são selecionados (exceto o campo bruto do dispositivo por motivos de compatibilidade) e o caractere terminador NUL é usado.

Outras combinações de campos e seu caractere terminador de campo associado devem ser configurados com entradas explícitas em f .

Quando um caractere de seleção de campo identifica um item que normalmente não é listado – por exemplo, PPID, selecionado com -R – a especificação do caractere de campo – por exemplo, ” -FR ” – também seleciona a listagem do item.

Quando a lista de caracteres de seleção de campo contém o único caractere ‘ ? ‘, lsof exibe uma lista de ajuda dos caracteres de identificação do campo. Escapar do ‘ ? ‘como seu shell requer.

-g [ s ]exclui ou seleciona a listagem de arquivos para os processos cujos números de identificação de grupo de processos opcionais (PGID) estão no conjunto separado por vírgula s – por exemplo, ” 123 ” ou ” 123, ^ 456 “. Nota Não deve haver espaços no conjunto.

Os números PGID que começam com ‘ ^ ‘ (negação) representam exclusões.

Vários números PGID são unidos em um único conjunto ORed antes de participar da seleção da opção AND. No entanto, as exclusões de PGID são aplicadas sem ORing ou ANDing e entram em vigor antes que outros critérios de seleção sejam aplicados.

A opção -g também permite a exibição dos números PGID de saída. Quando especificado sem um conjunto PGID, é tudo o que faz.

-iseleciona a lista de arquivos cujo endereço na Internet corresponde ao endereço especificado em i . Se nenhum endereço for especificado, essa opção seleciona a listagem de todos os arquivos de rede da Internet e x.25 (HP-UX).

Se -i4 ou -i6 for especificado sem o seguinte endereço, apenas os arquivos da versão IP indicada, IPv4 ou IPv6, serão exibidos. Uma especificação IPv6 pode ser usada apenas se os dialetos suportarem IPv6, conforme indicado por ” [46] ” e ” IPv [46] ” em lsof ‘s -h ou -? resultado. Especificar sequencialmente -i4 , seguido por -i6 é o mesmo que especificar -i e vice-versa. Especificar -i4 ou -i6 após -i é o mesmo que especificar -i4 ou -i6 por si só.

Vários endereços (até um limite de 100) podem ser especificados com várias opções -i . Um número de porta ou intervalo de nomes de serviço é contado como um endereço. Eles são unidos em um único conjunto ORed antes de participar da seleção da opção AND.

Um endereço da Internet é especificado no formulário (os itens entre colchetes são opcionais):

  [4 | 6] [ protocolo ] [@ nome do host |  hostaddr ] [: serviço |  porta ]
46.especifica a versão IP, IPv4 ou IPv6 que se aplica ao seguinte endereço. ‘ 6 ‘ pode ser especificado apenas se o dialeto UNIX suportar IPv6. Se nem ‘ 4 ‘ nem ‘ 6 ‘ forem especificados, o endereço a seguir se aplica a todas as versões de IP.
protocoloé um nome de protocolo – TCP , UDP
nome de anfitriãoé um nome de host da Internet. A menos que uma versão IP específica seja especificada, os arquivos de rede abertos associados aos nomes de host de todas as versões serão selecionados.
hostaddré um endereço IPv4 numérico da Internet em forma de ponto; ou um endereço numérico IPv6 em dois pontos, entre colchetes, se o dialeto UNIX suportar IPv6. Quando uma versão IP é selecionada, apenas seus endereços numéricos podem ser especificados.
serviçoé um nome / etc / services – por exemplo, smtp – ou uma lista deles.
portaé um número de porta ou uma lista deles.

As opções IPv6 podem ser usadas apenas se o dialeto UNIX suportar IPv6. Para ver se o dialeto suporta IPv6, execute lsof e especifique -h ou -? opção (ajuda). Se a descrição exibida da opção -i contiver ” [46] ” e ” IPv [46] “, o IPv6 será suportado.

Os nomes de host e endereços IPv4 podem não ser especificados se a seleção de arquivo de rede for limitada a IPv6 com -i 6. Os nomes de host e endereços IPv4 podem não ser especificados se a seleção de arquivo de rede for limitada a IPv4 com -i 4. Quando o endereço de um arquivo de rede IPv4 aberto for mapeado em um endereço IPv6, o tipo de arquivo aberto será IPv6, não IPv4, e sua exibição será selecionada por ‘ 6 ‘, não por ‘ 4 ‘.

Pelo menos um componente de endereço – 4 , 6 , protocolo , nome do host , hostaddr ou serviço – deve ser fornecido. O caractere ‘ @ ‘, liderando a especificação do host, é sempre necessário; como é o ‘ : ‘, liderando a especificação da porta. Especifique o nome do host ou o hostaddr. Especifique a lista de nomes de serviço ou a lista de números de porta. Se uma lista de nomes de serviço for especificada, o protocolo também poderá precisar ser especificado se os números de porta TCP, UDP e UDPLITE para o nome do serviço forem diferentes. Use qualquer caixa – inferior ou superior – para o protocolo.

Os nomes de serviço e os números de porta podem ser combinados em uma lista cujas entradas são separadas por vírgulas e cujas entradas de intervalo numérico são separadas por sinais de menos. Pode não haver espaços incorporados e todos os nomes de serviço devem pertencer ao protocolo especificado. Como os nomes de serviço podem conter sinais de menos incorporados, a entrada inicial de um intervalo não pode ser um nome de serviço; no entanto, pode ser um número de porta.

Aqui estão alguns exemplos de endereços:

-i6Somente IPv6
TCP: 25TCP e porta 25
@ 1.2.3.4Endereço de host IPv4 da Internet 1.2.3.4
@ [ 3ffe: 1ebc :: 1 ] : 1234Endereço de host IPv6 da Internet 3ffe: 1ebc :: 1 , porta 1234
UDP: quemUDP que atende a porta
[email protected] : 513TCP , porta 513 e nome do host lsof.itap
tcp@foo : 1-10, smtp, 99TCP , portas 1 a 10 , nome do serviço smtp , porta 99 , nome do host foo
tcp@bar : 1-smtpTCP , portas 1 a smtp , barra de host
:Tempoporta de serviço de tempo TCP , UDP ou UDPLITE
-Kseleciona a listagem de tarefas de processos, em dialetos nos quais o relatório de tarefas é suportado. Se ajudar a saída – ou seja, a saída do -h ou -? opções – mostra essa opção; o relatório de tarefas é suportado pelo dialeto.

Quando -K e -a são especificados e as tarefas de um processo principal são selecionadas por outras opções, o processo principal também será listado como se fosse uma tarefa, mas sem um ID de tarefa.

-k kespecifica um arquivo de lista de nomes do kernel, k , no lugar de / vmunix , / mach , etc. -k não está disponível no AIX no IBM RISC / System 6000.
-euinibe a conversão de números de ID do usuário em nomes de login. Também é útil quando a pesquisa de nome de login está funcionando incorretamente ou lentamente.
+ | -L [ l ]ativa (‘ + ‘) ou desativa (‘  ‘) a lista de contagens de links de arquivos, onde elas estão disponíveis – por exemplo, elas não estão disponíveis para soquetes ou para a maioria dos FIFOs e tubulações.

Quando + L for especificado sem um número a seguir, todas as contagens de links serão listadas. Quando -L for especificado (o padrão), nenhuma contagem de links será listada.

Quando + L é seguido por um número, apenas os arquivos com uma contagem de links menor que esse número serão listados (nenhum número pode seguir -L ). Uma especificação no formato ” + L1 ” selecionará arquivos abertos que foram desvinculados. Uma especificação no formato ” + aL1 <sistema de arquivos> ” selecionará arquivos abertos não vinculados no sistema de arquivos especificado.

Para outras comparações de contagem de links, use a saída de campo ( -F ) e um script ou programa de pós-processamento.

+ | -m mespecifica um arquivo de memória do kernel alternativo ou ativa o processamento de suplemento da tabela de montagem.

A opção form -m m especifica um arquivo de memória do kernel, m , no lugar de / dev / kmem ou / dev / mem – por exemplo, um arquivo de despejo de memória .

A opção form + m solicita que um arquivo de suplemento de montagem seja gravado no arquivo de saída padrão. Todas as outras opções são ignoradas silenciosamente.

Haverá uma linha no arquivo de suplemento de montagem para cada sistema de arquivos montado, contendo o diretório do sistema de arquivos montado, seguido por um único espaço, seguido pelo número do dispositivo no formato hexadecimal ” 0x ” – por exemplo,

  / 0x801

O lsof pode usar o arquivo de suplemento mount para obter números de dispositivos para sistemas de arquivos quando não puder obtê-los via stat ou lstat .

O formulário de opção + m m identifica m como um arquivo de suplemento de montagem.

Nota: as opções + me + m m não estão disponíveis para todos os dialetos suportados. Verifique a saída de lsof’s -h ou -? opções para ver se as opções + me + m m estão disponíveis.

+ | -MAtiva ( + ) ou desativa (  ) o relatório de registros do portmapper para portas TCP , UDP e UDPLITE locais, nas quais o mapeamento de portas é suportado.

O modo de relatório padrão é definido pelo construtor lsof com o HASPMAPENABLED #define no arquivo de cabeçalho machine.h do dialeto; lsof é distribuído com o HASPMAPENABLED #define desativado, portanto, o relatório do portmapper é desativado por padrão e deve ser solicitado com + M. Especificando lsof ‘s -h ou -? A opção reportará o modo padrão. Desabilitar o registro do portmapper quando ele já estiver desativado ou ativá-lo quando já estiver ativado é aceitável. Quando o relatório de registro do portmapper está ativado, lsof exibe o registro do portmapper (se houver) para portas TCP , UDP ou UDPLITE locais entre colchetes imediatamente após os números das portas ou nomes de serviço – por exemplo, ” : 1234 [name] ” ou ” : name [ 100083] “. As informações de registro podem ser um nome ou número, dependendo do que o programa de registro forneceu ao portmapper quando ele registrou a porta.

Quando o relatório de registro do portmapper está ativado, lsof pode ser executado um pouco mais lentamente ou até ficar bloqueado quando o acesso ao portmapper fica congestionado ou parado. Inverta o modo de relatório para determinar se o relatório de registro do portmapper está diminuindo ou bloqueando lsof .

Para fins de relatório de registro do portmapper, lsof considera uma porta TCP, UDP ou UDPLITE local, se for encontrada na parte local de sua estrutura de kernel; ou se ele estiver localizado na parte externa de sua estrutura de kernel que contém e os endereços da Internet locais e estrangeiros são os mesmos; ou se ele estiver localizado na parte externa da estrutura do kernel que o contém e o endereço da Internet externo for INADDR_LOOPBACK ( 127.0.0.1 ). Essa regra pode fazer com que o lsof ignore algumas portas estrangeiras em máquinas com várias interfaces quando o endereço da Internet externo estiver em uma interface diferente da local.

O relatório de registro do Portmapper é suportado apenas em dialetos que possuem arquivos de cabeçalho RPC. Algumas distribuições Linux com GlibC 2.14 não as possuem. Quando o relatório de registro do portmapper é suportado, o -h ou -? saída de ajuda mostrará o + | Opção -M .

-ninibe a conversão de números de rede em nomes de host para arquivos de rede. Inibir a conversão pode tornar lsof mais rápido. Também é útil quando a pesquisa de nome de host não está funcionando corretamente.
-Nseleciona a lista de arquivos NFS.
-odireciona lsof para exibir o deslocamento do arquivo o tempo todo. Faz com que o título da coluna de saída SIZE / OFF seja alterado para OFFSET. Nota: em alguns dialetos UNIX, o lsof não pode obter informações precisas ou consistentes sobre deslocamento de arquivos de suas fontes de dados do kernel, às vezes apenas para tipos específicos de arquivos (por exemplo, arquivos de soquete).

As opções -o e -s são mutuamente exclusivas; eles não podem ser especificados. Quando nenhum é especificado, lsof exibe qualquer valor (tamanho ou deslocamento) que seja apropriado e disponível para o tipo de arquivo.

-o odefine o número de dígitos decimais ( o ) a serem impressos após o ” 0t ” para um deslocamento de arquivo antes que o formulário seja alternado para ” 0x … “. Um valor o zero (ilimitado) direciona lsof para usar o formulário ” 0t ” para todas as saídas de deslocamento.

Esta opção NÃO direciona lsof para exibir o deslocamento o tempo todo; especifique -o (sem um número à direita) para fazer isso. -o o especifica apenas o número de dígitos após ” 0t ” no tamanho misto e na saída offset ou somente offset. Assim, por exemplo, para direcionar lsof para exibir o deslocamento todo o tempo com uma contagem de dígitos decimais de 10, use:

  -o -o 10

ou

  -oo10

O número padrão de dígitos permitido após ” 0t ” é normalmente 8 , mas pode ter sido alterado pelo construtor lsof . Consulte a descrição da opção -o o na saída da opção -h ou -? opção para determinar o padrão em vigor.

-Oinstrui o lsof a ignorar a estratégia usada para evitar ser bloqueado por algumas operações do kernel – ou seja, fazê-las em processos filhos bifurcados.

Embora o uso dessa opção reduza a sobrecarga da inicialização, ele também poderá travar a interrupção quando o kernel não responder a uma função. Use esta opção com cuidado.

-p sexclui ou seleciona a listagem de arquivos para os processos cujos números opcionais de identificação de processo (PID) estão no conjunto separado por vírgula s – por exemplo, ” 123 ” ou ” 123, ^ 456 “. Não deve haver espaços no conjunto.

Os números PID que começam com ‘ ^ ‘ (negação) representam exclusões.

Vários números de identificação do processo são unidos em um único conjunto ORed antes de participar da seleção da opção AND. No entanto, exclusões de PID são aplicadas sem ORing ou ANDing e entram em vigor antes que outros critérios de seleção sejam aplicados.

-Pinibe a conversão de números de porta em nomes de porta para arquivos de rede. Inibir a conversão pode tornar lsof um pouco mais rápido. Também é útil quando a pesquisa do nome da porta não está funcionando corretamente.
+ | -r [ t [ m <fmt> ]]coloca lsof no modo de repetição. Existem listas de arquivos abertos, conforme selecionado por outras opções, atrasa t segundos (padrão quinze) e repete a listagem, atrasando e listando repetidamente até parar por uma condição definida pelo prefixo da opção.

Se o prefixo for um ‘  ‘, o modo de repetição é interminável. Lsof deve ser finalizado com um sinal de interrupção ou saída.

Se o prefixo for ‘ + ‘, o modo de repetição encerrará o primeiro ciclo e nenhum arquivo aberto será listado – e, é claro, quando lsof for parado com um sinal de interrupção ou saída . Quando o modo de repetição termina porque nenhum arquivo está listado, o código de saída do processo será zero se algum arquivo aberto tiver sido listado; um, se nenhum deles já foi listado.

lsof marca o final de cada listagem: se a saída do campo estiver em andamento (a opção -F foi especificada), o marcador padrão é ‘ m ‘; caso contrário, o marcador padrão é ” ======== “. O marcador é seguido por um caractere NL.

O argumento opcional ” m <fmt> ” especifica um formato para a linha do marcador. Os caracteres <fmt> após ‘ m ‘ são interpretados como uma especificação de formato para a função strftime , quando ela e a função localtime estão disponíveis na biblioteca C do dialeto. Consulte a documentação do strftime para saber o que pode aparecer em sua especificação de formato. Observe que quando a saída do campo é solicitada com a opção -F , <fmt> não pode conter o formato NL, ” % n “. Observe também que quando <fmt> contém espaços ou outros caracteres que afetam a interpretação dos argumentos do shell, <fmt> deve ser citado adequadamente.

O modo de repetição reduz lsof sobrecarga de inicialização, portanto, é mais eficiente usar esse modo do que chamar lsof repetidamente de um script de shell, por exemplo.

Para usar o modo de repetição com mais eficiência, acompanhe + | -r com especificação de outras opções de seleção lsof, para que a quantidade de acesso à memória do kernel lsof seja mantida no mínimo. As opções que filtram no nível do processo – por exemplo, -c , -g , -p , -u – são os seletores mais eficientes.

O modo de repetição é útil quando associado à saída do campo (consulte -F , descrição da opção) e um awk ou script de Perl supervisionado ou um programa em C.

-Rdireciona lsof para listar o número de identificação do processo pai na coluna PPID.
-s [ p : s ]s sozinho direciona lsof para exibir o tamanho do arquivo o tempo todo. Faz com que o título da coluna de saída SIZE / OFF seja alterado para SIZE. Se o arquivo não tiver um tamanho, nada será exibido.

Quando seguido por um nome de protocolo ( p ), TCP ou UDP , dois pontos (‘ : ‘) e uma lista de nomes de estado de protocolo separados por vírgula, a opção faz com que arquivos TCP e UDP abertos sejam excluídos se os nomes de estado estão nas listas precedidas por um ‘ ^ ‘; ou incluído se seus nomes não forem precedidos por um ‘ ^ ‘.

Quando uma lista de inclusão é definida, apenas os arquivos de rede com nomes de estado na lista estarão presentes na saída lsof. Assim, especificar um nome de estado significa que apenas os arquivos de rede com esse nome de estado único serão listados.

O caso não é importante nos nomes de protocolo ou estado, mas pode não haver espaços e os dois pontos (‘ : ‘) separando o nome do protocolo ( p ) e a ( s ) lista ( s ) de nomes de estado são necessários.

Se apenas os arquivos TCP e UDP forem listados, conforme controlado pelas exclusões e inclusões especificadas, a opção -i também deverá ser especificada. Se apenas os arquivos de um protocolo forem listados, adicione seu nome como argumento à opção -i .

Por exemplo, para listar apenas arquivos de rede com o estado TCP LISTEN, use:

  -iTCP -sTCP: LISTEN

Ou, por exemplo, para listar arquivos de rede com todos os estados UDP, exceto ocioso, use:

  -iUDP -sUDP: ocioso

Os nomes dos estados variam com os dialetos UNIX, portanto, não é possível fornecer uma lista completa. Alguns nomes de estado TCP comuns são: CLOSED, IDLE, BOUND, LISTEN, ESTABLISHED, SYN_SENT, SYN_RCDV, ESTABLISHED, CLOSE_WAIT, FIN_WAIT1, CLOSING, LAST_ACK, FIN_WAIT_2 e TIME_WAIT. Dois nomes de estado UDP comuns são Não vinculados e Inativos.

As opções -o (sem uma contagem de dígitos decimais seguintes) e -s (sem um protocolo e lista de nomes de estados a seguir) são mutuamente exclusivas; eles não podem ser especificados. Quando nenhum é especificado, lsof exibe qualquer valor – tamanho ou deslocamento – é apropriado e disponível para o tipo de arquivo. Como alguns tipos de arquivos não possuem tamanhos verdadeiros (soquetes, FIFOs , pipes etc.), lsof exibe para seus tamanhos a quantidade de conteúdo em seus buffers de kernel associados, se possível.

-S [ t ]especifica um valor opcional de segundos de tempo limite para funções do kernel (lstat, readlink e stat) – que, de outra forma, poderiam causar um conflito. O mínimo para t é dois; o padrão, quinze; quando nenhum valor é especificado, o padrão é usado.
-T [ t ]controla o relatório de algumas informações de TCP / TPI, também relatadas pelo netstat , seguindo os endereços de rede. Na saída normal, as informações aparecem entre parênteses, cada item, exceto o nome do estado TCP ou TPI, identificado por uma palavra-chave, seguido por ‘ = ‘, separado dos outros por um único espaço:

  <Nome do estado TCP ou TPI>
  QR = <comprimento da fila de leitura>
  QS = <comprimento da fila de envio>
  SO = <opções e valores de soquete>
  SS = <estados do soquete>
  TF = <sinalizadores e valores TCP>
  WR = <comprimento da leitura da janela>
  WW = <comprimento de gravação da janela>

Nem todos os valores são relatados para todos os dialetos do UNIX. Os valores dos itens (quando disponíveis) são relatados após o nome do item e ‘ = ‘.

Quando o modo de saída do campo está em vigor (consulte SAÍDA PARA OUTROS PROGRAMAS), cada item aparece como um campo com o caractere inicial ‘ T ‘.

-T sem os seguintes caracteres-chave desativa o relatório de informações de TCP / TPI.

-T com os seguintes caracteres seleciona o relatório de informações específicas de TCP / TPI:

fseleciona relatórios de opções de soquete, estados e valores e sinalizadores e valores TCP.
qseleciona relatórios de tamanho da fila.
sseleciona relatórios de estado de conexão.
Wseleciona relatórios de tamanho de janela.

Nem todas as seleções estão ativadas para alguns dialetos UNIX. O estado pode ser selecionado para todos os dialetos e é relatado por padrão. O -h ou -? A saída de ajuda para a opção -T mostrará quais seleções podem ser usadas com o dialeto UNIX.

Quando -T é usado para selecionar informações (isto é, é seguido por um ou mais caracteres de seleção), a exibição do estado é desativada por padrão e deve ser explicitamente selecionada novamente nos caracteres após -T . Com efeito, então, o padrão é equivalente a -Ts . Por exemplo, se desejar comprimento e estado da fila, use -Tqs .

Opções de soquete, estados de soquete, alguns valores de soquete, sinalizadores TCP e um valor TCP podem ser relatados (quando disponíveis no dialeto UNIX) na forma dos nomes que geralmente aparecem após SO_ , so_ , SS_ , TCP_ e TF_ no cabeçalho do dialeto arquivos – geralmente <sys / socket.h> , <sys / socketvar.h> e <netinet / tcp_var.h> . Consulte esses arquivos de cabeçalho para obter o significado dos sinalizadores, opções, estados e valores.

” SO = ” precede opções e valores de soquete; ” SS = “, estados do soquete; and ” TF= “, TCP flags and values.

If a flag or option has a value, the value will follow an ‘ = ‘ and the name — eg, ” SO=LINGER=5 “, ” SO=QLIM=5 “, ” TF=MSS=512 “. The following seven values may be reported:

name reporteddescription (common symbol)
KEEPALIVEkeep alive time ( SO_KEEPALIVE )
LINGERlinger time ( (SO_LINGER) )
MSSmaximum segment size ( (TCP_MAXSEG) )
PQLENpartial listen queue connections
QLENestablished listen queue connections
QLIMestablished listen queue limit
RCVBUFreceive buffer length ( (SO_RCVBUF) )
SNDBUFsend buffer length ( (SO_SNDBUF) )
-tspecifies that lsof should produce terse output with process identifiers only and no header; eg, so that the output may be piped to kill. -t selects the -w option.
-u sselects the listing of files for the user whose login names or user ID numbers are in the comma-separated set s ; eg, ” abe “, or ” 548,root “. There should be no spaces in the set.

Multiple login names or user ID numbers are joined in a single ORed set before participating in AND option selection.

If a login name or user ID is preceded by a ‘ ^ ‘, it becomes a negation — ie, files of processes owned by the login name or user ID will never be listed. A negated login name or user ID selection is neither ANDed nor ORed with other selections; it is applied before all other selections and absolutely excludes the listing of the files of the process. For example, to direct lsof to exclude the listing of files belonging to root processes, specify ” -u^root ” or ” -u^0 “.

-VOCÊselects the listing of UNIX domain socket files.
-vselects the listing of lsof version information, including: revision number; when the lsof binary was constructed; who constructed the binary and where; the name of the compiler used to construct the lsof binary; the version number of the compiler when readily available; the compiler and loader flags used to construct the lsof binary; and system information, typically the output of uname ‘s -a option.
-Vdirects lsof to indicate the items it was asked to list and failed to find — command names, file names, Internet addresses or files, login names, NFS files, PIDs, PGIDs, and UIDs.

When other options are ANDed to search options, or compile-time options restrict the listing of some files, lsof may not report that it failed to find a search item when an ANDed option or compile-time option prevents the listing of the open file containing the located search item.

For example, ” lsof -V -iTCP@foobar -a -d 999 ” may not report a failure to locate open files at ” TCP@foobar ” and may not list any, if none have a file descriptor number of 999. A similar situation arises when HASSECURITY and HASNOSOCKSECURITY are defined at compile time and they prevent the listing of open files.

+ | -WEnables ( + ) or disables (  ) the suppression of warning messages.

The lsof builder may choose to have warning messages disabled or enabled by default. The default warning message state is indicated in the output of the -h or -? opção. Disabling warning messages when they are already disabled or enabling them when already enabled is acceptable.

The -t option selects the -w option.

-x [ fl ]may accompany the +d and +D options to direct their processing to cross over symbolic links and|or file system mount points encountered when scanning the directory ( +d ) or directory tree ( +D ).

If -x is specified by itself without a following parameter, crossover processing of both symbolic links and file system mount points is enabled. Note that when -x is specified without a parameter, the next argument must begin with ‘  ‘ or ‘ + ‘.

The optional ‘ f ‘ parameter enables file system mount point crossover processing; ‘ l ‘, symbolic link crossover processing.

The -x option may not be supplied without also supplying a +d or +D option.

-XThis is a dialect-specific option.

AIX:

This IBM AIX RISC/System 6000 option requests the reporting of executed text file and shared library references.

WARNING: because this option uses the kernel readx() function, its use on a busy AIX system might cause an application process to hang so completely that it can neither be killed nor stopped.

By default, use of readx() is disabled. On AIX 5L and above, lsof may need setuid-root permission to perform the actions this option requests.

The lsof builder may specify that the -X option be restricted to processes whose real UID is root. If that has been done, the -X option will not appear in the -h or -? help output unless the real UID of the lsof process is root. The default lsof distribution allows any UID to specify -X , so by default it will appear in the help output.

When AIX readx() use is disabled, lsof may not be able to report information for all text and loader file references, but it may also avoid exacerbating an AIX kernel directory search kernel error, known as the Stale Segment ID bug.

The readx() function, used by lsof or any other program to access some sections of kernel virtual memory, can trigger the Stale Segment ID bug. It can cause the kernel’s dir_search() function to believe erroneously that part of an in-memory copy of a file system directory has been zeroed. Another application process, distinct from lsof , asking the kernel to search the directory — eg, by using open — can cause dir_search() to loop forever, thus hanging the application process.

Linux:

This Linux option requests that lsof skip the reporting of information on all open TCP, UDP and UDPLITE IPv4 and IPv6 files.

This Linux option is most useful when the system has an extremely large number of open TCP, UDP and UDPLITE files, the processing of whose information in the /proc/net/tcp* and /proc/net/udp* files would take lsof a long time, and whose reporting is not of interest.

Use this option with care and only when you are sure that the information you want lsof to display isn’t associated with open TCP, UDP or UDPLITE socket files.

Solaris 10 and above:

This Solaris 10 and above option requests the reporting of cached paths for files that have been deleted — ie, removed with rm or unlink .

The cached path is followed by the string ” (deleted) ” to indicate that the path by which the file was opened has been deleted.

Because intervening changes made to the path — ie, renames with mv or rename — are not recorded in the cached path, what lsof reports is only the path by which the file was opened, not its possibly different final path.

-z [ z ]specifies how Solaris 10 and higher zone information is to be handled.

Without a following argument — eg, no z — the option specifies that zone names are to be listed in the ZONE output column.

A opção -z pode ser seguida por um nome de zona, z . Isso faz com que lsof liste apenas arquivos abertos para processos nessa zona. Vários pares de opções e argumentos -z z podem ser especificados para formar uma lista de zonas nomeadas. Qualquer arquivo aberto de qualquer processo em qualquer uma das zonas será listado, sujeito a outras condições especificadas por outras opções e argumentos.

-Z [ Z ]especifica como os contextos de segurança do SELinux devem ser tratados. Ele e o suporte a caracteres de saída de campo ‘ Z ‘ são inibidos quando o SELinux é desativado no kernel Linux em execução.

Sem o argumento a seguir – por exemplo, sem Z – a opção especifica que os contextos de segurança devem ser listados na coluna de saída SECURITY-CONTEXT.

A opção -Z pode ser seguida por um nome de contexto de segurança curinga, Z. Isso faz com que lsof liste apenas arquivos abertos para processos nesse contexto de segurança. Vários pares de opções e argumentos -Z Z podem ser especificados para formar uma lista de contextos de segurança. Qualquer arquivo aberto de qualquer processo em qualquer um dos contextos de segurança será listado, sujeito a outras condições especificadas por outras opções e argumentos. Observe que Z pode ser A: B: C ou *: B: C ou A: B: * ou *: *: C para corresponder ao contexto A: B: C.

A opção de sinal de menos duplo é um marcador que sinaliza o final das opções com chave. Pode ser usado, por exemplo, quando o primeiro nome de arquivo começa com um sinal de menos. Também pode ser usado quando a ausência de um valor para a última opção com chave deve ser significada pela presença de um sinal de menos na opção a seguir e antes do início dos nomes dos arquivos.
nomesEsses são os nomes dos caminhos dos arquivos específicos a serem listados. Links simbólicos são resolvidos antes do uso. O primeiro nome pode ser separado das opções anteriores com a opção ”  “.

Se um nome for o diretório montado de um sistema de arquivos ou o dispositivo do sistema de arquivos, lsof listará todos os arquivos abertos no sistema de arquivos. Para ser considerado um sistema de arquivos, o nome deve corresponder a um nome de diretório montado na saída de montagem ou corresponder ao nome de um dispositivo de bloco associado a um nome de diretório montado. + | A opção -f pode ser usada para forçar lsof a considerar um nome como identificador do sistema de arquivos ( + f ) ou como um arquivo simples ( -f ).

Se name é o caminho para um diretório que não é o nome de diretório montado em um sistema de arquivos, ele é tratado da mesma maneira que um arquivo regular – ou seja, sua listagem é restrita a processos que o abrem como um arquivo ou como um diretório específico do processo, como o diretório raiz ou de trabalho atual. Para solicitar que lsof procure arquivos abertos dentro de um nome de diretório, use as opções + d s e + D D.

Se um nome é o nome base de uma família de arquivos multiplexados – e. g, / dev / pt [ cs ] do AIX – lsof listará todos os arquivos multiplexados associados no dispositivo que estão abertos – por exemplo, / dev / pt [ cs ] / 1 , / dev / pt [ cs ] / 2 , etc.

Se um nome é um nome de soquete de domínio UNIX, o lsof geralmente o procura apenas pelos caracteres do nome – exatamente como ele é especificado e é registrado na estrutura de soquete do kernel. Consulte o próximo parágrafo para obter uma exceção a essa regra para Linux. A especificação de um caminho relativo – por exemplo, ./file – no lugar do caminho absoluto do arquivo – por exemplo, / tmp / file – não funcionará porque lsof deve corresponder aos caracteres especificados com o que é encontrado nas estruturas de soquete de domínio UNIX do kernel.

Se um nome for um nome de soquete de domínio Linux UNIX, em um caso, lsof poderá procurá-lo por seu número de dispositivo e inode, permitindo que o nome seja um caminho relativo. O caso requer que o caminho absoluto – ou seja, um começando com uma barra (‘ / ‘) seja usado pelo processo que criou o soquete e, portanto, seja armazenado no arquivo / proc / net / unix ; e exige que lsof seja capaz de obter o número do dispositivo e do nó do caminho absoluto em / proc / net / unix e o nome por meio de chamadas bem-sucedidas do sistema stat . Quando essas condições forem atendidas, lsof poderá procurar o soquete do domínio UNIX quando algum caminho para ele for especificado no nome. Assim, por exemplo, se o caminho for / dev / log e uma pesquisa lsof for iniciada quando o diretório de trabalho for / dev , o nome poderá ser ./log .

Se um nome não estiver acima, lsof listará todos os arquivos abertos cujo dispositivo e inode correspondem ao nome do caminho especificado.

Se você também especificou a opção -b , os únicos nomes que você pode especificar com segurança são os sistemas de arquivos para os quais sua tabela de montagem fornece números de dispositivos alternativos.

Vários nomes de arquivos são unidos em um único conjunto ORed antes de participar da seleção da opção AND.

AFS

O AFS (o Andrew File System, um sistema de arquivos distribuído em rede) é suportado pelo lsof para esses dialetos (e versões do AFS):

  • AIX 4.1.4 (AFS 3.4a)
  • HP-UX 9.0.5 (AFS 3.4a)
  • Linux 1.2.13 (AFS 3.3)
  • Solaris 2. [56] (AFS 3.4a)

Ele pode reconhecer arquivos AFS em outras versões desses dialetos, mas não foi testado lá. Dependendo de como o AFS é implementado, lsof pode reconhecer arquivos AFS em outros dialetos ou pode ter dificuldades em reconhecer arquivos AFS nos dialetos suportados.

lsof pode ter problemas para identificar todos os aspectos dos arquivos AFS nos dialetos suportados quando o suporte ao kernel do AFS é implementado por meio de módulos dinâmicos cujos endereços não aparecem na lista de nomes de variáveis ​​do kernel. Nesse caso, lsof pode ter que adivinhar a identidade dos arquivos AFS e pode não conseguir obter informações de volume do kernel necessárias para calcular os números de nós do volume AFS. Quando lsof não pode calcular números de nós de volume, ele é reportado em branco na coluna NODE.

A opção -A A está disponível em algumas implementações de dialeto de lsof para especificar o arquivo da lista de nomes onde os endereços do kernel do módulo dinâmico podem ser encontrados. Quando esta opção estiver disponível, ela será listada na saída de ajuda lsof , apresentada em resposta ao -h ou -?

Como as pesquisas de caminho do AFS parecem não participar das operações de cache de nome do kernel, lsof não pode identificar os componentes do nome do caminho para arquivos AFS.

Segurança

lsof possui três recursos que podem causar problemas de segurança. Primeiro, seu modo de compilação padrão permite que qualquer pessoa liste todos os arquivos abertos. Segundo, por padrão, ele cria um arquivo de cache de dispositivo legível e gravável pelo usuário no diretório inicial do ID do usuário real que executa lsof . Os recursos listar todos os arquivos abertos e cache do dispositivo podem ser desativados quando lsof é compilado. Terceiro, suas opções -k e -m nomeiam uma lista alternativa de nomes de kernel ou arquivos de memória.

A restrição da listagem de todos os arquivos abertos é controlada pelas opções HASSECURITY e HASNOSOCKSECURITY em tempo de compilação . Quando HASSECURITY é definido, lsof permitirá que apenas o usuário root liste todos os arquivos abertos. O usuário não raiz pode listar apenas arquivos abertos de processos com o mesmo número de identificação do usuário que o número real do ID do usuário do processo lsof (aquele com o qual o usuário fez logon).

No entanto, se HASSECURITY e HASNOSOCKSECURITY forem definidos, qualquer um poderá listar arquivos de soquete aberto, desde que selecionados com a opção -i .

Quando HASSECURITY não está definido, qualquer um pode listar todos os arquivos abertos.

Saída de ajuda, apresentada em resposta ao -h ou -? opção, fornece o status das definições HASSECURITY e HASNOSOCKSECURITY .

A criação e o uso de um arquivo de cache de dispositivo legível e gravável pelo usuário são controlados pela opção HASDCACHE em tempo de compilação . Por considerações de segurança, é importante observar que, na distribuição lsof padrão, se o ID do usuário real sob o qual lsof é executado for root, o arquivo de cache do dispositivo será gravado no diretório inicial do root – por exemplo, / ou / root . Quando HASDCACHE não está definido, lsof não grava nem tenta ler um arquivo de cache do dispositivo.

Quando HASDCACHE é definido, o lsof ajuda a saída, apresentado em resposta ao -h , -D? ou -? opções, fornecerá informações sobre o manuseio de arquivos em cache do dispositivo. Quando HASDCACHE não está definido, o -h ou -? a saída não terá a descrição da opção -D .

Antes de decidir desabilitar o recurso de arquivo de cache do dispositivo – habilitando-o para melhorar o desempenho do lsof , reduzindo a sobrecarga de inicialização ao examinar todos os nós em / dev (ou / devices ) – leia a discussão sobre ele no arquivo DCACHE da distribuição lsof e as lsof FAQ.

QUANDO EM DÚVIDA, PODE DESATIVAR TEMPORARIAMENTE O USO DO ARQUIVO DE CACHE DO DISPOSITIVO COM A OPÇÃO -Di .

Quando lsof user declara lista de nomes alternativos do kernel ou arquivos de memória com as opções -k e -m , lsof verifica a autoridade do usuário para lê-los com acesso. Isso visa impedir que qualquer poder especial que os modos de DS possam conferir, permita que ele leia arquivos que normalmente não são acessíveis através da autoridade do ID do usuário real.

Resultado

Esta seção descreve as informações das listas para cada arquivo aberto.

lsof apenas gera caracteres de 8 bits imprimíveis (declarados pelo isprint ). Caracteres não imprimíveis são impressos em uma das três formas: a forma C ” \ [bfrnt] “; a forma do caractere de controle ‘ ^ ‘ (por exemplo, ” ^ @ “); ou no formato ” \ x ” inicial hexadecimal (por exemplo, ” \ xab “). O espaço não é imprimível na coluna COMMAND (” \ x20 “) e pode ser impresso em outro lugar.

Para alguns dialetos – se HASSETLOCALE estiver definido no arquivo de cabeçalho machine.h do dialeto – o lsof imprimirá os caracteres estendidos de 8 bits de um código de idioma. O processo lsof deve receber uma variável de ambiente de código de idioma (por exemplo, LANG ) cujo valor represente um código de idioma conhecido no qual os caracteres estendidos sejam considerados imprimíveis pelo isprint . Caso contrário, lsof considera os caracteres estendidos não imprimíveis e os imprime de acordo com suas regras para caracteres não imprimíveis, declarados acima. Consulte a página de manual setlocale do dialeto para obter os nomes de outras variáveis ​​de ambiente que podem ser usadas no lugar do LANG – por exemplo, LC_ALL , LC_CTYPE , etc.

O suporte ao código de idioma do lsof para um dialeto também abrange caracteres largos – por exemplo, UTF-8 – quando HASSETLOCALE e HASWIDECHAR são definidos no arquivo de cabeçalho machine.h do dialeto e quando um código de idioma adequado foi definido na variável de ambiente apropriada para o processo lsof . Caracteres largos são imprimíveis nessas condições se a iswprint os reportar. Se HASSETLOCALE , HASWIDECHAR e um local de idioma adequado não estiverem definidos, ou se o iswprint relatar caracteres largos que não são imprimíveis, lsof considera os caracteres largos não imprimíveis e imprime cada um de seus 8 bits de acordo com suas regras para caracteres não imprimíveis , Afirmado acima.

Consulte as respostas para as perguntas “Suporte ao código do idioma” nas Perguntas frequentes sobre lsof. A seção FAQ fornece sua localização para mais informações.

lsof dimensiona dinamicamente as colunas de saída toda vez que é executada, garantindo que cada coluna tenha um tamanho mínimo. Também garante que cada coluna seja separada de seu predecessor por pelo menos um espaço.

COMANDOcontém os nove primeiros caracteres do nome do comando UNIX associado ao processo. Se um valor w diferente de zero for especificado para a opção + cw , a coluna conterá os primeiros caracteres w do nome do comando UNIX associado ao processo até o limite de caracteres fornecidos a lsof pelo dialeto UNIX.

Se w for menor que o comprimento do título da coluna, ” COMANDO “, ele será aumentado para esse comprimento.

Se um valor zero w for especificado para a opção + cw , a coluna conterá todos os caracteres do nome do comando UNIX associado ao processo.

Todos os caracteres do nome do comando mantidos pelo kernel em suas estruturas são exibidos na saída do campo quando o descritor do nome do comando (‘ c ‘) é especificado.

PIDé o número de identificação do processo.
TIDé o número de identificação da tarefa, se um relatório de tarefa for suportado pelo dialeto e uma tarefa estiver sendo listada. Se ajudar a saída – ou seja, a saída do -h ou -? opções – mostra essa opção; o relatório de tarefas é suportado pelo dialeto.

Uma coluna TID em branco indica um processo – ou seja, uma não-tarefa.

ZONAé o nome da zona Solaris 10 e superior. Esta coluna deve ser selecionada com a opção -z .
CONTEXTO DE SEGURANÇAé o contexto de segurança do SELinux. Esta coluna deve ser selecionada com a opção -Z . Observe que a opção -Z é inibida quando o SELinux é desativado no kernel Linux em execução.
PPIDé o número de identificação do processo pai do processo. É exibido apenas quando a opção -R foi especificada.
PGIDé o número de identificação do grupo de processos associado ao processo. É exibido apenas quando a opção -g foi especificada.
DO UTILIZADORé o número de ID do usuário ou o nome de login do usuário ao qual o processo pertence, geralmente o mesmo relatado por ps . No entanto, no Linux USER é o número de ID do usuário ou o login que possui o diretório em / proc em que lsof encontra informações sobre o processo. Geralmente ,, é o mesmo valor relatado por ps , mas pode diferir quando o processo altera seu ID do usuário efetivo.
FDé o número do descritor de arquivo do arquivo ou:

cwddiretório de trabalho atual;
L nnreferências de biblioteca (AIX);
errarErro de informação do FD (consulte a coluna NAME);
jlddiretório de prisão (FreeBSD);
ltxtexto da biblioteca compartilhada (código e dados);
M xxnúmero do tipo hexadecimal de memória mapeada xx.
m86Arquivo mapeado do DOS Merge;
memarquivo mapeado na memória;
mmapdispositivo mapeado na memória;
pdDiretório Parental;
rtddiretório raiz;
trarquivo de rastreio do kernel (OpenBSD);
TXTtexto do programa (código e dados);
v86Arquivo mapeado VP / ix;

FD é seguido por um desses caracteres, descrevendo o modo em que o arquivo está aberto:

rpara acesso de leitura;
Wpara acesso de gravação;
vocêpara acesso de leitura e gravação;
espaçose o modo for desconhecido e nenhum caractere de bloqueio se seguir;
se modo desconhecido e caractere de bloqueio a seguir

O caractere de modo é seguido por um desses caracteres de bloqueio, descrevendo o tipo de bloqueio aplicado ao arquivo:

Npara um bloqueio Solaris NFS de tipo desconhecido;
rpara bloqueio de leitura em parte do arquivo;
Rpara um bloqueio de leitura em todo o arquivo;
Wpara um bloqueio de gravação em parte do arquivo;
Wpara um bloqueio de gravação em todo o arquivo;
vocêpara um bloqueio de leitura e gravação de qualquer comprimento;
vocêpara uma fechadura de tipo desconhecido;
xpara um bloqueio do SCO OpenServer Xenix em parte do arquivo;
Xpara um bloqueio do SCO OpenServer Xenix em todo o arquivo;
espaçose não houver bloqueio.

O conteúdo da coluna FD constitui um único campo para análise nos scripts de pós-processamento.

TIPO

é o tipo do nó associado ao arquivo – por exemplo, GDIR , GREG , VDIR , VREG , etc.

ou ” IPv4 ” para um soquete IPv4;

ou ” IPv6 ” para um arquivo de rede IPv6 aberto – mesmo que seu endereço seja IPv4, mapeado em um endereço IPv6;

ou ” ax25 ” para um soquete Linux AX.25;

ou ” inet ” para um soquete de domínio da Internet;

ou ” lla ” para um arquivo de acesso no nível do link HP-UX;

ou ” rte ” para um soquete AF_ROUTE;

ou ” meia ” para um soquete de domínio desconhecido;

ou ” unix ” para um soquete de domínio UNIX;

ou ” x.25 ” para um soquete HP-UX x.25;

ou ” BLK ” para um arquivo especial de bloco;

ou ” CHR ” para um arquivo especial de caractere;

ou ” DEL ” para um arquivo de mapa do Linux que foi excluído;

ou ” DIR ” para um diretório;

ou ” PORTA ” para um arquivo VDOOR;

ou ” FIFO ” para um arquivo especial FIFO;

ou ” KQUEUE ” para um arquivo de fila de eventos do kernel no estilo BSD;

ou ” LINK ” para um arquivo de link simbólico;

ou ” MPB ” para um arquivo de bloco multiplexado;

ou ” MPC ” para um arquivo de caracteres multiplexado;

ou ” NOFD ” para um diretório Linux / proc / <PID> / fd que não pode ser aberto – o caminho do diretório aparece na coluna NAME, seguido por uma mensagem de erro.

ou ” PAS ” para um arquivo / proc / as ;

ou ” PAXV ” para um arquivo / proc / auxv ;

ou ” PCRE ” para um arquivo / proc / cred ;

ou ” PCTL ” para um arquivo de controle / proc ;

ou ” PCUR ” para o processo atual / proc ;

ou ” PCWD ” para um diretório de trabalho atual / proc ;

ou ” PDIR ” para um diretório / proc ;

ou ” PETY ” para um tipo executável / proc (etype);

ou ” PFD ” para um descritor de arquivo / proc ;

ou ” PFDR ” para um diretório de descritor de arquivo / proc ;

ou ” PFIL ” para um arquivo executável / proc ;

ou ” PFPR ” para um conjunto de registros FP / proc ;

ou ” PGD ” para um arquivo / proc / pagedata ;

ou ” PGID ” para um arquivo notificador do grupo / proc ;

ou ” TUBO ” para tubos;

ou ” PLC ” para um arquivo / proc / lwpctl ;

ou ” PLDR ” para um diretório / proc / lpw ;

ou ” PLDT ” para um arquivo / proc / ldt ;

ou ” PLPI ” para um arquivo / proc / lpsinfo ;

ou ” PLST ” para um arquivo / proc / lstatus ;

ou ” PLU ” para um arquivo / proc / lusage ;

ou ” PLWG ” para um arquivo / proc / gwindows ;

ou ” PLWI ” para um arquivo / proc / lwpsinfo ;

ou ” PLWS ” para um arquivo / proc / lwpstatus ;

ou ” PLWU ” para um arquivo / proc / lwpusage ;

ou ” PLWX ” para um arquivo / proc / xregs ‘

ou ” PMAP ” para um arquivo de mapa / proc (mapa);

ou ” PMEM ” para um arquivo de imagem de memória / proc ;

ou ” PNTF ” para um arquivo notificador de processo / proc ;

ou ” POBJ ” para um arquivo / proc / object ;

ou ” PODR ” para um diretório / proc / object ;

ou ” POLP ” para um arquivo de processo leve de formato / proc antigo;

ou ” POPF ” para um arquivo PID de formato / proc antigo;

ou ” POPG ” para um antigo formato / arquivo de dados da página de proc ;

ou ” PORT ” para um pipe nomeado SYSV;

ou ” PREG ” para um arquivo de registro / proc ;

ou ” PRMP ” para um arquivo / proc / rmap ;

ou ” PRTD ” para um diretório raiz / proc ;

ou ” PSGA ” para um arquivo / proc / sigact ;

ou ” PSIN ” para um arquivo / proc / psinfo ;

ou ” PSTA ” para um arquivo de status / proc ;

ou ” PSXSEM ” para um arquivo de semáforo POSIX ;

ou ” PSXSHM ” para um arquivo de memória compartilhada POSIX;

ou ” PUSG ” para um arquivo / proc / use ;

ou ” PW ” para um arquivo / proc / watch ;

ou ” PXMP ” para um arquivo / proc / xmap ;

ou ” REG ” para um arquivo regular;

ou ” SMT ” para um arquivo de transporte de memória compartilhada;

ou ” STSO ” para um soquete de fluxo;

ou ” UNNM ” para um arquivo de tipo sem nome;

ou ” XNAM ” para um arquivo especial do OpenServer Xenix de tipo desconhecido;

ou ” XSEM ” para um arquivo de semáforo OpenServer Xenix;

ou ” XSD ” para um arquivo de dados compartilhados do OpenServer Xenix;

ou os quatro octetos de número de tipo, se o nome correspondente não for conhecido.

FILE-ADDR

contém o endereço da estrutura de arquivos do kernel quando f foi especificado para + f ;

FCTcontém a contagem de referência de arquivo da estrutura de arquivo do kernel quando c foi especificado para f ;
BANDEIRA DE ARQUIVOquando g ou G for especificado para + f , esse campo conterá o conteúdo do membro f_flag [s] da estrutura de arquivos do kernel e os sinalizadores de arquivos abertos por processo do kernel (se disponíveis); ‘ G ‘ faz com que sejam exibidos em hexadecimal; ‘ g ‘, como nomes abreviados; duas listas podem ser exibidas com entradas separadas por vírgulas, as listas separadas por ponto e vírgula (‘ ; ‘); a primeira lista pode conter nomes abreviados para valores de f_flag [s] da tabela a seguir:

AIOE / S assíncrona (por exemplo, FAIO)
APacrescentar
ASYNE / S assíncrona (por exemplo, FASYNC )
BASbloquear, testar e colocar em uso
BKIUbloquear se estiver em uso
BLusar deslocamentos de bloco
BSKbloqueio de busca
CAcopiar evitar
CIOE / S simultânea
CLONclone
CLRDLeitura de CL
CRcrio
DFadiar
DFIadiar IND
DFLUdescarga de dados
DIRdireto
DLYdemora
DOCLclonar
DSYNintegridade apenas de dados
DTYdeve ser um diretório
EVOsomente evento
EXaberto para exec
EXCLaberto exclusivo
FSYNgravações síncronas
GCDFadiar durante unp_gc () (AIX)
GCMKmarca durante unp_gc () (AIX)
GTTYacessado via / dev / tty
HUPHUP em andamento
KERNnúcleo
KIOCioctl emitido pelo kernel
LCKtem trava
LGarquivo grande
MBLKbloco de mensagens de stream
MKmarca
MNTmontar
MSYNsincronização multiplex
NATMnão atualize atime
NBE / S sem bloqueio
NBDRnenhuma verificação de BDRM
NBIOE / S sem bloqueio SYSV
NBFn-buffer em vigor
NCsem cache
NDsem demora
NDSYsem sincronização de dados
INTERNETrede
NFLKnão siga os links
NMFSSistema de arquivos NM
NOTOdesativar parada de fundo
NSHsem compartilhamento
NTTYsem controle TTY
OLRMEspelho OLR
PAIOE / S assíncrona POSIX
PPTubo POSIX
Rler
RCcache de bloqueio de arquivos e registros
REVrevogado
RSHleitura compartilhada
RSYNler sincronização
RWacesso de leitura e gravação
SLbloqueio compartilhado
SNAPinstantâneo cozido
MEIAtomada
SQSHConjunto compartilhado sequencial em aberto
SQSVSVM sequencial definido em aberto
SQRReparo do conjunto sequencial em aberto
SQS1Aberto compartilhado completo sequencial
SQS2Aberto compartilhado parcial sequencial
STPIparar E / S
SWRleitura síncrona
SYNintegridade do arquivo durante a gravação
TCPMevitar colisão TCP
TRtruncar
WEscreva
WKUPsincronização de E / S paralela
WTGsincronização de E / S paralela
VHvhangup pendente
VTXTtexto virtual
XLfechadura exclusiva

essa lista de nomes foi derivada de F * #define nos arquivos de cabeçalho de dialeto <fcntl.h> , <linux / fs.h> , <sys / fcntl.c> , <sys / fcntlcom.h> e <sys /file.h> ; consulte o arquivo de cabeçalho lsof.h para obter uma lista mostrando a correspondência entre os nomes abreviados acima e as definições do arquivo de cabeçalho;

a segunda lista (após o ponto e vírgula) pode conter nomes abreviados para sinalizadores de arquivo aberto por processo do kernel desta tabela:

TUDO Calocado
BRo arquivo foi lido
BHUPatividade interrompida por SIGHUP
BWo arquivo foi gravado
CLSGfechamento
CXclose-on-exec (consulte fcntl (F_SETFD))
LCKbloqueio foi aplicado
MPmapeado em memória
OPIPaberto pendente – em andamento
RSVWespera reservada
SHMTConjunto UF_FSHMAT (AIX)
USARem uso (multiencadeado)
NODE-ID(ou INODE-ADDR para alguns dialetos) contém um identificador exclusivo para o nó do arquivo (geralmente o vnode do kernel ou o endereço do inode, mas também ocasionalmente uma concatenação do número do dispositivo e do nó) quando n for especificado como + f;
DISPOSITIVOcontém os números do dispositivo, separados por vírgulas, para um caractere especial, bloco especial, regular, diretório ou arquivo NFS;

ou “memória” para um nó do sistema de arquivos de memória no Tru64 UNIX;

ou o endereço da área de dados privada de um fluxo de soquete Solaris;

ou um endereço de referência do kernel que identifica o arquivo (o endereço de referência do kernel pode ser usado para FIFO, por exemplo.);

ou o endereço base ou o nome do dispositivo de um dispositivo de soquete Linux AX.25.

Geralmente, apenas os trinta e dois bits inferiores dos endereços do kernel do Tru64 UNIX são exibidos.

TAMANHO , TAMANHO / DESLIGADO ou DESLOCAMENTOé o tamanho do arquivo ou o deslocamento do arquivo em bytes. Um valor é exibido nesta coluna apenas se estiver disponível. Lsof exibe qualquer valor – tamanho ou deslocamento – é apropriado para o tipo de arquivo e a versão de lsof.

Em alguns dialetos do UNIX, lsof não pode obter informações precisas ou consistentes de deslocamento de arquivo de suas fontes de dados do kernel, às vezes apenas para tipos específicos de arquivos (por exemplo, arquivos de soquete). Em outros casos, os arquivos não têm tamanhos reais – por exemplo, soquetes, FIFOs, pipes -, de forma que lsof exibe para seus tamanhos as quantidades de conteúdo encontradas em seus descritores de buffer do kernel (por exemplo, contagens de tamanho de buffer de soquete ou tamanhos de janela TCP / IP) . Consulte as FAQs lsof (A seção FAQ fornece sua localização) para obter mais informações.

O tamanho do arquivo é exibido em decimal; o deslocamento é normalmente exibido em decimal com um “0t” inicial se contiver 8 dígitos ou menos; em hexadecimal com um “0x” inicial, se for maior que 8 dígitos. Consulte a descrição da opção -oo para obter informações sobre quando 8 pode ter como padrão algum outro valor.

Assim, os ” 0t ” e ” 0x ” iniciais identificam um deslocamento quando a coluna pode conter um tamanho e um deslocamento (ou seja, seu título é SIZE / OFF).

Se a opção -o for especificada, lsof sempre exibirá o deslocamento do arquivo (ou nada, se nenhum deslocamento estiver disponível) e rotulará a coluna OFFSET. O deslocamento sempre começa com ” 0t ” ou ” 0x “, conforme descrito acima.

O usuário pode controlar o interruptor de ” 0t ” para ” 0x ” com a opção -o o . Consulte sua descrição para mais informações.

Se a opção -s for especificada, lsof sempre exibirá o tamanho do arquivo (ou nada, se nenhum tamanho estiver disponível) e rotulará a coluna SIZE. As opções -o e -s são mutuamente exclusivas; eles não podem ser especificados.

Para arquivos que não têm um tamanho fixo – por exemplo, não residem em um dispositivo de disco – o lsof exibe informações apropriadas sobre o tamanho ou posição atual do arquivo, se ele estiver disponível nas estruturas do kernel que definem o arquivo.

NLINKcontém a contagem de links de arquivos quando + L foi especificado;
é o número do nó de um arquivo local;

ou o número do inode de um arquivo NFS no host do servidor;

ou o tipo de protocolo da Internet – e. g, ” TCP “;

ou ” STR ” para um vstream;

ou ” CCITT ” para um soquete HP-UX x.25;

ou o número de IRQ ou inode de um dispositivo de soquete Linux AX.25.

NOMEé o nome do ponto de montagem e sistema de arquivos no qual o arquivo reside;

ou o nome de um arquivo especificado na opção de nomes (após a resolução de qualquer link simbólico);

ou o nome de um personagem especial ou bloquear um dispositivo especial;

ou os endereços locais e remotos da Internet de um arquivo de rede; o nome do host local ou o número IP é seguido por dois pontos (‘ : ‘), a porta ” -> ” e o endereço remoto em duas partes; Os endereços IP podem ser relatados como números ou nomes, dependendo da + | Opções -M , -n e -P ; números IPv6 separados por dois pontos são colocados entre colchetes; Endereços IPv4 INADDR_ANY e IPv6 IN6_IS_ADDR_UNSPECIFIED , e número de porta zero é representado por um asterisco (‘ * ‘); um endereço de destino UDP pode ser seguido pela quantidade de tempo decorrido desde que o último pacote foi enviado ao destino; Os endereços remotos TCP, UDP e UDPLITE podem ser seguidos por informações de TCP / TPI entre parênteses – estado (por exemplo, ” (ESTABLISHED) “, ” (Não consolidado) “), tamanhos de filas e tamanhos de janelas (nem todos os dialetos) – de uma maneira semelhante ao que o netstat (1) relata; consulte a descrição da opção -T ou a descrição do campo TCP / TPI em OUTPUT FOR OTHER PROGRAMS para obter mais informações sobre estado, tamanho da fila e tamanho da janela;

ou o endereço ou nome de um soquete de domínio UNIX, possivelmente incluindo um nome de dispositivo de clone de fluxo, o nome do caminho de um objeto do sistema de arquivos, endereços de kernel locais e estrangeiros, informações de pares de soquetes e um endereço de nó de ligação;

ou os nomes dos pontos de montagem local e remoto de um arquivo NFS;

ou ” STR “, seguido pelo nome do fluxo;

ou um nome de dispositivo de caractere de fluxo, seguido por ” -> ” e o nome do fluxo ou uma lista de nomes de módulos de fluxo, separados por ” -> “;

ou ” STR: ” seguido pelos nomes dos dispositivos e módulos do fluxo SCO OpenServer, separados por ” -> “;

ou nome do diretório do sistema ”  ” e tantos componentes do nome do caminho quanto lsof podem encontrar no cache de nomes do kernel para dialetos selecionados;

ou ” PIPE-> “, seguido por um endereço de destino do pipe do kernel Solaris;

ou ” COMUM: “, seguido pelo nome do dispositivo da estrutura de informações do dispositivo vnode, para um vnode comum do Solaris;

ou a família de endereços, seguida por uma barra (‘/’), seguida por catorze bytes separados por vírgula de um endereço de soquete bruto não pertencente à Internet;

ou o endereço local HP-UX x.25, seguido pelo número da conexão virtual (se houver), seguido pelo endereço remoto (se houver);

ou ” (inoperante) ” para arquivos Tru64 UNIX desassociados – normalmente arquivos de terminal que foram sinalizados com o TIOCNOTTY ioctl e fechados por daemons;

ou ” rd = <offset> ” e ” wr = <offset> ” para os valores das compensações de leitura e gravação de um FIFO;

ou ” clone n: / dev / event ” para clones de arquivo SCO OpenServer do dispositivo / dev / event, em que n é o número menor de dispositivo do arquivo;

ou ” (socketpair: n) ” para um soquete de domínio Solaris 2.6, 8, 9 ou 10 UNIX, criado pela função de rede socketpair (3N);

ou ” sem PCB ” para arquivos de soquete que não possuem um bloco de protocolo associado a eles, opcionalmente seguido por ” , CANTSENDMORE ” se o envio no soquete foi desativado ou ” , CANTRCVMORE ” se o recebimento no soquete foi desativado (por exemplo, , pela função shutdown (2));

ou os endereços locais e remotos de um arquivo de soquete IPX do Linux no formato <net>: [<node>:] <port>, seguido entre parênteses pelos tamanhos das filas de transmissão e recebimento e pelo estado da conexão;

ou ” dgram ” ou ” stream ” para os soquetes de domínio UNIX do tipo UnixWare 7.1.1 e superior, seguidos de dois pontos (‘:’) e o nome do caminho local, quando disponível, seguido de ” -> ” e do controle remoto nome do caminho ou endereço do soquete do kernel em hexadecimal, quando disponível;

ou o valor da associação, índice de associação, valor do terminal, endereço local, porta local, endereço remoto e porta remota para soquetes SCTP do Linux.

Para dialetos que suportam um sistema de arquivos ” namefs “, permitindo que um arquivo seja anexado a outro com fattach , o lsof adicionará ” (FA: <endereço1> <direção> <endereço2> ) ” à coluna NAME. <endereço1> e <endereço2> são endereços de vnode hexadecimais. <direction> será ” < -” se <address2> tiver sido anexado a esse vnode cujo endereço é <address1> ; e ” -> ” se <endereço1> , o endereço de nó deste nó, foi anexado a <endereço2> . <endereço1> pode ser omitido se já aparecer na coluna DISPOSITIVO.

lsof pode adicionar duas notas entre parênteses à coluna NAME para arquivos abertos do Solaris 10: ” (?) ” se lsof considerar o nome do caminho com precisão questionável; e ” (excluído) ” se a opção -X tiver sido especificada e lsof detectar que o nome do caminho do arquivo aberto foi excluído.

FECHADURAS

lsof não pode relatar adequadamente a grande variedade de bloqueios de arquivos de dialeto UNIX em um único caractere. O que ele relata em um único caractere é um compromisso entre as informações que encontra no kernel e as limitações do formato de relatório.

Além disso, quando um processo contém vários bloqueios no nível de bytes em um arquivo, lsof relata apenas o status do primeiro bloqueio encontrado. Se for um bloqueio no nível de bytes, o caractere de bloqueio será relatado em letras minúsculas – ou seja, ‘ r ‘, ‘ w ‘ ou ‘ x ‘ – em vez do equivalente em maiúsculas relatado para um bloqueio de arquivo completo.

Geralmente lsof só pode relatar bloqueios mantidos por processos locais em arquivos locais. Quando um processo local define um bloqueio em um arquivo montado remotamente (por exemplo, NFS ), o host do servidor remoto geralmente registra o estado do bloqueio. Uma exceção é o Solaris – em alguns níveis de patch de 2.3 e em todas as versões acima de 2.4, o kernel Solaris registra informações sobre bloqueios remotos em estruturas locais.

O lsof tem problemas para relatar bloqueios para alguns dialetos do UNIX. Consulte a seção BUGS desta página do manual ou as FAQs lsof (A seção FAQ fornece sua localização) para obter mais informações.

SAÍDA PARA OUTROS PROGRAMAS

Quando a opção -F é especificada, lsof produz saída adequada para processamento por outro programa – por exemplo, um script awk ou Perl, ou um programa C.

Cada unidade de informação é emitida em um campo que é identificado com um caractere à esquerda e finalizado por um NL ( 012 ) (ou um NUL ( 000 ) se o caractere identificador de campo 0 (zero) for especificado). Os dados do campo seguem imediatamente após o caractere de identificação do campo e se estendem ao terminador do campo.

É possível pensar na saída do campo como conjuntos de processos e arquivos. Um conjunto de processos começa com um campo cujo identificador é ‘p’ (para identificador de processo (PID)). Ele se estende ao início do próximo campo PID ou ao início do primeiro conjunto de arquivos do processo, o que ocorrer primeiro. Incluídos no conjunto de processos estão os campos que identificam o comando, o número de identificação do grupo de processos (PGID), o número da tarefa e o número de identificação do usuário (UID) ou o nome de login.

Um conjunto de arquivos começa com um campo cujo identificador é ‘ f ‘ (para o descritor de arquivo). É seguido por linhas que descrevem o modo de acesso do arquivo, estado do bloqueio, tipo, dispositivo, tamanho, deslocamento, inode, protocolo, nome e nomes dos módulos de fluxo. Ele se estende até o início do próximo arquivo ou conjunto de processos, o que ocorrer primeiro.

Quando o terminador de campo NUL ( 000 ) for selecionado com o caractere identificador de campo 0 (zero), lsof encerra cada processo e conjunto de arquivos com um caractere NL ( 012 ).

lsof sempre produz um campo, o campo PID (‘ p ‘). Todos os outros campos podem ser declarados opcionalmente na lista de caracteres do identificador de campo que segue a opção -F . Quando um caractere de seleção de campo identifica um item que normalmente não é listado – por exemplo, PPID, selecionado com -R – a especificação do caractere de campo – por exemplo, ” -FR ” – também seleciona a listagem do item.

É inteiramente possível selecionar um conjunto de campos que não podem ser facilmente analisados ​​- por exemplo, se o campo do descritor de campos não estiver selecionado, pode ser difícil identificar conjuntos de arquivos. Para ajudar a evitar essa dificuldade, lsof suporta a opção -F ; ele seleciona a saída de todos os campos com terminadores NL (o par de opções -F0 seleciona a saída de todos os campos com terminadores NUL). Por motivos de compatibilidade, nem -F nem -F0 selecionam o campo do dispositivo bruto.

Estes são os campos que lsof produzirá. O único caractere listado primeiro é o identificador do campo.

umamodo de acesso a arquivos
cnome do comando do processo (todos os caracteres do proc ou da estrutura do usuário)
Ccontagem de compartilhamento da estrutura de arquivos
dcódigo de caractere do dispositivo do arquivo
Dnúmero de dispositivo principal / secundário do arquivo (0x <hexadecimal>)
fdescritor de arquivo
Fendereço da estrutura do arquivo (0x <hexadecimal>)
Garquivo flaGs (0x <hexadecimal> nomes se + fg segue)
gID do grupo de processos
Eunúmero de inode do arquivo
KID da tarefa
kcontagem de links
eustatus de bloqueio do arquivo
eunome de login do processo
mmarcador entre saída repetida
nnome do arquivo, comentário, endereço da Internet
Nidentificador de nó (ox <hexadecimal>)
odeslocamento do arquivo (decimal)
pprocess ID (always selected)
Pprotocol name
rraw device number (0x<hexadecimal>)
Rparent process ID
sfile’s size (decimal)
Sfile’s stream identification
tfile’s type
TTCP/TPI information, identified by prefixes (the ‘ = ‘ is part of the prefix):

 QR <read queue size>
QS <send queue size>
SO <socket options and values> (not all dialects)
SS <socket states> (not all dialects)
ST <connection state>
TF <TCP flags and values> (not all dialects)
WR <window read size> (not all dialects)
WW <window write size> (not all dialects)

TCP/TPI information isn’t reported for all supported UNIX dialects. The -h or -? help output for the -T option will show what TCP/TPI reporting can be requested.

vocêprocess user ID
zSolaris 10 and higher zone name
ZSELinux security context (inhibited when SELinux is disabled)
0 0Use NUL field terminator character in place of NL
1 – 9Dialect-specific field identifiers. The output of -F? identifies the information to be found in dialect-specific fields.

You can get online help information on these characters and their descriptions by specifying the -F? option pair. Escape the ‘ ? ‘ character as your shell requires.

As an example, ” -F pcfn ” will select the process ID (‘ p ‘), command name (‘ c ‘), file descriptor (‘ f ‘) and file name (‘ n ‘) fields with an NL field terminator character; ” -F pcfn0 ” selects the same output with a NUL (000) field terminator character.

lsof doesn’t produce all fields for every process or file set, only those that are available. Some fields are mutually exclusive: file device characters and file major/minor device numbers; file inode number and protocol name; file name and stream identification; file size and offset. One or the other member of these mutually exclusive sets will appear in field output, but not both.

Normally lsof ends each field with an NL ( 012 ) character. The 0 (zero) field identifier character may be specified to change the field terminator character to a NUL ( 000 ). A NUL terminator may be easier to process with xargs , for example, or with programs whose quoting mechanisms may not easily cope with the range of characters in the field output. When the NUL field terminator is in use, lsof ends each process and file set with an NL ( 012 ).

Three aids to producing programs that can process lsof field output are included in the lsof distribution. The first is a C header file, lsof_fields.h , that contains symbols for the field identification characters, indexes for storing them in a table, and explanation strings that may be compiled into programs. lsof uses this header file.

The second aid is a set of sample scripts that process field output, written in awk, Perl 4, and Perl 5. They’re located in the scripts subdirectory of the lsof distribution.

The third aid is the C library used for the lsof test suite. The test suite is written in C and uses field output to validate the correct operation of lsof . The library can be found in the tests/LTlib.c file of the lsof distribution. The library uses the first aid, the lsof_fields.h header file.

Blocks and timeouts

lsof can be blocked by some kernel functions that it uses — lstat , readlink , and stat . These functions are stalled in the kernel, for example, when the hosts where mounted NFS file systems reside become inaccessible.

lsof attempts to break these blocks with timers and child processes, but the techniques are not wholly reliable. When lsof does manage to break a block, it will report the break with an error message. The messages may be suppressed with the -t and -w options.

The default timeout value may be displayed with the -h or -? option, and it may be changed with the -S [ t ] option. The minimum for t is two seconds, but you should avoid small values since slow system responsiveness can cause short timeouts to expire unexpectedly and perhaps stop lsof before it can produce any output.

When lsof has to break a block during its access of mounted file system information, it normally continues, although with less information available to display about open files.

lsof can also be directed to avoid the protection of timers and child processes when using the kernel functions that might block by specifying the -O option. While this will allow lsof to start up with less overhead, it exposes lsof completely to the kernel situations that might block it. Use this option cautiously.

Avoiding kernel blocks

You can use the -b option to tell lsof to avoid using kernel functions that would block. Some cautions apply.

First, using this option usually requires that your system supply alternate device numbers in place of the device numbers that lsof would normally obtain with the lstat and stat kernel functions.

Second, you can’t specify names for lsof to locate unless they’re file system names. This is because lsof needs to know the device and inode numbers of files listed with names in the lsof options, and the -b option prevents lsof from obtaining them. Moreover, since lsof only has device numbers for the file systems that have alternates, its ability to locate files on file systems depends completely on the availability and accuracy of the alternates. If no alternates are available, or if they’re incorrect, lsof won’t be able to locate files on the named file systems.

Third, if the names of your file system directories that lsof obtains from your system’s mount table are symbolic links, lsof won’t be able to resolve the links. This is because the -b option causes lsof to avoid the kernel readlink function it uses to resolve symbolic links.

Finally, using the -b option causes lsof to issue warning messages when it needs to use the kernel functions that the -b option directs it to avoid. You can suppress these messages by specifying the -w option, but if you do, you won’t see the alternate device numbers reported in the warning messages.

Alternate device numbers

On some dialects, when lsof has to break a block because it can’t get information about a mounted file system via the lstat and stat kernel functions, or because you specified the -b option, lsof can obtain some of the information it needs — the device number and possibly the file system type — from the system mount table. When that is possible, lsof will report the device number it obtained. You can suppress the report by specifying the -w option.

You can assist this process if your mount table is supported with an /etc/mtab or /etc/mnttab file that contains an options field by adding a ” dev= xxxx ” field for mount points that do not have one in their options strings. Note: you must be able to edit the file — ie, some mount tables like recent Solaris /etc/mnttab or Linux /proc/mounts are read-only and can’t be modified.

You may also be able to supply device numbers using the +m and +m m options, provided they are supported by your dialect. Check the output of lsof ‘s -h or -? options to see if the +m and +m m options are available.

The ” xxxx ” portion of the field is the hexadecimal value of the file system’s device number. Consult the st_dev field of the output of the lstat and stat functions for the appropriate values for your file systems. Here’s an example from a Sun Solaris 2.6 /etc/mnttab for a file system remotely mounted via NFS:

 nfs ignore,noquota,dev=2a40001

There’s an advantage to having ” dev= xxxx ” entries in your mount table file, especially for file systems that are mounted from remote NFS servers. When a remote server crashes and you want to identify its users by running lsof on one of its clients, lsof probably won’t be able to get output from the lstat and stat functions for the file system. If it can obtain the file system’s device number from the mount table, it will be able to display the files open on the crashed NFS server.

Some dialects that do not use an ASCII /etc/mtab or /etc/mnttab file for the mount table may still provide an alternative device number in their internal mount tables. This includes AIX, Apple Darwin, FreeBSD, NetBSD, OpenBSD, and Tru64 UNIX. Lsof knows how to obtain the alternative device number for these dialects and uses it when its attempt to lstat or stat the file system is blocked.

If you’re not sure your dialect supplies alternate device numbers for file systems from its mount table, use this lsof incantation to see if it reports any alternate device numbers:

 lsof -b

Look for standard error file warning messages that begin ” assuming “dev= xxxx ” from … “.

Kernel name cache

lsof can examine the kernel’s name cache or use other kernel facilities (eg, the ADVFS 4.x tag_to_path() function under Tru64 UNIX) on some dialects for most file system types, excluding AFS, and extract recently used path name components from it. AFS file system path lookups don’t use the kernel’s name cache; some Solaris VxFS file system operations apparently don’t use it, either.

lsof reports the complete paths it finds in the NAME column. If lsof can’t report all components in a path, it reports in the NAME column the file system name, followed by a space, two ‘  ‘ characters, another space, and the name components it has located, separated by the ‘ / ‘ character.

When lsof is run in repeat mode — ie, with the -r option specified — the extent to which it can report path name components for the same file may vary from cycle to cycle. That’s because other running processes can cause the kernel to remove entries from its name cache and replace them with others.

Lsof’s use of the kernel name cache to identify the paths of files can lead it to report incorrect components under some circumstances. This can happen when the kernel name cache uses device and node number as a key (eg, SCO OpenServer) and a key on a rapidly changing file system is reused. If the UNIX dialect’s kernel doesn’t purge the name cache entry for a file when it is unlinked, lsof may find a reference to the wrong entry in the cache.

lsof can report path name components for these dialects:

  • FreeBSD
  • HP-UX
  • Linux
  • NetBSD
  • NEXTSTEP
  • OpenBSD
  • OPENSTEP
  • SCO OpenServer
  • SCO|Caldera UnixWare
  • Solaris
  • Tru64 UNIX

lsof can’t report path name components for these dialects:

  • AIX

Device cache file

Examining all members of the /dev (or /devices ) node tree with stat functions can be time consuming. What’s more, the information that lsof needs — device number, inode number, and path — rarely changes.

Consequently, lsof normally maintains an ASCII text file of cached /dev (or /devices ) information (exception: the /proc-based Linux lsof where it’s not needed). The local system administrator who builds lsof can control the way the device cache file path is formed, selecting from these options:

  • Path from the -D option;
  • Path from an environment variable;
  • System-wide path;
  • Personal path (the default);
  • Personal path, modified by an environment variable.

Consult the output of the -h , -D? , or -? help options for the current state of device cache support. The help output lists the default read-mode device cache file path that is in effect for the current invocation of lsof . The -D? option output lists the read-only and write device cache file paths, the names of any applicable environment variables, and the personal device cache path format.

lsof can detect that the current device cache file has been accidentally or maliciously modified by integrity checks, including the computation and verification of a sixteen bit Cyclic Redundancy Check (CRC) sum on the file’s contents. When lsof senses something wrong with the file, it issues a warning and attempts to remove the current cache file and create a new copy, but only to a path that the process can legitimately write.

The path from which a lsof process may attempt to read a device cache file may not be the same as the path to which it can legitimately write. Thus when lsof senses that it needs to update the device cache file, it may choose a different path for writing it from the path from which it read an incorrect or outdated version.

If available, the -Dr option will inhibit the writing of a new device cache file. It’s always available when specified without a path name argument.

When a new device is added to the system, the device cache file may need to be recreated. Since lsof compares the mtime of the device cache file with the mtime and ctime of the /dev (or /devices ) directory, it usually detects that a new device has been added; in that case lsof issues a warning message and attempts to rebuild the device cache file.

Whenever lsof writes a device cache file, it sets its ownership to the real UID of the executing process, and its permission modes to 0600, this restricting its reading and writing to the file’s owner.

lsof permissions that affect device cache file access

Two permissions of the lsof executable affect its ability to access device cache files. The permissions are set by the local system administrator when lsof is installed.

The first and rarer permission is setuid-root. It comes into effect when lsof is executed; its effective UID is then root, while its real (ie, that of the logged-on user) UID is not. The lsof distribution recommends that versions for these dialects run setuid-root:

  • HP-UX 11.11 and 11.23
  • Linux

The second and more common permission is setgid. It comes into effect when the effective group IDentification number (GID) of the lsof process is set to one that can access kernel memory devices — eg, ” kmem “, ” sys “, or ” system “.

An lsof process that has setgid permission usually surrenders the permission after it has accessed the kernel memory devices. When it does that, lsof can allow more liberal device cache path formations. The lsof distribution recommends that versions for these dialects run setgid and be allowed to surrender setgid permission.

  • AIX 5.[12] and 5.3-ML1
  • Apple Darwin 7.x Power Macintosh systems
  • FreeBSD 4.x, 4.1x, 5.x and [6789].x for x86-based systems FreeBSD 5.x and [6789].x for Alpha, AMD64 and Sparc64-based systems
  • HP-UX 11.00
  • NetBSD 1.[456], 2.x and 3.x for Alpha, x86, and SPARC-based systems
  • NEXTSTEP 3.[13] for NEXTSTEP architectures
  • OpenBSD 2.[89] and 3.[0-9] for x86-based systems
  • OPENSTEP 4.x
  • SCO OpenServer Release 5.0.6 for x86-based systems
  • SCO|Caldera UnixWare 7.1.4 for x86-based systems
  • Solaris 2.6, 8, 9 and 10
  • Tru64 UNIX 5.1

Note: lsof for AIX 5L and above needs setuid-root permission if its -X option is used.

lsof for these dialects does not support a device cache, so the permissions given to the executable don’t apply to the device cache file:

  • Linux

Device cache file path from the -D option

A opção -D fornece meios limitados para especificar o caminho do arquivo de cache do dispositivo. É A Função reportará OS Caminhos de Arquivo de cache de fazer Dispositivo SOMENTE Leitura e gravação that lsof usará.

Quando as funções -D b , re u estão disponíveis, você pode usá-las para solicitar que o arquivo de cache seja construído em um local específico (b [caminho]); ler mas não reconstruído (r [caminho]); ou lido e reconstruído (u [caminho]). As funções b , re u são restritas sob algumas condições. Eles são restritos quando o processo lsof é setuid-root. O caminho especificado com a função r é sempre somente leitura, mesmo quando está disponível.

As funções b , re u também são restritas quando o processo lsof executa setgid e lsof não renuncia à permissão setgid.

Uma função -D adicional, i (para ignorar), está sempre disponível.

Quando disponível, a função b diz ao lsof para ler as informações do dispositivo do kernel com a função stat e criar um arquivo de cache do dispositivo no caminho indicado.

Quando disponível, a função r diz ao lsof para ler o arquivo de cache do dispositivo, mas não para atualizá-lo. Quando um argumento de caminho acompanha -Dr , ele nomeia o caminho do arquivo de cache do dispositivo. A função r está sempre disponível quando é especificada sem um argumento de nome de caminho. Se lsof não estiver executando o setuid-root e render sua permissão setgid, um argumento de nome do caminho poderá acompanhar a função r .

Quando disponível, a função u instrui lsof para tentar ler e usar o arquivo de cache do dispositivo. Se não conseguir ler o arquivo, ou se encontrar o conteúdo incorreto ou desatualizado, ele lerá as informações do kernel e tentará escrever uma versão atualizada do arquivo de cache do dispositivo, mas apenas para um caminho que considere legítimos para o lsof processo UIDs efetivos e reais.

Caminho do cache do dispositivo a partir de uma variável de ambiente

A segunda opção de lsof para o arquivo de cache do dispositivo é o conteúdo da variável de ambiente LSOFDEVCACHE . Isso evita essa opção se o processo lsof for setuid-root ou se o UID real do processo for root.

Uma restrição adicional se aplica a um caminho do arquivo de cache do dispositivo obtido da variável de ambiente LSOFDEVCACHE : lsof não gravará um arquivo de cache do dispositivo no caminho se o processo lsof não renunciar à sua permissão setgid.

O administrador do sistema local pode desativar o uso da variável de ambiente LSOFDEVCACHE ou alterar seu nome ao criar lsof . Consulte a saída de -D? para o nome da variável de ambiente.

Caminho de cache do dispositivo em todo o sistema

O administrador do sistema local pode optar por ter um arquivo de cache do dispositivo em todo o sistema ao criar lsof . Esse arquivo geralmente será construído por um procedimento especial de administração do sistema quando o sistema for inicializado ou quando o conteúdo de / dev ou / devices ) for alterado. Se definido, é a terceira opção de caminho do arquivo de cache do dispositivo.

Você pode dizer que um arquivo de cache do dispositivo em todo o sistema está em vigor para sua instalação local examinando a saída da opção lsof help – ou seja, a saída do -h ou -? opção.

lsof nunca gravará no caminho do arquivo de cache do dispositivo em todo o sistema por padrão. Ele deve ser nomeado explicitamente com uma função -D em um procedimento de propriedade da raiz. Depois que o arquivo foi gravado, o procedimento deve alterar seus modos de permissão para 0644 (leitura do proprietário e gravação do proprietário, leitura do grupo e outra leitura).

Caminho do cache do dispositivo pessoal (padrão)

O caminho padrão do arquivo de cache do dispositivo da distribuição lsof é aquele gravado no diretório inicial do UID real que executa o lsof. Adicionado ao diretório inicial é um segundo componente do caminho no formato .lsof_hostname .

Essa é a quarta opção de caminho do arquivo de cache do dispositivo, e geralmente é o padrão. Se um caminho do arquivo de cache do dispositivo em todo o sistema foi definido quando lsof foi criado, essa quarta opção será aplicada quando lsof não conseguir encontrar o arquivo de cache do dispositivo em todo o sistema. Este é o único momento em que lsof usa dois caminhos ao ler o arquivo de cache do dispositivo.

A parte do nome do host do segundo componente é o nome base do host em execução, conforme retornado por gethostname . O nome base é definido como os caracteres que precedem o primeiro ‘ . ‘na saída gethostname , ou em toda a saída gethostname, se ela não contiver’ . 

O arquivo de cache do dispositivo pertence ao ID do usuário e é legível e gravável apenas pelo ID do usuário – ou seja, seus modos são 0600 . Cada ID de usuário real distinto em um determinado host que executa lsof possui um arquivo de cache de dispositivo distinto. A parte do nome do host do caminho distingue os arquivos de cache do dispositivo em um diretório inicial montado no NFS no qual os arquivos de cache do dispositivo são gravados a partir de hosts diferentes.

O caminho do arquivo de cache do dispositivo pessoal formado por esse método representa um arquivo de cache do dispositivo que lsof tentará ler e tentará gravar caso ele não exista ou seu conteúdo esteja incorreto ou desatualizado.

A opção -Dr sem um argumento de nome de caminho inibirá a gravação de um novo arquivo de cache do dispositivo.

-D? A opção listará a especificação de formato para a construção do arquivo de cache do dispositivo pessoal. As conversões usadas na especificação de formato são descritas no arquivo 00DCACHE da distribuição lsof .

Caminho de cache do dispositivo pessoal modificado

Se essa opção for definida pelo administrador do sistema local quando lsof for construído, o conteúdo da variável de ambiente LSOFPERSDCPATH poderá ser usado para adicionar um componente do caminho do arquivo de cache do dispositivo pessoal.

O conteúdo da variável LSOFPERSDCPATH é inserido no caminho no local marcado pelo administrador do sistema local com a conversão ” % p ” na especificação de formato HASPERSDC do arquivo de cabeçalho machine.h do dialeto. Ele é colocado logo após o diretório inicial na distribuição lsof padrão.

Assim, por exemplo, se LSOFPERSDCPATH contiver ” LSOF “, o diretório inicial será ” / Homes / abe “, o nome do host será ” lsof.itap.purdue.edu ” e o formato HASPERSDC será o padrão (” % h /% p .lsof_% L “), o caminho do arquivo de cache do dispositivo pessoal modificado é:

/Homes/abe/LSOF/.lsof_vic

A variável de ambiente LSOFPERSDCPATH é ignorada quando o processo lsof é setuid-root ou quando o UID real do processo é root.

O lsof não gravará em um caminho de arquivo de cache do dispositivo pessoal modificado se o processo lsof não renunciar à permissão setgid.

Se, por exemplo, você desejar criar um subdiretório de caminhos de arquivo de cache de dispositivo pessoal usando a variável de ambiente LSOFPERSDCPATH para nomeá-la e lsof não renunciar a sua permissão setgid, será necessário permitir que lsof crie arquivos de cache de dispositivo no diretório caminho pessoal padrão e mova-os para seu subdiretório com comandos de shell.

O administrador do sistema local pode: desativar esta opção quando lsof for criado; altere o nome da variável de ambiente de LSOFPERSDCPATH para outra coisa; altere o formato HASPERSDC para incluir o componente de caminho pessoal em outro local; ou excluir completamente o componente de caminho pessoal. Consulte a saída do -D? opção para o nome da variável de ambiente e a especificação de formato HASPERSDC .

Diagnóstico

Os erros são identificados com mensagens no arquivo de erro padrão.

Lsof retorna 1 ( um ) se algum erro foi detectado, incluindo a falha em localizar nomes de comando, nomes de arquivos, endereços ou arquivos da Internet, nomes de login, arquivos NFS , PIDs, PGIDs ou UIDs que foram solicitados a listar. Se a opção -V for especificada, lsof indicará os itens de pesquisa que não foram listados.

Retorna zero ( 0 ) se nenhum erro foi detectado e se foi possível listar algumas informações sobre todos os argumentos de pesquisa especificados.

Quando lsof não pode abrir o acesso a / dev (ou / devices ) ou a um de seus subdiretórios, ou obter informações sobre um arquivo neles com stat , ele emite uma mensagem de aviso e continua. Esse lsof emitirá mensagens de aviso sobre arquivos inacessíveis em / dev (ou / devices ) é indicado em sua saída de ajuda – solicitada com o comando -h ou > B -? opções – com a mensagem:

  Avisos inacessíveis / dev estão ativados.

A mensagem de aviso pode ser suprimida com a opção -w . Também pode ter sido suprimido pelo administrador do sistema quando lsof foi compilado pela configuração da definição WARNDEVACCESS . Nesse caso, a saída das opções de ajuda incluirá a mensagem:

Avisos inacessíveis / dev estão desabilitados.

As mensagens de aviso de dispositivo inacessíveis geralmente desaparecem depois que o lsof criou um arquivo de cache do dispositivo em funcionamento.

Exemplos

Para um conjunto mais extenso de exemplos, documentado de maneira mais completa, consulte o arquivo QUICKSTART da distribuição lsof.

Para listar todos os arquivos abertos, use:

  lsof

Para listar todos os arquivos de domínio da Internet abertos, x.25 (HP-UX) e UNIX, use:

  lsof -i -U

Para listar todos os arquivos de rede IPv4 abertos em uso pelo processo cujo PID é 1234, use:

  lsof -i 4 -a -p 1234

Presumindo que o dialeto UNIX seja compatível com IPv6, para listar apenas arquivos de rede IPv6 abertos, use:

  lsof -i 6

Para listar todos os arquivos usando qualquer protocolo nas portas 513, 514 ou 515 do host wonderland.cc.purdue.edu, use:

  O que outras pessoas estão dizendo

Para listar todos os arquivos usando qualquer protocolo em qualquer porta mace.cc.purdue.edu (cc.purdue.edu é o domínio padrão), use:

  lsof -i @mace

Para listar todos os arquivos abertos para o nome de login “abe”, ou ID do usuário 1234, ou processo 456, processo 123 ou 789, use:

  lsof -p 456.123.789 -u 1234, abe

Para listar todos os arquivos abertos no dispositivo / dev / hd4, use:

  lsof / dev / hd4

Para encontrar o processo que possui / u / abe / foo aberto, use:

  lsof / u / abe / foo

Para enviar um SIGHUP para os processos que possuem / u / abe / bar aberto, use:

  kill -HUP 'lsof -t / u / abe / bar'

Para localizar qualquer arquivo aberto, incluindo um arquivo de soquete de domínio UNIX aberto, com o nome / dev / log, use:

  lsof / dev / log

Para localizar processos com arquivos abertos no sistema de arquivos NFS chamado / nfs / mount / point cujo servidor está inacessível, e presumindo que sua tabela de montagem forneça o número do dispositivo para / nfs / mount / point, use:

  lsof -b / nfs / mount / point

Para fazer a pesquisa anterior com as mensagens de aviso suprimidas, use:

  lsof -bw / nfs / mount / point

Para ignorar o arquivo de cache do dispositivo, use:

  lsof -Di

Para obter a saída do campo PID e nome do comando para cada processo, descritor de arquivo, número do dispositivo do arquivo e número do inode do arquivo para cada arquivo de cada processo, use:

  lsof -FpcfDi

Para listar os arquivos nos descritores 1 e 3 de cada processo executando o comando lsof para o ID de login “abe” a cada 10 segundos, use:

  lsof -c lsof -a -d 1 -d 3 -u abe -r10

Para listar o diretório de trabalho atual dos processos que executam um comando com exatamente quatro caracteres e um ‘o’ ou ‘O’ no caractere três, use este formulário de expressão regular da opção -cc:

  lsof -c /^..o.$/i -a -d cwd

Para localizar um arquivo de soquete IP versão 4 por seu endereço numérico de ponto associado, use:

  lsof [email protected]

Para localizar um arquivo de soquete IP versão 6 (quando o dialeto UNIX suportar IPv6) por seu endereço numérico de dois pontos associado, use:

  lsof -i@ [0: 1: 2: 3: 4: 5: 6: 7]

Para localizar um arquivo de soquete IP versão 6 (quando o dialeto UNIX suporta IPv6) por um endereço numérico de dois pontos associado a uma série de zeros – por exemplo, o endereço de loopback – use:

  lsof -i@ [:: 1]

Para obter uma linha de marcador no modo de repetição que contém a hora atual, use:

  lsof -rm ====% T ====

Para adicionar espaços à linha de marcador anterior, use:

  lsof -r "m ====% T ===="

Insetos

Como o lsof lê a memória do kernel em sua busca por arquivos abertos, mudanças rápidas na memória do kernel podem produzir resultados imprevisíveis.

Quando um arquivo possui vários bloqueios de registro, o caractere de status do bloqueio (após o descritor de arquivo) é derivado de um teste da primeira estrutura de bloqueio, não de qualquer combinação dos bloqueios de registro individuais que possam ser descritos por várias estruturas de bloqueio.

O lsof não pode procurar arquivos com permissões de acesso restritivas por nome, a menos que esteja instalado com a permissão root-set-UID. Caso contrário, ele estará limitado à pesquisa de arquivos aos quais seu usuário ou seu grupo set-GID (se houver) tenha permissão de acesso.

A exibição do endereço de destino de um soquete bruto (por exemplo, para ping ) depende do sistema operacional UNIX. Alguns dialetos armazenam o endereço de destino no bloco de controle de protocolo do soquete bruto, outros não.

lsof nem sempre pode representar os números de dispositivos Solaris da mesma maneira que ls . Por exemplo, os números de dispositivos principais e secundários que as funções lstat e stat relatam para o diretório em que os arquivos de CD-ROM estão montados (normalmente / cdrom ) não são os mesmos que são relatados para o dispositivo em que CD-ROM arquivos são montados (normalmente / dev / sr0 ). lsof relata os números de diretório.

O suporte para sistemas de arquivos / proc está disponível apenas para dialetos BSD e Tru64 UNIX, Linux e dialetos derivados do SYSV R4 – por exemplo, FreeBSD, NetBSD, OpenBSD, Solaris, UnixWare.

Alguns itens de arquivo / proc – número do dispositivo, número do inode e tamanho do arquivo – não estão disponíveis em alguns dialetos. A procura de arquivos em um sistema de arquivos / proc pode exigir que o nome do caminho completo seja especificado.

Nenhum descritor de arquivo de texto (txt) é exibido para processos do Linux. Todas as entradas para arquivos que não sejam o diretório de trabalho atual, o diretório raiz e os descritores numéricos de arquivos são rotulados como descritores de memória.

lsof não pode procurar por pipes nomeados Tru64 UNIX por nome, porque a implementação do lstat no kernel retorna um número de dispositivo inadequado para um pipe nomeado.

O lsof não pode relatar total ou corretamente os bloqueios HP-UX 9.01, 10.20 e 11.00 devido ao acesso insuficiente aos dados do kernel ou erros nos dados do kernel.

O tipo de arquivo AIX SMT é uma fabricação. Ele é composto por estruturas de arquivos cujo tipo ( 15 ) não está definido no arquivo de cabeçalho AIX /usr/include/sys/file.h . Uma maneira de criar essas estruturas de arquivo é executar clientes X com a variável DISPLAY definida como ” : 0.0 “.

+ | A opção -f [ cfgGn ] não é suportada no Linux lsof baseado em / proc , porque não lê estruturas do kernel na memória do kernel.

Meio Ambiente

lsof pode acessar essas variáveis ​​de ambiente.

LANGdefine um código de idioma. Veja setlocale para os nomes de outras variáveis ​​que podem ser usadas no lugar de LANG – por exemplo, LC_ALL , LC_TYPE , etc.
LSOFDEVCACHEdefine o caminho para um arquivo de cache do dispositivo.
LSOFPERSDCPATHdefine o componente do meio de um caminho do arquivo de cache do dispositivo pessoal modificado.

Perguntas frequentes

As perguntas freqüentes e suas respostas (uma FAQ) estão disponíveis no arquivo FAQ da distribuição lsof .

Esse arquivo também está disponível via ftp anônimo no URL ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ .

arquivos

/ dev / kmemdispositivo de memória virtual do kernel
/ dev / memdispositivo de memória física
/ dev / swapdispositivo de paginação do sistema
.lsof_ hostnamearquivo de cache do dispositivo de iss. O sufixo, nome do host , é o primeiro componente do nome do host retornado por gethostname .

Distribuição

A distribuição mais recente do lsof está disponível via ftp anônimo no host lsof.itap.purdue.edu. Você encontrará a distribuição lsof no diretório pub / tools / unix / lsof.

Você também pode usar este URL: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof .

Lsof também é espelhado em outro lugar. Ao acessar lsof.itap.purdue.edu e mudar para o diretório pub / tools / unix / lsof , você receberá uma lista de alguns sites espelho. O diretório pub / tools / unix / lsof também contém uma lista mais completa em seu arquivo mirrors. Ao usar espelhos, observe que nem todos os espelhos sempre têm as últimas revisões da revisão.

Alguns executáveis lsof pré-compilados estão disponíveis em lsof.itap.purdue.edu , mas seu uso é desencorajado – é melhor que você crie seu próprio a partir das fontes. Se você acha que deve usar um executável pré-compilado, leia as precauções que aparecem nos arquivos README dos subdiretórios pub / tools / unix / lsof / binaries e nos arquivos 00 * da distribuição.

Mais informações sobre a distribuição lsof podem ser encontradas no arquivo README.lsof_ <versão> . Se você pretende obter a distribuição lsof e construí-la, leia README.lsof_ <versão> e os outros arquivos 00 * da distribuição antes de enviar perguntas ao autor.

awk – Intérprete para a linguagem de programação de processamento de texto AWK.
kill – envia um sinal para um processo, afetando seu comportamento ou matando-o.
mount – Monte um sistema de arquivos para que seus dados possam ser acessados.
netstat – Imprime informações sobre conexões de rede, tabelas de roteamento, estatísticas de interface, conexões mascaradas e associações multicast.
perl – Intérprete para a linguagem de programação Perl.
ps – Relate o status de um processo ou processos.
stat – Exibe o status de um arquivo ou sistema de arquivos.
time – Relate quanto tempo leva para que um comando seja executado.
uname – Imprime informações sobre o sistema atual.

19 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.