Manuais para a linha de comandos

Man » Manual do lsof online - documentação online detalhada para a página de manual do lsof

🌍
lsof - listar arquivos abertos

SINTAXE

lsof [ -?abChHlnNOPQRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ]
[  +|-f  [cfgGn]  ]  [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [
+|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [  -u  s  ]  [
+|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [nomes]

DESCRIÇÃO

Lsof revisão 4.99.4 lista em sua saída padrão informações sobre arquivos abertos por processos para os seguintes dialetos UNIX:

Apple Darwin 9, Mac OS X 10, macOS 11 e versões superiores
FreeBSD 8.2 e versões superiores
Linux 2.1.72 e versões superiores
NetBSD 1.2 e versões superiores
OpenBSD 7.2 e versões superiores
Solaris 9, 10 e 11 e versões superiores
OpenIndiana 5.11 e versões superiores

(Consulte a seção DISTRIBUIÇÃO desta página de manual para obter informações sobre como obter a
versão mais recente do lsof.)

Um arquivo aberto pode ser um arquivo regular, um diretório, um arquivo especial de bloco, um arquivo especial de caractere, uma referência de texto em execução, uma biblioteca, um fluxo ou um arquivo de rede (socket de Internet, arquivo NFS ou socket de domínio UNIX). Um arquivo específico ou todos os arquivos em um sistema de arquivos podem ser selecionados por caminho.

Em vez de uma exibição formatada, o lsof produzirá uma saída que pode ser analisada por outros programas. Consulte a descrição da opção -F e a seção OUTPUT FOR OTHER PROGRAMS para obter mais informações.

Além de produzir uma única lista de saída, o lsof será executado em modo repetitivo. No modo repetitivo, ele produzirá a saída, atrasará e repetirá a operação de saída até ser interrompido com um sinal de interrupção ou término. Consulte a descrição da opção +|-r [t[m]] para obter mais informações.

OPÇÕES

Na ausência de quaisquer opções, o lsof lista todos os arquivos abertos pertencentes a todos os processos ativos.

Se alguma opção de solicitação de lista for especificada, outras solicitações de lista devem ser especificamente solicitadas, por exemplo, se -U for especificado para a listagem de arquivos de socket UNIX, os arquivos NFS não serão listados, a menos que -N também seja especificado; ou se uma lista de usuários for especificada com a opção -u, os arquivos de socket de domínio UNIX, pertencentes a usuários que não estão na lista, não serão listados, a menos que a opção -U também seja especificada.

Normalmente, as opções de lista que são especificamente declaradas são combinadas com OR - ou seja, especificar a opção -i sem um endereço e a opção -ufoo produz uma listagem de todos os arquivos de rede OU arquivos pertencentes a processos pertencentes ao usuário "foo". As exceções são:

1 o nome de login ou ID de usuário (UID) negado (`^`), especificado com a opção -u;

2 o ID de processo (PID) negado (`^`), especificado com a opção -p;

3 o ID de grupo de processo (PGID) negado (`^`), especificado com a opção -g;

4 o comando `^` (negado), especificado com a opção -c;

5 os nomes de estado de protocolo TCP ou UDP negados (`^`), especificados com a opção -s [p:s].

Como representam exclusões, são aplicados sem usar OR ou AND e têm efeito antes de qualquer outro critério de seleção ser aplicado.

A opção -a pode ser usada para combinar as seleções com AND. Por exemplo, especificar -a, -U e -ufoo produz uma listagem apenas de arquivos de soquete UNIX que pertencem a processos pertencentes ao usuário foo.

Cuidado: a opção -a faz com que todas as opções de seleção de lista sejam combinadas com AND; não pode ser usada para causar a combinação de pares selecionados de opções de seleção, colocando-a entre elas, mesmo que sua colocação ali seja aceitável. Onde quer que -a seja colocado, ele causa a combinação com AND de todas as opções de seleção.

Os itens do mesmo conjunto de seleção – nomes de comandos, descritores de arquivos, endereços de rede, identificadores de processo, identificadores de usuário, nomes de zona, contextos de segurança – são combinados em um único conjunto OR e aplicados antes que o resultado participe da combinação com AND. Assim, por exemplo, especificar -_, -_, -a e -ufff,ggg selecionará a listagem de arquivos que pertencem a qualquer login fff'' OUggg'' E têm conexões de rede com qualquer host aaa.bbb OU ccc.ddd.

As opções podem ser agrupadas após um único prefixo – por exemplo, o conjunto de opções -a -b -C'' pode ser escrito como -abC. No entanto, como os valores são opcionais após +|-f, -F, -g, -i, +|-L, -o, +|-r, -s, -S, -T, -x e -z, quando você não tem valores para eles, tenha cuidado para que o caractere seguinte não seja ambíguo. Por exemplo, -Fn pode representar as opções -F e -n, ou pode representar o caractere de identificador de campo n após a opção -F. Quando a ambiguidade é possível, comece uma nova opção com um caractere `-` – por exemplo,-F -n. Se a próxima opção for um nome de arquivo, siga a opção possivelmente ambígua com--– por exemplo,-F -- nome``.

Ou o prefixo + ou - pode ser aplicado a um grupo de opções. Opções que não assumem significados separados para cada prefixo – por exemplo, -i – podem ser agrupadas sob qualquer prefixo. Assim, por exemplo, +M -i pode ser escrito como +Mi e o grupo tem o mesmo significado que as opções separadas. Tenha cuidado com o agrupamento de prefixos quando uma ou mais opções no grupo assumem significados separados sob diferentes prefixos – por exemplo, +|-M; -iM não é o mesmo que -i +M. Quando tiver dúvidas, use opções separadas com os prefixos apropriados.

-? -h Essas duas opções equivalentes selecionam uma listagem de saída de ajuda. Lsof exibe uma forma abreviada desta saída quando detecta um erro nas opções fornecidas, após
exibir mensagens explicando cada erro. (Escape o caractere `?` conforme sua
shell exige.)

-a causa a combinação das opções de seleção de lista com AND, conforme descrito acima.

-A A está disponível em sistemas configurados para AFS, cujos códigos de kernel AFS são implementados por meio de módulos dinâmicos. Ele permite que o usuário do lsof especifique A como um arquivo de lista de nomes alternativo
onde os endereços de kernel dos módulos dinâmicos podem ser encontrados. Consulte o FAQ do lsof (A seção FAQ dá sua localização.) para obter mais informações sobre módulos dinâmicos, seus símbolos e como eles afetam o lsof.

-b  faz com que o lsof evite as funções do kernel que podem bloquear - lstat(2), [readlink]({filename}../../readlink)(2) e

stat(2).

Consulte as seções BLOCKS AND TIMEOUTS e AVOIDING KERNEL BLOCKS para obter informações sobre o uso desta opção.

-c c    seleciona 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 OR antes de participar da seleção de opções AND.

Se c começar com um \`^\', os caracteres seguintes especificam um nome de comando cujos
processos devem ser ignorados (excluídos).

Se c começar e terminar 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
colocados entre aspas para evitar sua interpretação pelo shell. A barra de fechamento pode ser seguida
por estes modificadores:

b   a expressão regular é uma expressão regular básica.
i   ignorar a capitalização das letras.
x   a expressão regular é uma expressão regular estendida
(padrão).

Consulte o FAQ do lsof (A seção de FAQ fornece sua localização.) para obter mais informações sobre expressões regulares básicas e estendidas.

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

+c w    define 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 do lsof é nove.)

Observe que muitos dialetos UNIX não fornecem todos os caracteres do nome do comando ao lsof nos
arquivos e estruturas dos quais o lsof obtém o nome do comando. Muitas vezes, 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 do comando fornecidos ao lsof pelo dialeto UNIX serão
impressos.

Se w for menor que o comprimento do título da coluna, \`\`COMMAND'', ele será aumentado para esse
comprimento.

-C  desativa o relatório de quaisquer componentes de nome de caminho do cache de nomes do kernel. Consulte
a seção KERNEL NAME CACHE para obter mais informações.

+d s    faz com que o lsof procure todas as instâncias abertas do diretório s e os arquivos e diretórios que ele contém em seu nível superior. +d NÃO percorre a árvore de diretórios, com raiz em s.
A opção +D D pode ser usada para solicitar uma pesquisa completa da árvore de diretórios, com raiz no
diretório D.

O processamento da opção +d não segue links simbólicos dentro de s, a menos que as opções -x ou -x l também sejam especificadas. Além disso, não procura arquivos abertos em pontos de montagem do sistema de arquivos em subdiretórios de s, a menos que as opções -x ou -x f também sejam especificadas.

Observação: a autoridade do usuário desta opção limita a pesquisa a arquivos que o usuário tem permissão para examinar com a função stat(2) do sistema.

-d s especifica uma lista de descritores de arquivo (FDs) para excluir ou incluir na listagem de saída. Os descritores de arquivo são especificados no conjunto separado por vírgulas 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úmeros de descritores de arquivo pode estar no conjunto, desde que nenhum dos membros esteja vazio, ambos os membros sejam números e o membro final seja maior que o inicial - por exemplo, 0-7'' ou3-10''. Os intervalos podem ser especificados para exclusão se tiverem o prefixo ^ - por exemplo, ``^0-7'' exclui todos os descritores de arquivo de 0 a 7.

Múltiplos números de descritores de arquivo são unidos em um único conjunto ORed antes de participar da seleção da opção AND.

Quando existem 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.

Consulte a descrição dos valores de saída do Descritor de Arquivo (FD) na seção SAÍDA para obter mais informações sobre os nomes dos descritores de arquivo.

fd é um nome de pseudodescritor de arquivo para especificar toda a faixa de números de descritores de arquivo possíveis. fd não aparece na coluna FD da saída.

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

O processamento da opção +D não segue links simbólicos dentro de D, a menos que as opções -x ou -x l também sejam especificadas. Além disso, não procura arquivos abertos em pontos de montagem do sistema de arquivos em subdiretórios de D, a menos que as opções -x ou -x f também sejam especificadas.

Observação: a autoridade do usuário desta opção limita a pesquisa a arquivos que o usuário tem permissão para examinar com a função stat(2) do sistema.

Observação adicional: lsof pode processar esta opção lentamente e exigir uma grande quantidade de memória dinâmica para fazê-lo. Isso ocorre porque ele deve percorrer toda a árvore de diretórios, enraizada em D, chamando stat(2) para cada arquivo e diretório, construindo uma lista de todos os arquivos que encontrar e pesquisando essa lista para encontrar uma correspondência com cada arquivo aberto. Quando o diretório D é grande, essas etapas podem levar muito tempo, portanto, use esta opção com moderação.

-D D direciona o uso do arquivo de cache de dispositivo do lsof. O uso desta opção é às vezes restrito. Consulte a seção ARQUIVO DE CACHE DE DISPOSITIVO e as seções que a seguem para obter mais informações sobre esta opção.

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

? - relata os caminhos de arquivo de cache de dispositivo
b - constrói o arquivo de cache de dispositivo
i - ignora o arquivo de cache de dispositivo
r - lê o arquivo de cache de dispositivo
u - lê e atualiza o arquivo de cache de dispositivo

As funções b, r e u, acompanhadas por um nome de caminho, são, às vezes, restritas. Quando essas funções são restritas, elas não aparecerão na descrição da opção -D que acompanha a saída das opções -h ou -?. Consulte a seção ARQUIVO DE CACHE DE DISPOSITIVO e as seções a seguir para obter mais informações sobre essas funções e quando elas são restritas.

A função ? relata os caminhos somente leitura e de gravação que lsof pode usar para o arquivo de cache de dispositivo, os nomes de quaisquer variáveis de ambiente cujos valores lsof examinará ao formar o caminho do arquivo de cache de dispositivo e o formato para o caminho do arquivo de cache de dispositivo pessoal. (Escape o caractere `?' conforme sua shell exige.)

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

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

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

A função r direciona lsof a ler o cache de dispositivo no caminho padrão ou especificado, mas impede que um novo arquivo de cache de dispositivo seja criado quando nenhum existir ou o existente tiver uma estrutura inadequada. 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; ela pode ser restrita pelas permissões do processo lsof.

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

+|-e s isenta o sistema de arquivos cujo nome de caminho é s de ser submetido a chamadas de função de kernel que possam bloquear. A opção +e isenta as chamadas de função de kernel [stat]({filename}../../stat)(2), lstat(2) e a maioria das chamadas de função [readlink]({filename}../../readlink)(2). A opção -e isenta apenas as chamadas de função de kernel [stat]({filename}../../stat)(2) e lstat(2). Vários sistemas de arquivos podem ser especificados com especificações +|-e separadas, e cada um pode ter chamadas [readlink]({filename}../../readlink)(2) isentas ou não.

Esta opção é implementada atualmente apenas para Linux.

AVISO: esta opção pode ser facilmente aplicada incorretamente a outros sistemas de arquivos de interesse, pois utiliza 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 obtidos por meio da chamada de kernel stat(2), que pode bloquear, e, portanto, não estão disponíveis, mas consulte a opção +|-m m como uma possível alternativa para fornecer os números do dispositivo.) Use esta opção com muito cuidado e especifique totalmente o nome do caminho do sistema de arquivos a ser excluído.

Quando arquivos abertos em sistemas de arquivos excluídos são relatados, pode não ser possível obter todas as suas informações. Portanto, algumas colunas de informações estarão em branco, os caracteres "DESCONHECIDO" precederão os valores na coluna TIPO e a opção de exclusão aplicável será adicionada entre parênteses no final da coluna NOME. (Algumas informações sobre o número do dispositivo podem estar disponíveis por meio da opção +|-m m.)

+|-E +E especifica que os pipes Linux, os sockets UNIX Linux, os sockets INET(6) Linux fechados em um host local, os arquivos de pseudoterminal Linux, a implementação da fila de mensagens POSIX no Linux e o eventfd Linux devem ser exibidos com informações de ponto de extremidade e os arquivos dos pontos de extremidade também devem ser exibidos.

Nota 1: As informações do ponto de extremidade do arquivo de socket UNIX estão disponíveis somente quando a linha de recursos habilitados da saída -v contém uxsockept, e as informações do ponto de extremidade do pseudoterminal estão disponíveis somente quando a linha de recursos habilitados contém ptyept.

Nota 2: As informações do arquivo de fila de mensagens POSIX estão disponíveis somente quando o sistema de arquivos de fila de mensagens é montado.

As informações do ponto de extremidade do pipe são exibidas na coluna NOME no formato ``PID,cmd,FDmode'', onde PID é o ID do processo do ponto de extremidade; cmd é o comando do processo do ponto de extremidade; FD é o descritor do arquivo do ponto de extremidade; e mode é o modo de acesso do arquivo do ponto de extremidade.

As informações do ponto de extremidade do pseudoterminal são exibidas na coluna NOME como -\>/dev/ptsmin PID,cmd,FDmode'' ouPID,cmd,FDmode''. O primeiro formulário é para um dispositivo mestre; o segundo, para um dispositivo escravo. min é o número do dispositivo menor do dispositivo escravo; e PID, cmd, FD e mode são os mesmos do formato de informações do ponto de extremidade do pipe. Nota: As informações do ponto de extremidade do pseudoterminal estão disponíveis somente quando a linha de recursos habilitados da saída -v contém ptyept. Além disso, este recurso funciona em kernels Linux acima de 4.13.0.

As informações do arquivo de socket UNIX são exibidas na coluna NOME no formato ``type=TIPO ->INO=INODE PID,cmd,FDmode'', onde TIPO é o tipo de socket; INODE é o número do inode do socket conectado; e PID, cmd, FD e mode são os mesmos do formato de informações do ponto de extremidade do pipe. Nota: As informações do arquivo de socket UNIX estão disponíveis somente quando a linha de recursos habilitados da saída -v contém uxsockept.


As informações do ponto final do arquivo de soquete INET são inseridas no valor da coluna NAME no formato
`` -> PID,cmd,FDmode'', onde PID, cmd, FD e mode são os mesmos que as informações do ponto final de pipe. As informações do ponto final estão disponíveis apenas se o soquete for usado para IPC local; ambos os pontos finais são vinculados ao mesmo endereço IPv4 ou IPv6 local.

As informações do ponto final da Fila de Mensagens POSIX são exibidas na coluna NAME no mesmo formato que o de pipe.

As informações do ponto final eventfd são exibidas na coluna NAME no mesmo formato que o de pipe. Este recurso funciona em kernels Linux acima de 5.2.0.

Várias ocorrências dessas informações podem aparecer na coluna NAME de um arquivo.

-E especifica que os arquivos de pontos finais suportados devem ser exibidos com informações de ponto final, mas não os arquivos dos pontos finais.

+|-f [cfgGn]
f, por si só, esclarece como os argumentos de nome de 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 arquivo do kernel deve ser habilitada (`+`) 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(8), 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 de nome de caminho serão considerados nomes de sistema de arquivos e o lsof reclamará se algum deles não for. Isso pode ser útil, por exemplo, quando o nome do sistema de arquivos (dispositivo montado) não é um dispositivo de bloco. Isso acontece para alguns sistemas de arquivos CD-ROM.

Quando -f é especificado por si só, todos os argumentos de nome de caminho serão considerados arquivos simples. Assim, por exemplo, os argumentos `-f -- /'' direcionam o lsof a procurar arquivos abertos com um nome de caminho/, e não todos os arquivos abertos no sistema de arquivos/` (raiz).

Tenha cuidado para garantir que +f e -f sejam devidamente terminados e não sejam seguidos por um caractere (por exemplo, do arquivo ou nome do sistema de arquivos) que possa ser interpretado como um parâmetro. Por exemplo, use ``--'' após +f e -f, conforme nestes exemplos.

$ lsof +f -- /file/system/name
$ lsof -f -- /file/name

A listagem de informações das estruturas de arquivo do kernel, solicitada com a opção +f [cfgGn], é normalmente inibida e não está disponível total ou parcialmente para alguns dialetos - por exemplo, kernels Linux baseados em /proc abaixo de 2.6.22. Quando o prefixo para f é um sinal de mais (+), esses caracteres solicitam informações da estrutura de arquivo:

c    contagem de uso da estrutura de arquivo (não Linux)
f    endereço da estrutura de arquivo (não Linux)
g    abreviações de sinalizador de arquivo (Linux 2.6.22 e superior)

Abbrev. Sinalizador no código C (veja open(2))

W         O_WRONLY
RW        O_RDWR
CR        O_CREAT
EXCL      O_EXCL
NTTY      O_NOCTTY
TR        O_TRUNC
AP        O_APPEND
ND        O_NDELAY
SYN       O_SYNC
ASYN      O_ASYNC
DIR       O_DIRECT
DTY       O_DIRECTORY
NFLK      O_NOFOLLOW
NATM      O_NOATIME
DSYN      O_DSYNC
RSYN      O_RSYNC
LG        O_LARGEFILE
CX        O_CLOEXEC
TMPF      O_TMPFILE

G   flags de arquivo em hexadecimal (Linux 2.6.22 e superior)
n   endereço do nó de estrutura de arquivo (não Linux)

Quando o prefixo é um sinal de menos (-), os mesmos caracteres desativam a listagem dos valores indicados.

Endereços de estrutura de arquivo, contagens de uso, flags e endereços de nó podem ser usados para detectar com mais facilidade arquivos idênticos herdados por processos filhos e arquivos idênticos em uso por diferentes processos. A saída das colunas do lsof pode ser classificada pelas colunas de saída que contêm os valores e listada para identificar o uso de arquivos idênticos, 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 f    especifica uma lista de caracteres, f, que seleciona os campos a serem exibidos para processamento por outro programa e o caractere que termina cada campo de saída. Cada campo a ser exibido é especificado com um único caractere em f. O terminador de campo padrão é NL, mas pode ser alterado para NUL (000). Consulte a seção SAÍDA PARA OUTROS PROGRAMAS para obter uma descrição dos caracteres de identificação de campo e o processo de saída de campo.

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

Quando a lista de caracteres de seleção de campo contiver apenas um zero (0), todos os campos serão selecionados (exceto o campo de dispositivo bruto por motivos de compatibilidade) e o caractere terminador NUL será usado.

Outras combinações de campos e seus respectivos caracteres terminadores de campo devem ser definidas com entradas explícitas em f, conforme descrito na seção SAÍDA PARA OUTROS PROGRAMAS.

Quando um caractere de seleção de campo identifica um item que o lsof normalmente não lista - por exemplo, PPID, selecionado com a especificação -R 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 caractere único ?, o lsof exibirá uma lista de ajuda dos caracteres de identificação de campo. (Escape o caractere ? conforme exigido pelo seu shell.)

-g [s]  exclui ou seleciona a listagem de arquivos para os processos cujos números de identificação de grupo de processo opcionais (PGID) estão no conjunto separado por vírgulas s - por exemplo, `123` ou `123,^456`. (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 de opções AND. No entanto, as exclusões PGID são aplicadas sem ORing ou ANDing e têm efeito antes que outros critérios de seleção sejam aplicados.

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

-H  direciona o lsof a imprimir tamanhos legíveis para humanos, por exemplo, 123,4K 456,7M.

-i [i]  seleciona a listagem de arquivos cujos endereços de Internet correspondam ao endereço especificado em i. Se nenhum endereço for especificado, esta opção seleciona a listagem de todos os arquivos de rede de Internet e 25 (HP-UX).

Se -i4 ou -i6 for especificado sem o endereço subsequente, apenas os arquivos da versão IP indicada, IPv4 ou IPv6, são exibidos. (Uma especificação IPv6 só pode ser usada se o dialeto suportar IPv6, conforme indicado por “[46]” e “IPv[46]” na saída de lsof -h ou -?.) 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 sozinho.

Vários endereços (até um limite de 100) podem ser especificados com várias opções -i. Eles são unidos em um único conjunto OR antes de participar da seleção de opções AND.

Um endereço de Internet é especificado no seguinte formato (os itens entre colchetes são opcionais):

[46][protocol][@hostname|hostaddr][:service|port]

onde:
4 especifica a versão IP, IPv4 ou IPv6,
que se aplica ao seguinte endereço.
'6' só pode ser especificado se o dialeto UNIX suportar IPv6. Se nem '4' nem
'6' for especificado, o seguinte endereço
se aplica a todas as versões de IP.
protocol é um nome de protocolo - TCP, UDP ou UDPLITE.
hostname é um nome de host de Internet. A menos que uma
versão IP específica seja especificada, arquivos de rede abertos associados a nomes de host
de todas as versões serão selecionados.
hostaddr é um endereço IPv4 numérico de Internet em
formato de ponto; ou um endereço IPv6 numérico em
formato de 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.
service é um nome em /etc/services - por exemplo, smtp ou uma lista deles.
port é um número de porta ou uma lista deles.

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

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

Pelo menos um componente de endereço - 4, 6, protocolo, hostname, hostaddr ou service - deve ser fornecido. O caractere '@', que inicia a especificação do host, é sempre obrigatório; assim como o caractere ':', que inicia a especificação da porta. Especifique hostname ou hostaddr. Especifique uma lista de nomes de serviço ou uma lista de números de porta. Se uma lista de nomes de serviço for especificada, o protocolo também pode precisar ser especificado se os números de porta TCP, UDP e UDPLITE para o nome do serviço forem diferentes. Use qualquer caso - minúsculo ou maiúsculo - para protocolo.

Os nomes dos serviços e os números das portas 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. Não pode haver espaços embutidos, e todos os nomes de serviço devem pertencer ao protocolo especificado. Como os nomes dos serviços podem conter sinais de menos, a entrada inicial de um intervalo não pode ser um nome de serviço; pode ser um número de porta, no entanto.

Aqui estão alguns endereços de exemplo:

-i6 - Apenas IPv6
TCP:25 - TCP e porta 25
@1.2.3.4 - Endereço de host IPv4 1.2.3.4
@[3ffe:1ebc::1]:1234 - Endereço de host IPv6
3fe:1ebc::1, porta 1234
UDP:who - Serviço UDP who na porta
_:513 - TCP, porta 513 e nome de host lsof.itap
tcp@foo:1-10,smtp,99 - TCP, portas de 1 a 10,
nome de serviço smtp, porta 99, nome de host foo
tcp@bar:1-smtp - TCP, portas de 1 a smtp, host bar
:time - ou TCP, UDP ou UDPLITE na porta time

-K k     seleciona a listagem de tarefas (threads) de processos, em dialetos onde o relatório de tarefas (threads) é suportado. (Se a saída de ajuda - ou seja, a saída das opções -h ou -? mostrar esta opção, então o relatório de tarefas (threads) é suportado pelo dialeto.)

Se -K for seguido por um valor, k, este deve ser ``i''. Isso faz com que o lsof ignore as tarefas, particularmente no caso padrão, de listar tudo, quando nenhuma outra opção é especificada.

Quando -K e -a são especificados em conjunto no Linux, 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. (Veja a descrição da coluna TID na seção OUTPUT.)

Onde a versão FreeBSD suporta threads, todos os threads serão listados com seus IDs.

Em geral, threads e tarefas herdam os arquivos do chamador, mas podem fechar alguns e abrir outros, então o lsof sempre relata todos os arquivos abertos de threads e tarefas.

-k k     especifica um arquivo de lista de nomes de kernel, k, em vez de /vmunix, /mach, etc. -k não está disponível no AIX nos sistemas IBM RISC/System 6000.

-l       inibe a conversão de números de ID de usuário para nomes de login. Também é útil quando o
lookup de nome de login está funcionando de forma inadequada ou lenta.

+|-L [l] habilita (`+') ou desabilita (`-') a listagem de contagens de links de arquivos, onde estiverem disponíveis - por exemplo, eles não estão disponíveis para sockets ou a maioria dos FIFOs e pipes.

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

Quando +L é seguido por um número, apenas os arquivos que possuem uma contagem de links menor que esse número serão listados. (Nenhum número pode seguir -L.) Uma especificação da forma +L1'' selecionará arquivos abertos que foram removidos. Uma especificação da forma+aL1 '' selecionará arquivos abertos removidos no sistema de arquivos especificado.

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

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

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

A opção +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 e, em seguida, o número do dispositivo em formato hexadecimal "0x" - por exemplo:

/ 0x801

Lsof pode usar o arquivo de suplemento de montagem para obter números de dispositivo para sistemas de arquivos quando não puder obtê-los por meio de stat(2) ou lstat(2).

A opção +m m identifica m como um arquivo de suplemento de montagem.

Observação: as opções +m e +m m não estão disponíveis para todos os dialetos suportados. Consulte a saída das opções -h ou -? do lsof para ver se as opções +m e +m m estão disponíveis.

+|-M Habilita (+) ou desabilita (-) a geração de relatórios de registros do portmapper para portas TCP, UDP e UDPLITE locais, onde o mapeamento de portas é suportado. (Consulte o último parágrafo desta descrição de opção para obter informações sobre onde o relatório de registro do portmapper é suportado.)

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

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

Para fins de relatório de registro do portmapper, o lsof considera uma porta TCP, UDP ou UDPLITE como local se: estiver localizada na parte local de sua estrutura de kernel contendo; ou se estiver localizada na parte estrangeira de sua estrutura de kernel contendo e os endereços de Internet local e estrangeiro forem os mesmos; ou se estiver localizada na parte estrangeira de sua estrutura de kernel contendo e o endereço de Internet estrangeiro for INADDR_LOOPBACK (127.0.0.1). Esta regra pode fazer com que o lsof ignore algumas portas estrangeiras em máquinas com várias interfaces quando o endereço de Internet estrangeiro estiver em uma interface diferente do local.


Consulte o FAQ do lsof (A seção de FAQ indica sua localização) para obter mais informações sobre problemas de relatório de registro do portmapper.

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 os possuem.) Quando o relatório de registro do portmapper é suportado, a saída de ajuda -h ou -? mostrará a opção +|-M.

-n      inibe a conversão de números de rede em nomes de host para arquivos de rede. Inibir a conversão pode fazer com que o lsof execute mais rapidamente. Também é útil quando a pesquisa de nomes de host não está funcionando corretamente.

-N      seleciona a listagem de arquivos NFS.

-o      direciona o lsof a exibir o deslocamento do arquivo em todos os momentos. Isso faz com que o título da coluna de saída SIZE/OFF seja alterado para OFFSET. Observe: em alguns dialetos UNIX, o lsof não pode obter informações de deslocamento de arquivo precisas ou consistentes de suas fontes de dados do kernel, às vezes apenas para tipos específicos de arquivos (por exemplo, arquivos de soquete). Consulte o FAQ do lsof (A seção de FAQ indica sua localização) para obter mais informações.

As opções -o e -s são mutuamente exclusivas; ambas não podem ser especificadas. Quando nenhuma delas é especificada, o lsof exibe o valor apropriado e disponível para o tipo de arquivo - tamanho ou deslocamento.

-o o        define o número de dígitos decimais (o) a serem impressos após o "0t" para um deslocamento de arquivo antes que o formato mude para "0x...". Um valor de o zero (ilimitado) direciona o lsof a usar o formato "0t" para toda a saída de deslocamento.

Esta opção NÃO direciona o lsof a exibir o deslocamento em todos os momentos; especifique -o (sem um número final) para fazer isso. -o o especifica apenas o número de dígitos após o "0t" na saída de tamanho e deslocamento misturados ou apenas deslocamento. Assim, por exemplo, para direcionar o lsof a exibir o deslocamento em todos os momentos com uma contagem de dígitos decimais de 10, use:

-o -o 10
ou
-oo10

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

-O      direciona o lsof a ignorar a estratégia que ele usa para evitar ser bloqueado por algumas operações do kernel - ou seja, executando-as em processos filhos bifurcados. Consulte as seções BLOQUEIOS E TEMPOS DE ESPERA e EVITANDO BLOQUEIOS DO KERNEL para obter mais informações sobre as operações do kernel que podem bloquear o lsof.

Embora o uso desta opção reduza a sobrecarga de inicialização do lsof, também pode fazer com que o lsof trave quando o kernel não responde a uma função. Use esta opção com cautela.

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

Os números de ID de processo que começam com `^' (negação) representam exclusões.

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

-P inibe a conversão de números de porta em nomes de porta para arquivos de rede (o mapeamento é normalmente obtido de /etc/services). Inibir a conversão pode fazer com que o lsof execute um pouco mais rápido. Também é útil quando a pesquisa de nomes de porta não está funcionando corretamente.

-Q ignora os termos de pesquisa com falha. Quando o lsof é instruído a pesquisar os usuários de um arquivo, ou os usuários de um dispositivo, ou para um PID específico, ou para determinados protocolos em uso por esse PID, e assim por diante, o lsof retornará um erro se algum dos resultados da pesquisa estiver vazio. A opção -Q alterará esse comportamento, de modo que o lsof retornará, em vez disso, um código de saída bem-sucedido (0), mesmo que algum dos resultados da pesquisa esteja vazio. Além disso, os termos de pesquisa ausentes não serão relatados ao stderr.

+|-r [t[c<N>][m<fmt>]]
coloca o lsof no modo de repetição. Nele, o lsof lista os arquivos abertos conforme selecionado por outras opções, atrasa por t segundos (o padrão é quinze) e, em seguida, repete a listagem, atrasando e listando repetidamente até ser interrompido por uma condição definida pelo prefixo da opção.

Se o prefixo for um \`-\', o modo de repetição será infinito. O lsof deve ser encerrado com um sinal de interrupção ou término. \`c<N>' é para especificar os limites da repetição; se o número de iterações atingir `<N>`, o lsof para a execução.

Se o prefixo for um `+\', o modo de repetição terminará no primeiro ciclo em que nenhum arquivo aberto for listado e, é claro, quando o lsof for interrompido com um sinal de interrupção ou término. Quando o modo de repetição termina porque nenhum arquivo é listado, o código de saída do processo será zero se algum arquivo aberto tiver sido listado; um, se nenhum tiver sido listado.

O lsof marca o final de cada listagem: se a saída de 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> que seguem \`m' são interpretados como uma especificação de formato para a função strftime(3), quando ela e a função localtime(3) estiverem disponíveis na biblioteca C do dialeto. Consulte a documentação de strftime(3) para ver o que pode aparecer em sua especificação de formato. Observe que, quando a saída de 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 pelo shell, <fmt> deve ser citado adequadamente.

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

Para usar o modo de repetição da forma mais eficiente, acompanhe +|-r com a especificação de outras opções de seleção do lsof, para que a quantidade de acesso à memória do kernel que o lsof faz 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 combinado com a saída de campo (veja a descrição da opção -F) e um script awk ou Perl de supervisão, ou um programa C.

-R       direciona o lsof a listar o número de identificação do processo pai na coluna PPID.

-s [p:s] s sozinho direciona o lsof a exibir o tamanho do arquivo o tempo todo. Isso 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.

A forma opcional -s p:s está disponível apenas para alguns dialetos e apenas quando a saída de ajuda -h ou -? a listar.

Quando a forma opcional estiver disponível, o s pode ser seguido por um nome de protocolo (p), seja TCP ou UDP, dois pontos (:) e uma lista separada por vírgulas de nomes de estado de protocolo; a opção faz com que os arquivos TCP e UDP abertos sejam excluídos se seus nomes de estado estiverem na lista (s) precedidos por um ^; ou incluídos se seus nomes não forem precedidos por um ^.

Os dialetos que suportam esta opção podem suportar apenas um protocolo. Quando um protocolo não suportado é especificado, uma mensagem será exibida indicando que os nomes de estado para o protocolo não estão disponíveis.

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

A capitalização é irrelevante nos nomes de protocolo ou estado, mas não pode haver espaços e os dois pontos (:) que separam o nome do protocolo (p) e a lista de nomes de estado (s) são obrigatórios.

Se apenas os arquivos TCP e UDP devem ser listados, conforme controlado pelas exclusões e inclusões especificadas, a opção -i também deve ser especificada. Se apenas os arquivos de um único protocolo devem ser listados, adicione seu nome como um 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 Idle, use:

-iUDP -sUDP:^Idle

Os nomes de estado 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 Unbound e Idle.

Consulte o FAQ do lsof (A seção de perguntas frequentes indica sua localização) para obter mais informações sobre como usar a exclusão e inclusão de estado de protocolo, incluindo exemplos.

As opções -o (sem um número de contagem subsequente) e -s (sem uma lista de nomes de protocolo e estado subsequente) são mutuamente exclusivas; ambas não podem ser especificadas. Quando nenhuma das duas é especificada, o lsof exibe o valor apropriado e disponível para o tipo de arquivo, seja tamanho ou deslocamento.

Como alguns tipos de arquivos não têm tamanhos reais - soquetes, FIFOs, pipes, etc. - o lsof exibe para seus tamanhos os valores de conteúdo em seus buffers de kernel associados, se possível.


-S [t]   especifica um valor opcional de tempo limite em segundos para as funções do kernel - `lstat(2)`, `[readlink]({filename}../../readlink)(2)` e `[stat]({filename}../../stat)(2)` - que, de outra forma, poderiam causar um deadlock. O mínimo para t é dois; o padrão é quinze; quando nenhum valor é especificado, o padrão é usado.

Veja a seção BLOCKS AND TIMEOUTS para obter mais informações.

-T [t]   controla a geração de relatórios de algumas informações TCP/TPI, também relatadas por `[netstat]({filename}../../netstat)(1)`, após 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 `='`, separados 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 do socket>
SS=<estados do socket>
TF=<flags e valores TCP>
WR=<comprimento da janela de leitura>
WW=<comprimento da janela de gravação>

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

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

-T sem caracteres de palavra-chave subsequentes desativa a geração de relatórios de informações TCP/TPI.

-T com caracteres subsequentes seleciona a geração de relatórios de informações TCP/TPI específicas:

f    seleciona a geração de relatórios de opções de socket,
estados e valores, e flags e
valores TCP.
q    seleciona a geração de relatórios de comprimento da fila.
s    seleciona a geração de relatórios de estado da conexão.
w    seleciona a geração de relatórios de tamanho da janela.

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

Quando -T é usado para selecionar informações - ou seja, é seguido por um ou mais caracteres de seleção - a exibição do estado é desativada por padrão e deve ser selecionada explicitamente novamente nos caracteres seguintes a -T. (De fato, então, o padrão é equivalente a -Ts). Por exemplo, se os comprimentos da fila e o estado forem desejados, use -Tqs.

Opções de socket, estados de socket, alguns valores de socket, flags TCP e um valor TCP podem ser relatados (quando disponíveis no dialeto UNIX) na forma dos nomes que normalmente aparecem após SO_, so_, SS_, TCP_ e TF_ nos arquivos de cabeçalho do dialeto - mais frequentemente , e . Consulte esses arquivos de cabeçalho para o significado das flags, opções, estados e valores.

``SO='' precede as opções e valores do socket; ``SS='', estados do socket; e ``TF='', flags TCP
e valores.

Se uma flag ou opção tiver um valor, o valor seguirá um = e o nome - por exemplo, SO=LINGER=5'',SO=QLIM=5'', ``TF=MSS=512''. Os seguintes sete valores podem ser relatados:

Nome Relatado Descrição (Símbolo Comum)


KEEPALIVE tempo de keep alive (SO_KEEPALIVE)
LINGER tempo de linger (SO_LINGER)
MSS tamanho máximo do segmento (TCP_MAXSEG)
PQLEN conexões parciais na fila de espera
QLEN conexões estabelecidas na fila de espera
QLIM limite estabelecido para a fila de espera
RCVBUF comprimento do buffer de recebimento (SO_RCVBUF)
SNDBUF comprimento do buffer de envio (SO_SNDBUF)

Detalhes sobre quais opções e valores de soquete, estados de soquete e flags e valores TCP podem ser exibidos para dialetos UNIX específicos podem ser encontrados na resposta às perguntas "Por que o lsof não relata opções de soquete, estados de soquete e flags e valores TCP para o meu dialeto?" e "Por que o lsof não relata a contagem de conexões parciais na fila de espera para o meu dialeto?" na seção de perguntas frequentes do lsof (a seção de perguntas frequentes fornece sua localização). No Linux, esta opção também imprime o estado dos soquetes de domínio UNIX.

-t produz uma saída concisa consistindo apenas de identificadores de processo (sem um cabeçalho),
para que seja fácil de usar programaticamente, por exemplo:

# recarregar qualquer coisa que use SSL antigo
lsof -t /lib/*/libssl.so.* | xargs -r kill -HUP

# obter a lista de processos e, em seguida, iterar sobre eles (apenas Bash)
mapfile -t pids < <(
lsof -wt /var/log/your.log
)
for pid in "${pids[@]}" ; do
your_command -p "$pid"
done

A opção -t implica a opção -w.

-u s seleciona a listagem de arquivos para o usuário cujos nomes de login ou números de ID de
usuário estão no conjunto separado por vírgulas s - por exemplo, "abe" ou "548,root". (Não
deve haver espaços no conjunto).

Vários nomes de login ou números de ID de usuário são unidos em um único conjunto OR antes de participar da seleção de opções AND.

Se um nome de login ou ID de usuário for precedido por um `^`, ele se torna uma negação - ou seja, os arquivos dos processos pertencentes ao nome de login ou ID de usuário nunca serão listados. Uma seleção de nome de login ou ID de usuário negado não é ANDada nem ORada com outras seleções; ela é aplicada antes de todas as outras seleções e exclui absolutamente a listagem dos arquivos do processo. Por exemplo, para direcionar o lsof a excluir a listagem de arquivos pertencentes a processos root, especifique "-u^root" ou "-u^0".

-U seleciona a listagem de arquivos de soquete de domínio UNIX.

-v seleciona a listagem das informações da versão do lsof, incluindo: número da revisão; quando
o binário lsof foi construído; quem construiu o binário e onde; o nome do compilador usado
para construir o binário lsof; o número da versão do compilador quando disponível; as flags
do compilador e do carregador usadas para construir o binário lsof; e informações do sistema,
normalmente a saída da opção -a do uname.

-V direciona o lsof a indicar os itens que foram solicitados para serem listados e que não
foram encontrados - nomes de comando, nomes de arquivos, endereços ou arquivos de Internet,
nomes de login, arquivos NFS, PIDs, PGIDs e UIDs.

Quando outras opções são ANDadas com opções de pesquisa ou opções de tempo de compilação restringem a listagem de alguns arquivos, o lsof pode não relatar que não conseguiu encontrar um item de pesquisa quando uma opção ANDada ou uma opção de tempo de compilação impede a listagem do arquivo aberto contendo o item de pesquisa localizado.


Por exemplo, lsof -V -iTCP@foobar -a -d 999 pode não relatar uma falha ao localizar arquivos abertos em TCP@foobar e pode não listar nenhum, se nenhum tiver um número de descritor de arquivo de 99. Uma situação semelhante surge quando HASSECURITY e HASNOSOCKSECURITY são definidos no momento da compilação e impedem a listagem de arquivos abertos.

+|-w Habilita (+) ou desabilita (-) a supressão de mensagens de aviso.

O criador do lsof pode optar por ter as mensagens de aviso desabilitadas ou habilitadas por padrão. O estado padrão da mensagem de aviso é indicado na saída da opção -h ou -?. Desabilitar mensagens de aviso quando elas já estão desabilitadas ou habilitá-las quando já estão habilitadas é aceitável.

A opção -t implica a opção -w.

-x [fl] pode acompanhar as opções +d e +D para direcionar o seu processamento para atravessar links simbólicos e/ou pontos de montagem do sistema de arquivos encontrados ao escanear o diretório (+d) ou a árvore de diretórios (+D).

Se -x for especificado sozinho, sem um parâmetro subsequente, o processamento de atravessamento de links simbólicos e pontos de montagem do sistema de arquivos será habilitado. Observe que, quando -x é especificado sem um parâmetro, o próximo argumento deve começar com '-' ou '+'.

O parâmetro opcional 'f' habilita o processamento de travessia de pontos de montagem do sistema de arquivos; 'l', processamento de travessia de links simbólicos.

A opção -x não pode ser fornecida sem também fornecer uma opção +d ou +D.

-X Esta é uma opção específica do dialeto.

AIX: Esta opção IBM AIX RISC/System 6000 solicita a notificação de referências de arquivos de texto executáveis e bibliotecas compartilhadas.

AVISO: como esta opção usa a função kernel readx(), o seu uso em um sistema AIX ocupado pode fazer com que um processo de aplicativo trave de tal forma que ele não possa ser nem interrompido nem parado. Nunca vi isso acontecer nem recebi um relatório de que isso aconteceu, mas acho que há uma pequena possibilidade de que isso possa acontecer.

Por padrão, o uso de readx() é desabilitado. No AIX 5L e superior, o lsof pode precisar de permissão setuid-root para executar as ações que esta opção solicita.

O criador do lsof pode especificar que a opção -X seja restrita a processos cujo UID real seja root. Se isso foi feito, a opção -X não aparecerá na saída de ajuda -h ou -? a menos que o UID real do processo lsof seja root. A distribuição padrão do lsof permite que qualquer UID especifique -X, portanto, por padrão, ele aparecerá na saída de ajuda.

Quando o uso de AIX readx() é desabilitado, o lsof pode não conseguir relatar informações para todas as referências de arquivos de texto e carregadores, mas também pode evitar exacerbar um erro de pesquisa de diretório do kernel AIX, conhecido como o bug de ID de segmento obsoleto.

A função readx(), usada pelo lsof ou qualquer outro programa para acessar algumas seções da memória virtual do kernel, pode acionar o bug de ID de segmento obsoleto. Ele pode fazer com que a função dir_search() do kernel acredite erroneamente que parte de uma cópia em memória de um diretório do sistema de arquivos foi zerada. Outro processo de aplicativo, distinto do lsof, solicitando ao kernel que pesquise o diretório - por exemplo, usando open(2) - pode fazer com que dir_search() entre em loop infinito, travando assim o processo de aplicativo.


Consulte o FAQ do lsof (a seção de FAQ fornece sua localização) e o arquivo 00README da distribuição lsof para uma descrição mais completa do bug Stale Segment ID, seu APAR e métodos para definir o uso de readx() ao compilar o lsof.

Linux: Esta opção do Linux solicita que o lsof ignore a geração de informações sobre todos os arquivos TCP, UDP e UDPLITE IPv4 e IPv6 abertos.

Esta opção do Linux é mais útil quando o sistema tem um número extremamente grande de arquivos TCP, UDP e UDPLITE abertos, o processamento das informações dos quais nos arquivos /proc/net/tcp* e /proc/net/udp* levaria muito tempo para o lsof e cuja geração de informações não é do seu interesse.

Use esta opção com cuidado e somente quando tiver certeza de que as informações que deseja que o lsof exiba não estão associadas a arquivos de soquete TCP, UDP ou UDPLITE abertos.

Solaris 10 e superior: Esta opção do Solaris 10 e superior solicita a geração de caminhos em cache para arquivos que foram excluídos, ou seja, removidos com rm(1) ou unlink(2).

O caminho em cache é seguido pela string "`` (excluído)" para indicar que o caminho pelo qual o arquivo foi aberto foi excluído.

Como as alterações feitas no caminho - ou seja, renomeações com mv(1) ou rename(2) - não são registradas no caminho em cache, o que o lsof relata é apenas o caminho pelo qual o arquivo foi aberto, não seu caminho final possivelmente diferente.

-z [z] especifica como as informações de zona do Solaris 10 e superior devem ser tratadas.

Sem um argumento seguinte - por exemplo, NO z - a opção especifica que os nomes de zona devem ser listados na coluna ZONE de saída.

A opção -z pode ser seguida por um nome de zona, z. Isso faz com que o lsof liste apenas os arquivos abertos para processos nessa zona. Vários pares de opção e argumento -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 SELinux devem ser tratados. Ele e o suporte ao caractere de saída do campo 'Z' são inibidos quando o SELinux é desativado no kernel Linux em execução.

Veja SAÍDA PARA OUTROS PROGRAMAS para obter mais informações sobre o caractere de saída do campo 'Z'.

Sem um argumento seguinte - por exemplo, NO Z - a opção especifica que os contextos de segurança devem ser listados na coluna CONTEXTO DE SEGURANÇA de saída.

A opção -Z pode ser seguida por um nome de contexto de segurança curinga, Z. Isso faz com que o lsof liste apenas os arquivos abertos para processos nesse contexto de segurança. Vários pares de opção e argumento -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 fim das opções com chave.
Pode ser usada, por exemplo, quando o primeiro nome de arquivo começa com um sinal de menos. Pode
também ser usada quando a ausência de um valor para a última opção com chave deve ser sinalizada
pela presença de um sinal de menos na opção seguinte e antes do início dos nomes de arquivo.

names    São os caminhos de arquivos específicos a serem listados. Os links simbólicos são resolvidos antes do uso.
O primeiro nome pode ser separado das opções precedentes com a opção \`\`--''.

Se um nome for o diretório de montagem 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 de montagem na saída de [mount]({filename}../../mount)(8) ou corresponder ao nome de
um dispositivo de bloco associado a um nome de diretório de montagem. A opção +|-f pode ser usada
para forçar o lsof a considerar um nome como um identificador de sistema de arquivos (+f) ou um arquivo simples (-f).

Se um nome for um caminho para um diretório que não seja o nome do diretório de montagem de um
sistema de arquivos, ele será tratado como um arquivo regular - ou seja, sua listagem será restrita aos processos que o tenham aberto como um arquivo ou como um diretório específico do processo,
como o diretório raiz ou o diretório de trabalho atual. Para solicitar que o lsof procure arquivos abertos
dentro de um nome de diretório, use as opções +d s e +D D.

Se um nome for o nome base de uma família de arquivos multiplexados - por exemplo, /dev/pt[cs] do AIX, o 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 for um nome de soquete de domínio UNIX, o lsof geralmente procurará por ele pelos caracteres do nome sozinho - exatamente como ele é especificado e registrado na estrutura de soquete do kernel. (Veja o próximo parágrafo para uma exceção a essa regra para o Linux). Especificar um caminho relativo - por exemplo, ./file - no lugar do caminho absoluto do arquivo - por exemplo,
/tmp/file - não funcionará porque o lsof deve corresponder os caracteres que você especifica com o que
ele encontra nas estruturas de soquete de domínio UNIX do kernel.

Se um nome for um nome de soquete de domínio UNIX do Linux, em um caso o lsof pode procurá-lo
pelo número de dispositivo e inode, permitindo que o nome seja um caminho relativo. O caso requer
que o caminho absoluto - ou seja, um que comece com uma barra ('/') - seja usado pelo processo
que criou o soquete e, portanto, seja armazenado no arquivo /proc/net/unix; e requer
que o lsof possa obter os números de dispositivo e nó do caminho absoluto em /proc/net/unix e nome por meio de chamadas de sistema [stat]({filename}../../stat)(2) bem-sucedidas. Quando essas condições forem
satisfeitas, o lsof poderá procurar o soquete de domínio UNIX quando algum caminho para ele for
especificado em nome. Assim, por exemplo, se o caminho for /dev/log e uma pesquisa lsof for
iniciada quando o diretório de trabalho for /dev, então o nome pode ser ./log.

Se um nome não for nenhum dos acima, o lsof listará todos os arquivos abertos cujos dispositivo e inode correspondam ao nome de caminho especificado.

Se você também especificou a opção -b, os únicos nomes que você pode especificar com segurança são sistemas de arquivos para os quais sua tabela de montagem fornece números de dispositivo alternativos. Consulte as seções EVITANDO BLOQUEIOS DO KERNEL e NÚMEROS DE DISPOSITIVO ALTERNATIVOS para obter mais informações.

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

AFS

Lsof suporta o reconhecimento de arquivos AFS para os seguintes dialetos (e versões 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, o lsof pode reconhecer arquivos AFS em outros dialetos ou pode ter dificuldades em reconhecer arquivos AFS nos dialetos suportados.

O lsof pode ter dificuldade em identificar todos os aspectos dos arquivos AFS nos dialetos suportados quando o suporte do kernel 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, o lsof pode ter que adivinhar a identidade dos arquivos AFS e pode não ser capaz de obter informações de volume do kernel que são necessárias para calcular os números de nó de volume AFS. Quando o lsof não pode calcular os números de nó de volume, ele relata em branco na coluna NODE.

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

Consulte as Perguntas frequentes do lsof (A seção de perguntas frequentes fornece sua localização) para obter mais informações sobre módulos dinâmicos, seus símbolos e como eles afetam as opções do lsof.

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

SEGURANÇA

O lsof tem três recursos que podem causar preocupações de segurança. Primeiro, seu modo de compilação padrão permite que qualquer pessoa liste todos os arquivos abertos com ele. Em segundo lugar, 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 de usuário real que executa o lsof. (Os recursos de listar todos os arquivos abertos e cache de dispositivo podem ser desativados quando o lsof é compilado.) Em terceiro lugar, suas opções -k e -m nomeiam arquivos de lista de nomes ou memória alternativos do kernel.

Restringir a listagem de todos os arquivos abertos é controlado pelas opções de tempo de compilação HASSECURITY e HASNOSOCKSECURITY. Quando HASSECURITY é definido, o lsof permitirá apenas que o usuário root liste todos os arquivos abertos. O usuário não root pode listar apenas arquivos abertos de processos com o mesmo número de identificação de usuário que o número de ID de usuário real do processo lsof (o que o usuário usou para fazer login).


No entanto, se HASSECURITY e HASNOSOCKSECURITY estiverem definidos, qualquer pessoa poderá listar os arquivos de socket abertos, desde que sejam selecionados com a opção -i.

Quando HASSECURITY não estiver definido, qualquer pessoa poderá listar todos os arquivos abertos.

A saída de ajuda, apresentada em resposta às opções -h ou -?, fornece o status das definições HASSECURITY e HASNOSOCKSECURITY.

Consulte a seção Segurança do arquivo 00README da distribuição lsof para obter informações sobre como construir o lsof com as opções HASSECURITY e HASNOSOCKSECURITY habilitadas.

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 de tempo de compilação HASDCACHE. Consulte a seção ARQUIVO DE CACHE DE DISPOSITIVO e as seções a seguir para obter detalhes sobre como seu caminho é formado. Para considerações de segurança, é importante observar que, na distribuição padrão do lsof, se o ID de usuário real sob o qual o lsof é executado for root, o arquivo de cache de dispositivo será gravado no diretório inicial do root (por exemplo, / ou /root). Quando HASDCACHE não estiver definido, o lsof não grava nem tenta ler um arquivo de cache de dispositivo.

Quando HASDCACHE estiver definido, a saída de ajuda do lsof, apresentada em resposta às opções -h, -D? ou -?, fornecerá informações sobre o tratamento do arquivo de cache de dispositivo. Quando HASDCACHE não estiver definido, a saída das opções -h ou -? não terá uma descrição da opção -D.

Antes de decidir desabilitar o recurso de arquivo de cache de dispositivo, observe que habilitá-lo melhora o desempenho do lsof, reduzindo a sobrecarga de inicialização da análise de todos os nós em /dev (ou /devices) - leia a discussão sobre ele no arquivo 00DCACHE da distribuição lsof e no FAQ do lsof (a seção FAQ fornece sua localização).

SE TIVER DÚVIDAS, VOCÊ PODE DESATIVAR TEMPORARIAMENTE O USO DO ARQUIVO DE CACHE DE DISPOSITIVO COM A OPÇÃO -Di.

Quando o usuário do lsof declara uma lista de nomes de kernel alternativos ou arquivos de memória com as opções -k e -m, o lsof verifica a autoridade do usuário para lê-los com access(2). Isso tem como objetivo impedir que qualquer poder especial que os modos do lsof possam conferir permita que ele leia arquivos que normalmente não são acessíveis pela autoridade do ID de usuário real.

SAÍDA

Esta seção descreve as informações que o lsof lista para cada arquivo aberto. Consulte a seção SAÍDA PARA OUTROS PROGRAMAS para obter informações adicionais sobre a saída que pode ser processada por outro programa.

O lsof só produz caracteres de 8 bits imprimíveis (declarados como tal por isprint(3)). Caracteres não imprimíveis são impressos em um dos três formatos: o formato C \ [bfrnt] ''; o formato de caractere de controle^ ''; ou o formato hexadecimal com o prefixo \x'' (por exemplo,\xab''). O espaço é não imprimível na coluna COMMAND (\x20) e imprimível em outros lugares.

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 idioma. O processo lsof deve ser fornecido com uma variável de ambiente de idioma (por exemplo, LANG) cujo valor represente um idioma conhecido no qual os caracteres estendidos são considerados imprimíveis por isprint(3). Caso contrário, o lsof considera os caracteres estendidos não imprimíveis e os imprime de acordo com suas regras para caracteres não imprimíveis, conforme declarado acima. Consulte a página man setlocale(3) do seu dialeto para obter os nomes de outras variáveis de ambiente que podem ser usadas no lugar de LANG - por exemplo, LC_ALL, LC_CTYPE, etc.


O suporte de lsof para o idioma local de um dialeto também cobre 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 idioma local adequado foi definido na variável de ambiente apropriada para o processo lsof. Caracteres largos são imprimíveis sob essas condições se iswprint(3) os relatar como imprimíveis.

Se HASSETLOCALE, HASWIDECHAR e um idioma local adequado não forem definidos, ou se iswprint(3) relatar caracteres largos que não são imprimíveis, lsof considera os caracteres largos como não imprimíveis e imprime cada um de seus 8 bits de acordo com suas regras para caracteres não imprimíveis, conforme mencionado acima.

Consulte as respostas para as perguntas sobre "Suporte de idioma local" na seção de perguntas frequentes do lsof (a seção de perguntas frequentes fornece sua localização) para obter mais informações.

^ sof dimensiona dinamicamente as colunas de saída cada vez que é executado, garantindo que cada coluna tenha um tamanho mínimo. Ele também garante que cada coluna seja separada de seu predecessor por pelo menos um espaço.

^ OMMAND contém os primeiros nove caracteres do nome do comando UNIX associado ao processo. Se um valor não nulo w for especificado para a opção +c w, a coluna contém os primeiros w caracteres do nome do comando UNIX associado ao processo, até o limite de caracteres fornecidos ao lsof pelo dialeto UNIX. (Consulte a descrição da opção +c w ou a seção de perguntas frequentes do lsof para obter mais informações. A seção de perguntas frequentes fornece sua localização.)

Se w for menor que o comprimento do título da coluna, \`COMMAND'', ele será aumentado para esse comprimento.

Se um valor zero w for especificado para a opção +c w, a coluna contém 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 de campo quando o descritor de nome de comando (c) é especificado. Consulte a seção OUTPUT FOR OTHER COMMANDS para obter informações sobre a seleção da saída de campo e o descritor de nome de comando associado.

^ ID é o número de identificação do processo.

^ ID é o número de identificação da tarefa (thread), se o relatório de tarefa (thread) for suportado pelo dialeto e uma tarefa (thread) estiver sendo listada. (Se a saída da ajuda – ou seja, a saída das opções -h ou -? – mostrar esta opção, então o relatório de tarefa (thread) é suportado pelo dialeto.)

Uma coluna TID em branco no Linux indica um processo – ou seja, um processo que não é uma tarefa.


TASKCMD é o nome do comando da tarefa. Geralmente, será o mesmo que o processo nomeado na coluna COMMAND, mas algumas implementações de tarefa (por exemplo, Linux) permitem que uma tarefa altere seu nome de comando.

A largura da coluna TASKCMD está sujeita à mesma limitação de tamanho da coluna COMMAND.

ZONE é o nome da zona do Solaris 10 e versões mais recentes. Esta coluna deve ser selecionada com a opção -z.

SECURITY-CONTEXT é 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 está desativado no kernel Linux em execução.

PPID é o número de identificação do processo pai do processo. Ele é exibido apenas quando a opção -R foi especificada.

PGID é o número de identificação do grupo de processos associado ao processo. Ele é exibido apenas quando a opção -g foi especificada.

USER é o número de ID de usuário ou o nome de login do usuário ao qual o processo pertence, geralmente o mesmo que o relatado por [ps]({filename}../../ps)(1). No entanto, no Linux, USER é o número de ID de usuário ou o login que possui o diretório em /proc onde o lsof encontra informações sobre o processo. Geralmente, esse é o mesmo valor relatado por [ps]({filename}../../ps)(1), mas pode ser diferente quando o processo alterou seu ID de usuário efetivo. (Veja a descrição da opção -l para obter informações sobre quando um número de ID de usuário ou um nome de login é exibido.)

FD é o número do descritor de arquivo do arquivo ou:

cwd diretório de trabalho atual;

Lnn referências de biblioteca (AIX); ctty tty de caractere; DEL arquivo excluído; err erro de informação FD (veja a coluna NAME); fp. Fileport (Darwin); jld diretório de jail (FreeBSD); ltx texto de biblioteca compartilhada (código e dados); Mxx número hexadecimal do tipo de memória mapeada xx. m86 arquivo mapeado DOS Merge; mem arquivo mapeado de memória; mmap dispositivo mapeado de memória; NOFD para um diretório Linux /proc//fd que não pode ser aberto - o caminho do diretório aparece na coluna NAME, seguido por uma mensagem de erro; pd diretório pai; Rnn número de região desconhecido (HP-UX); rtd diretório raiz; twd diretório de trabalho atual por tarefa; txt texto do programa (código e dados); v86 arquivo VP/ix mapeado;

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

r para acesso de leitura;
w para acesso de gravação;
u para acesso de leitura e gravação;
espaço se o modo for desconhecido e não houver bloqueio
caractere segue;
`-` se o modo for desconhecido e houver bloqueio
caractere segue.

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

N para um bloqueio NFS do Solaris de tipo desconhecido;
r para bloqueio de leitura em parte do arquivo;
R para um bloqueio de leitura em todo o arquivo;
w para bloqueio de gravação em parte do arquivo;
W para um bloqueio de gravação em todo o arquivo;
u para um bloqueio de leitura e gravação de qualquer comprimento;
U para um bloqueio de tipo desconhecido;
x para um bloqueio SCO OpenServer Xenix em parte do arquivo;
X para um bloqueio SCO OpenServer Xenix em todo o arquivo;
espaço se não houver bloqueio.

Consulte a seção LOCKS para obter mais informações sobre o caractere de informações de bloqueio.

O conteúdo da coluna FD constitui um único campo para análise em scripts de pós-processamento. Os números FD maiores que 9999 são abreviados para um *'' seguido pelos três últimos dígitos. Por exemplo, 10001 aparece como*001''.

TYPE é o tipo do nó associado ao arquivo - por exemplo, VDIR, VREG, etc.

ou ``ax25'' para um socket Linux AX.25;

ou ``a_inode'' para inode anônimo;

ou ``icmp'' para um socket ICMP;

ou ``inet'' para um socket de domínio Internet;

ou ``ipx'' para um socket IPX;

ou ``key'' para um socket interno de gerenciamento de chaves;

ou ``lla'' para um arquivo de acesso de nível de link HP-UX;

ou ``ndrv'' para um socket de driver de rede;

ou ``netlink'' para um socket netlink;

ou ``pack'' para um socket de pacote;

ou ``ppp'' para um socket PPP;

ou ``raw'' para um socket raw;

ou ``raw6'' para um socket raw IPv6;

ou ``rte'' para um socket AF_ROUTE;

ou ``sock'' para um socket de domínio desconhecido;

ou ``systm'' para um socket de sistema;

ou ``unix'' para um socket de domínio UNIX;

ou ``x.25'' para um socket x.25 HP-UX;

ou ``ATALK'' para um socket AppleTalk;

ou ``BLK'' para um arquivo de dispositivo de bloco;

ou ``CHR'' para um arquivo de dispositivo de caractere;

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

ou ``DIR'' para um diretório;

ou ``DOOR'' para um arquivo VDOOR;

ou ``EVENTFD'' para um eventfd;

ou ``FIFO'' para um arquivo de dispositivo FIFO;

ou ``FSEVENTS'' para fsevents;

ou ``IPv4'' para um socket IPv4;

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

ou ``KQUEUE'' para um arquivo de fila de eventos de 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 caractere multiplexado;

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 o 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 descritores 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 de notificação de grupo /proc;

ou ``PIPE'' para pipes;

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 (map);

ou ``PMPS'' para um arquivo /proc/maps;

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

ou ``PNTF'' para um arquivo de notificação de processo /proc;

ou ``POBJ'' para um arquivo de objeto /proc;

ou ``PODR'' para um diretório de objeto /proc;

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

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

ou ``POPG'' para um arquivo de dados de página de formato antigo /proc;

ou ``PORT'' para um pipe nomeado SYSV;

ou ``PREG'' para um arquivo de registro /proc;

ou ``PRMP'' para um arquivo /proc/rmap;

ou ``PROCDSC'' para um descritor de processador;

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 ``PSXMQ'' para um arquivo de fila de mensagens POSIX;

ou ``PSXSEM'' para um arquivo de semáforo POSIX;

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

ou ``PTS'' para um arquivo /dev/pts;

ou ``PUSG'' para um arquivo /proc/usage;

ou ``PW'' para um arquivo /proc/watch;

ou ``PXMP'' para um arquivo /proc/xmap;

ou ``REG'' para um arquivo regular;

ou ``SHM'' para um arquivo de memória compartilhada;

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

ou ``STR'' para streams;

ou ``STSO'' para um socket de stream;

ou ``UNKN'' para um arquivo desconhecido;

ou ``UNKNcwd'' para um diretório de trabalho atual desconhecido;

ou ``UNKNdel'' para um arquivo excluído desconhecido;

ou ``UNKNfd'' para um descritor de arquivo desconhecido;

ou ``UNKNmem'' para um arquivo mapeado em memória desconhecido;

ou ``UNKNrtd'' para um diretório raiz desconhecido;

ou ``UNKNtxt'' para um texto de programa desconhecido;

ou ``UNNM'' para um tipo de arquivo não nomeado;

ou ``XNAM'' para um arquivo especial OpenServer Xenix de tipo desconhecido;

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

ou ``XSD'' para um arquivo de dados compartilhados OpenServer Xenix;

ou ``UNSP'' para um arquivo não suportado;

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

FILE-ADDR contém o endereço da estrutura de arquivo do kernel quando f foi especificado com +f;

FCT contém a contagem de referência do arquivo da estrutura de arquivo do kernel quando c foi especificado com +f;

FILE-FLAG quando g ou G foi especificado com +f, este campo contém o conteúdo do membro f_flag[s] da estrutura de arquivo do kernel e os sinalizadores de arquivo abertos por processo do kernel (se disponíveis); `G` faz com que eles 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 os valores f_flag[s] da seguinte tabela:

AIO       I/O assíncrono (por exemplo, FAIO)
AP        anexar
ASYN      I/O assíncrono (por exemplo, FASYNC)
BAS       bloco, teste e conjunto em uso
BKIU      bloquear se estiver em uso
BL        usar deslocamentos de bloco
BSK       busca de bloco
CA        evitar cópia
CIO       I/O simultâneo
CLON      clone
CLRD      leitura CL
CR        criar
DF        adiar
DFI       adiar IND
DFLU      flush de dados
DIR       direto
DLY       atraso
DOCL      fazer clone
DSYN      integridade apenas de dados
DTY       deve ser um diretório
EVO       somente evento
EX        abrir para execução
EXCL      abrir exclusivo
FSYN      gravações síncronas
GCDF      adiar durante unp_gc() (AIX)
GCMK      marcar durante unp_gc() (AIX)
GTTY      acessado via /dev/tty
HUP       HUP em andamento
KERN      kernel
KIOC      ioctl emitido pelo kernel
LCK       tem bloqueio
LG        arquivo grande
MBLK      bloco de mensagem de stream
MK        marcar
MNT       montar
MSYN      sincronização multiplexada
NATM      não atualizar atime
NB        I/O não bloqueante
NBDR      sem verificação BDRM
NBIO      I/O não bloqueante SYSV
NBF       bufferização n em efeito
NC        sem cache
ND        sem atraso
NDSY      sem sincronização de dados
NET       rede
NFLK      não seguir links
NMFS      sistema de arquivos NM
NOTO      desabilitar parada em segundo plano
NSH       sem compartilhamento
NTTY      sem TTY de controle
OLRM      espelho OLR
PAIO      I/O assíncrono POSIX
PATH      caminho
PP        pipe POSIX
R         ler
RC        cache de bloqueio de arquivo e registro
REV       revogado
RSH       leitura compartilhada
RSYN      sincronização de leitura
RW        acesso de leitura e gravação
SL        bloqueio compartilhado
SNAP      snapshot formatado
SOCK      socket
SQSH      conjunto compartilhado Sequent ao abrir
SQSV      conjunto SVM Sequent ao abrir
SQR       reparo de conjunto Sequent ao abrir
SQS1      abertura compartilhada completa Sequent
SQS2      abertura compartilhada parcial Sequent
STPI      parar I/O
SWR       leitura síncrona
SYN       integridade de arquivo durante a gravação
TCPM      evitar colisão TCP
TMPF      arquivo temporário
TR        truncar
W         escrever
WKUP      sincronização de I/O paralelo
WTG      sincronização de I/O paralelo
VH        vhangup pendente
VTXT      texto virtual
XL        bloqueio exclusivo

Esta lista de nomes foi derivada das definições `#define` em arquivos de cabeçalho do dialeto <fcntl.h>,
<linux/fs.h>, <sys/fcntl.c>, <sys/fcntlcom.h> e <sys/file.h>; consulte o arquivo de cabeçalho common.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 as flags de arquivo abertas por processo do kernel desta tabela:

ALLC      alocado
BR        o arquivo foi lido
BHUP      atividade interrompida por SIGHUP
BW        o arquivo foi gravado
CLSG      fechando
CX        fechar ao executar (consulte fcntl(F_SETFD))
LCK       uma trava foi aplicada
MP        mapeado para a memória
OPIP      abertura pendente - em andamento
RSVW      espera reservada
SHMT      UF_FSHMAT definido (AIX)
USE       em uso (multi-encadeado)

NODE-ID (ou INODE-ADDR para alguns dialetos) contém um identificador exclusivo para o nó de arquivo (geralmente o endereço vnode ou inode do kernel, mas também, ocasionalmente, uma concatenação do número do dispositivo e do nó) quando n foi especificado para +f;

DEVICE contém os números do dispositivo, separados por vírgulas, para um arquivo especial de caractere, especial de bloco, regular, de diretório ou NFS;

ou "memória" para um nó de sistema de arquivos de memória sob 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 FIFOs, por exemplo).

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

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

TAMANHO, TAMANHO/DESLOCAMENTO 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 - que
seja apropriado para o tipo de arquivo e a versão do lsof.

Em alguns dialetos UNIX, o lsof não consegue obter informações precisas ou consistentes sobre o deslocamento do 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 - portanto, o lsof exibe para seus tamanhos as quantidades de conteúdo que encontra em seus descritores de buffer do kernel (por exemplo, contagens de tamanho do buffer de soquete ou tamanhos de janela TCP/IP). Consulte o FAQ do 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" à frente, se contiver 8 dígitos ou menos; em hexadecimal com um "0x" à frente
se for maior que 8 dígitos. (Consulte a descrição da opção -o o para obter informações sobre quando 8 pode ter como padrão algum outro valor).

Assim, os "0t" e "0x" à frente identificam um deslocamento quando a coluna pode conter ambos
um tamanho e um deslocamento (ou seja, seu título é TAMANHO/DESLOCAMENTO).

Se a opção -o for especificada, o lsof sempre exibe o deslocamento do arquivo (ou nada se nenhum deslocamento estiver disponível) e rotula a coluna como DESLOCAMENTO. O deslocamento sempre começa com "0t" ou "0x", conforme descrito acima.

O usuário do lsof pode controlar a alternância de "0t" para "0x" com a opção -o o. Consulte sua descrição para obter mais informações.

Se a opção -s for especificada, o lsof sempre exibe o tamanho do arquivo (ou nada se nenhum tamanho estiver disponível) e rotula a coluna como TAMANHO. As opções -o e -s são mutuamente exclusivas; ambas não podem ser especificadas.

Se a opção -H for especificada, o lsof exibe o tamanho do arquivo em um formato legível para humanos.

Para arquivos que não têm um tamanho fixo - por exemplo, não residem em um dispositivo de disco - o lsof exibirá informações apropriadas sobre o tamanho ou a posição atual do arquivo, se estiverem disponíveis nas estruturas do kernel que definem o arquivo.

NLINK contém a contagem de links do arquivo quando +L foi especificado;

NODE é o número de nó de um arquivo local;

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

ou o tipo de protocolo da Internet - por exemplo, "TCP";

ou "STR" para um fluxo;

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

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

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

ou o nome de um arquivo especificado na opção names (após a resolução de quaisquer links simbólicos);

ou o nome de um dispositivo especial de caractere ou um dispositivo especial de bloco;

ou os endereços de rede locais e remotos de um arquivo de rede; o nome do host local ou
o número de IP é seguido por dois pontos (':'), a porta, '->' e o endereço remoto de duas partes; os endereços IP podem ser relatados como números ou nomes, dependendo das opções +|-M, -n
e -P; os números IPv6 separados por dois pontos são colocados entre colchetes; os endereços IPv4 INADDR_ANY e IPv6 IN6_IS_ADDR_UNSPECIFIED e os números de porta zero são representados por um asterisco ('*'); um endereço de destino UDP pode ser seguido pelo
quantidade de tempo decorrida desde que o último pacote foi enviado para o destino; os endereços remotos TCP, UDP e UDPLITE podem ser seguidos por informações TCP/TPI entre parênteses - estado

(por exemplo, "(ESTABLISHED)", "(Unbound)"), tamanhos de fila e tamanhos de janela (nem todos os dialetos) - de uma forma semelhante ao que netstat(1) relata; consulte a descrição da opção -T ou a descrição do campo TCP/TPI em SAÍDA PARA OUTROS PROGRAMAS para obter mais informações sobre estado, tamanho da fila e tamanho da janela.

ou o endereço ou nome de um socket de domínio UNIX, possivelmente incluindo o nome do dispositivo de clone de fluxo, o nome do caminho do objeto do sistema de arquivos, os endereços local e remoto do kernel, informações do par de sockets e o endereço do nó virtual vinculado;

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

ou ``STR'', seguido pelo nome do fluxo;

ou o nome do 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 do dispositivo e dos módulos de fluxo do SCO OpenServer, separados por ``->'';

ou o nome do diretório do sistema, `` -- '', e tantos componentes do nome do caminho quanto o lsof puder encontrar no cache de nomes do kernel para os dialetos selecionados (consulte a seção CACHE DE NOME DO KERNEL para obter mais informações);

ou ``PIPE->'', seguido pelo endereço de destino do pipe do kernel Solaris;

ou ``COMMON:'', seguido pelo nome do dispositivo da estrutura de informações do dispositivo de nó virtual comum do Solaris, para um nó virtual 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 socket RAW não-Internet;

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

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

ou ``rd=<deslocamento>'' e ``wr=<deslocamento>'' para os valores dos deslocamentos de leitura e gravação de um FIFO;

ou ``clone n:/dev/event'' para clones de arquivos do dispositivo /dev/event do SCO OpenServer, onde n é o número do dispositivo secundário do arquivo;

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

ou ``sem PCB'' para arquivos de socket que não têm um bloco de protocolo associado a eles, opcionalmente seguido por `, CANTSENDMORE'' se o envio no socket foi desativado ou `, CANTRCVMORE'' se o recebimento no socket foi desativado (por exemplo, pela função [shutdown]({filename}../../shutdown)(2));

ou os endereços local e remoto de um socket IPX Linux em formato de arquivo, no formato
<net>:[<node>:]<port>, seguido entre parênteses pelos tamanhos das filas de transmissão e recepção, e o estado da conexão;

ou ``dgram'' ou ``stream'' para o tipo de sockets de domínio UNIX no kernel UnixWare 7.1.1 e superior, seguido por dois pontos (':') e o caminho local do arquivo quando disponível, seguido por
``->'' e o caminho remoto do arquivo ou endereço do socket do kernel em hexadecimal quando disponível;

ou o valor de associação, índice de associação, valor de ponto final, endereço local, porta local, endereço remoto e porta remota para sockets SCTP Linux;

ou ``protocol: '' seguido pelo atributo de protocolo do socket Linux.

Para dialetos que suportam um sistema de arquivos ``namefs'', permitindo que um arquivo seja anexado a outro com fattach(3C), lsof adicionará ``(FA:<address1><direction><address2>)'' à coluna NAME.
<address1> e <address2> são endereços de vnode hexadecimais. <direction> será ``<-'' se <address2> foi anexado a este vnode cujo endereço é <address1>; e ``->'' se <address1>,
o endereço do vnode deste vnode, foi anexado a <address2>. <address1> pode ser omitido se
já aparecer na coluna DEVICE.

Lsof pode adicionar duas notas entre parênteses à coluna NAME para arquivos abertos do Solaris 10: ``(?)'' se
lsof considerar que o nome do caminho é de precisão questionável; e ``(deleted)'' se a opção -X
for especificada e lsof detectar que o nome do caminho do arquivo aberto foi excluído. Consulte o FAQ do lsof
(A seção FAQ fornece sua localização.) para obter mais informações sobre essas adições à coluna NAME.

BLOQUEIOS

Lsof não consegue relatar adequadamente a grande variedade de bloqueios de arquivos 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 mantém vários bloqueios de byte em um arquivo, lsof relata apenas o status
do primeiro bloqueio que encontra. Se for um bloqueio de byte, o caractere de bloqueio será relatado em letras minúsculas - ou seja, `r`, `w` ou `x` - em vez do equivalente em letras 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 servidor host remoto geralmente
registra o estado do bloqueio. Uma exceção é o Solaris - em alguns níveis de patch do 2.3 e em todas as versões acima do 2.4, o kernel Solaris registra informações sobre bloqueios remotos em estruturas locais.

Lsof tem dificuldade em relatar bloqueios para alguns dialetos UNIX. Consulte a seção BUGS desta página de manual ou o FAQ do 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 uma saída adequada para processamento por outro programa - por exemplo, um script awk ou Perl ou um programa C.

Cada unidade de informação é exibida em um campo que é identificado com um caractere inicial e terminado por uma quebra de linha (012) (ou um caractere nulo (000) se o caractere de 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 até o terminador do campo.

É possível considerar a saída de campos como conjuntos de processo e arquivo. Um conjunto de processo começa com um campo cujo identificador é p (para identificador de processo (PID)). Ele se estende até o início do próximo campo PID ou o início do primeiro conjunto de arquivo do processo, o que ocorrer primeiro. Incluídos no conjunto de processo estão os campos que identificam o comando, o identificador de grupo de processo (PGID), o ID de tarefa (TID) e o ID de usuário (UID) ou nome de login.

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

Quando o terminador de campo NUL (000) é selecionado com o caractere de identificador de campo 0 (zero), o lsof termina cada conjunto de processo e arquivo com um caractere de quebra de linha (012).

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

O lsof, nas versões de 4.88 a 4.93.2, sempre produzia um campo a mais, o campo de descritor de arquivo (f). No entanto, nesta versão, o lsof não o produz. Essa alteração tem como objetivo dar suporte ao caso de uso em que um usuário precisa apenas do campo PID e não precisa do campo de descritor de arquivo. Especifique f explicitamente se você precisar do campo.

É totalmente possível selecionar um conjunto de campos que não pode ser facilmente analisado - por exemplo, se o campo de descritor de arquivo não for selecionado, pode ser difícil identificar os conjuntos de arquivos. Para ajudá-lo a evitar essa dificuldade, o lsof oferece suporte à opção -F; ela seleciona a saída de todos os campos com terminadores de quebra de linha (a combinação de opções -F0 seleciona a saída de todos os campos com terminadores nulos). Por razões de compatibilidade, nem -F nem -F0 selecionam o campo de dispositivo bruto.

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

a   modo de acesso ao arquivo
c   nome do comando do processo (todos os caracteres da estrutura proc ou usuário)
C   contagem de compartilhamento da estrutura do arquivo
d   código de caractere do dispositivo do arquivo
D   número do dispositivo principal/secundário do arquivo (0x<hexadecimal>)
f   descritor do arquivo
F   endereço da estrutura do arquivo (0x<hexadecimal>)
G   flags do arquivo (0x<hexadecimal>; nomes se +fg for seguido)
g   ID do grupo de processo
i   número do inode do arquivo
K   ID da tarefa
k   contagem de links
l   estado de bloqueio do arquivo
L   nome de login do processo
m   marcador entre saídas repetidas (sempre selecionado no modo de repetição)
M   nome do comando da tarefa
n   nome do arquivo, comentário, endereço de Internet
N   identificador de nó (0x<hexadecimal>)
o   deslocamento do arquivo (0t<decimal> ou 0x<hexadecimal>, consulte -o o)
p   ID do processo (sempre selecionado)
P   nome do protocolo
r   número de dispositivo bruto (0x<hexadecimal>)
R   ID do processo pai
s   tamanho do arquivo (decimal)
S   identificação do fluxo do arquivo
t   tipo do arquivo
T   informações TCP/TPI, identificadas por prefixos (o `=` faz parte do prefixo):
    QR=<tamanho da fila de leitura>
    QS=<tamanho da fila de envio>
    SO=<opções e valores do soquete> (nem todos os dialetos)
    SS=<estados do soquete> (nem todos os dialetos)
    ST=<estado da conexão>
    TF=<flags e valores TCP> (nem todos os dialetos)
    WR=<tamanho da janela de leitura> (nem todos os dialetos)
    WW=<tamanho da janela de gravação> (nem todos os dialetos)
    (As informações TCP/TPI não são relatadas para todos os dialetos UNIX suportados. A saída de ajuda -h ou -? para a opção -T mostrará quais informações TCP/TPI podem ser solicitadas.)
u   ID de usuário do processo
z   nome da zona Solaris 10 e superior
Z   contexto de segurança SELinux (inibido quando o SELinux está desativado)
0   use o caractere terminador de campo NUL em vez de quebra de linha
19  identificadores de campo específicos do dialeto (a saída de -F? identifica as informações a serem encontradas nos campos específicos do dialeto).

Você pode obter informações de ajuda online sobre esses caracteres e suas descrições especificando a opção -F?. (Escape o caractere ? conforme exigido pelo seu shell.) Informações adicionais sobre o conteúdo do campo podem ser encontradas na seção OUTPUT.

Como exemplo, \-F pcfn`selecionará o ID do processo (p), o nome do comando (c), o descritor de arquivo (f) e o nome do arquivo (n) com um caractere terminador de campo NL;`-F pcfn0`` seleciona a mesma saída com um caractere terminador de campo NUL (000).

Lsof não produz todos os campos para cada processo ou conjunto de arquivos, apenas aqueles que estão disponíveis. Alguns campos são mutuamente exclusivos: caracteres de dispositivo de arquivo e números de dispositivo principal/menor; número de inode de arquivo e nome de protocolo; nome do arquivo e identificação de fluxo; tamanho do arquivo e deslocamento. Um ou outro membro desses conjuntos mutuamente exclusivos aparecerá na saída do campo, mas não ambos.

Normalmente, lsof termina cada campo com um caractere NL (012). O identificador de campo 0 (zero) pode ser especificado para alterar o caractere terminador de campo para um NUL (000). Um terminador de campo NUL pode ser mais fácil de processar com xargs (1), por exemplo, ou com programas cujos mecanismos de citação podem não lidar facilmente com a gama de caracteres na saída do campo. Quando o terminador de campo NUL está em uso, lsof termina cada processo e conjunto de arquivos com um NL (012).

Três auxílios para produzir programas que podem processar a saída do campo lsof estão incluídos na distribuição lsof. O primeiro é um arquivo de cabeçalho C, lsof_fields.h, que contém símbolos para os caracteres de identificação de campo, índices para armazená-los em uma tabela e strings de explicação que podem ser compiladas em programas. Lsof usa este arquivo de cabeçalho.


A segunda ferramenta é um conjunto de scripts de exemplo que processam a saída de campos, escritos em awk, Perl 4 e Perl 5. Eles estão localizados no subdiretório scripts da distribuição do lsof.

A terceira ferramenta é a biblioteca C usada para o conjunto de testes do lsof. O conjunto de testes é escrito em C e usa a saída de campos para validar o correto funcionamento do lsof. A biblioteca pode ser encontrada no arquivo tests/LTlib.c da distribuição do lsof. A biblioteca usa a primeira ferramenta, o arquivo de cabeçalho lsof_fields.h.

BLOQUEIOS E TEMPOS DE ESPERA

O lsof pode ser bloqueado por algumas funções do kernel que ele usa - lstat(2), readlink(2) e stat(2). Essas funções ficam travadas no kernel, por exemplo, quando os hosts onde os sistemas de arquivos NFS montados estão localizados se tornam inacessíveis.

O lsof tenta interromper esses bloqueios com temporizadores e processos filhos, mas as técnicas não são totalmente confiáveis. Quando o lsof consegue interromper um bloqueio, ele relata a interrupção com uma mensagem de erro. As mensagens podem ser suprimidas com as opções -t e -w.

O valor padrão do tempo de espera pode ser exibido com a opção -h ou -?, e pode ser alterado com a opção -S [t]. O mínimo para t é dois segundos, mas você deve evitar valores pequenos, pois uma resposta lenta do sistema pode fazer com que os tempos de espera curtos expirem inesperadamente e talvez impeçam o lsof de produzir alguma saída.

Quando o lsof tem que interromper um bloqueio durante o acesso às informações do sistema de arquivos montado, ele normalmente continua, embora com menos informações disponíveis para exibir sobre os arquivos abertos.

O lsof também pode ser instruído a evitar a proteção de temporizadores e processos filhos ao usar as funções do kernel que podem bloquear, especificando a opção -O. Embora isso permita que o lsof seja iniciado com menos sobrecarga, ele expõe completamente o lsof às situações do kernel que podem bloqueá-lo. Use esta opção com cautela.

EVITANDO BLOQUEIOS DO KERNEL

Você pode usar a opção -b para dizer ao lsof para evitar o uso de funções do kernel que bloqueariam. Algumas precauções se aplicam.

Primeiro, usar esta opção geralmente requer que seu sistema forneça números de dispositivo alternativos em vez dos números de dispositivo que o lsof normalmente obteria com as funções lstat(2) e stat(2) do kernel. Veja a seção NÚMEROS DE DISPOSITIVO ALTERNATIVOS para obter mais informações sobre os números de dispositivo alternativos.

Em segundo lugar, você não pode especificar nomes para o lsof localizar, a menos que sejam nomes de sistemas de arquivos. Isso ocorre porque o lsof precisa saber os números de dispositivo e inode dos arquivos listados nas opções do lsof, e a opção -b impede que o lsof os obtenha. Além disso, como o lsof tem apenas números de dispositivo para os sistemas de arquivos que têm alternativas, sua capacidade de localizar arquivos em sistemas de arquivos depende inteiramente da disponibilidade e precisão das alternativas. Se nenhuma alternativa estiver disponível, ou se forem incorretas, o lsof não poderá localizar arquivos nos sistemas de arquivos especificados.

Terceiro, se os nomes dos diretórios do seu sistema de arquivos que o lsof obtém da tabela de montagem do seu sistema forem links simbólicos, o lsof não poderá resolver os links. Isso ocorre porque a opção -b faz com que o lsof evite a função readlink(2) do kernel que ele usa para resolver links simbólicos.

Finalmente, o uso da opção -b faz com que o lsof emita mensagens de aviso quando ele precisa usar as funções do kernel que a opção -b o instrui a evitar. Você pode suprimir essas mensagens especificando a opção -w, mas, se o fizer, não verá os números de dispositivo alternativos relatados nas mensagens de aviso.

NÚMEROS DE DISPOSITIVO ALTERNATIVOS

Em alguns sistemas, quando o lsof tem que interromper um bloco porque não consegue obter informações sobre um sistema de arquivos montado por meio das funções do kernel lstat(2) e stat(2) ou porque você especificou a opção -b, o lsof pode obter algumas das informações de que precisa — o número do dispositivo e, possivelmente, o tipo de sistema de arquivos — da tabela de montagem do sistema. Quando isso é possível, o lsof relatará o número do dispositivo que obteve. (Você pode suprimir o relatório especificando a opção -w.)

Você pode ajudar esse processo se sua tabela de montagem for suportada com um arquivo /etc/mtab ou /etc/mnttab que contenha um campo de opções, adicionando um campo ``dev=xxxx'' para pontos de montagem que não o tenham em suas strings de opções. Observe: você deve ser capaz de editar o arquivo — ou seja, algumas tabelas de montagem, como o /etc/mnttab ou o /proc/mounts recentes do Solaris e do Linux, são somente leitura e não podem ser modificadas.

Você também pode ser capaz de fornecer números de dispositivo usando as opções +m e +m m, desde que sejam suportadas por seu sistema. Verifique a saída das opções -h ou -? do lsof para ver se as opções +m e +m m estão disponíveis.

A parte ``xxxx'' do campo é o valor hexadecimal do número do dispositivo do sistema de arquivos. (Consulte o campo st_dev da saída das funções lstat(2) e stat(2) para os valores apropriados para seus sistemas de arquivos.) Aqui está um exemplo de um arquivo /etc/mnttab do Sun Solaris 2.6 para um sistema de arquivos montado remotamente via NFS:

nfs  ignore,noquota,dev=2a40001

Há uma vantagem em ter entradas ``dev=xxxx'' em seu arquivo de tabela de montagem, especialmente para sistemas de arquivos que são montados de servidores NFS remotos. Quando um servidor remoto falha e você deseja identificar seus usuários executando o lsof em um de seus clientes, o lsof provavelmente não poderá obter a saída das funções lstat(2) e stat(2) para o sistema de arquivos. Se ele puder obter o número do dispositivo do sistema de arquivos da tabela de montagem, ele poderá exibir os arquivos abertos no servidor NFS com falha.

Alguns sistemas que não usam um arquivo /etc/mtab ou /etc/mnttab ASCII para a tabela de montagem ainda podem fornecer um número de dispositivo alternativo em suas tabelas de montagem internas. Isso inclui AIX, Apple Darwin, FreeBSD, NetBSD, OpenBSD e Tru64 UNIX. O lsof sabe como obter o número de dispositivo alternativo para esses sistemas e o usa quando sua tentativa de executar lstat(2) ou stat(2) no sistema de arquivos é bloqueada.


Se você não tiver certeza se o seu dialeto fornece números de dispositivo alternativos para os sistemas de arquivos a partir de sua tabela de montagem, use esta invocação de lsof para ver se ele relata algum número de dispositivo alternativo:

lsof -b

Procure mensagens de aviso de erro padrão que comecem com ``assumindo "dev=xxxx" de ...''.

CACHE DE NOME DO KERNEL

Lsof pode examinar o cache de nome do kernel ou usar outras instalações do kernel (por exemplo, a função ADVFS x tag_to_path() no Tru64 UNIX) em alguns dialetos para a maioria dos tipos de sistemas de arquivos, excluindo AFS, e extrair os componentes de nome de caminho usados recentemente. (As pesquisas de caminho do sistema de arquivos AFS não usam o cache de nome do kernel; algumas operações do sistema de arquivos Solaris VxFS aparentemente também não o usam.)

Lsof relata os caminhos completos que encontra na coluna NAME. Se lsof não puder relatar todos os componentes em um caminho, ele relata na coluna NAME o nome do sistema de arquivos, seguido por um espaço, dois caracteres -, outro espaço e os nomes dos componentes que encontrou, separados pelo caractere /.

Quando lsof é executado no modo repetitivo – ou seja, com a opção -r especificada – a extensão em que ele pode relatar os componentes do nome do caminho para o mesmo arquivo pode variar de ciclo para ciclo. Isso ocorre porque outros processos em execução podem fazer com que o kernel remova as entradas de seu cache de nome e as substitua por outras.

O uso do cache de nome do kernel por lsof para identificar os caminhos dos arquivos pode levá-lo a relatar componentes incorretos em algumas circunstâncias. Isso pode acontecer quando o cache de nome do kernel usa o número do dispositivo e o número do nó como uma chave (por exemplo, SCO OpenServer) e uma chave em um sistema de arquivos que muda rapidamente é reutilizada. Se o kernel do dialeto UNIX não limpar a entrada do cache de nome para um arquivo quando ele é removido, lsof pode encontrar uma referência à entrada errada no cache. O FAQ do lsof (A seção FAQ fornece sua localização) tem mais informações sobre essa situação.

Lsof pode relatar os componentes do nome do caminho para estes dialetos:

FreeBSD
HP-UX
Linux
NetBSD
SCO OpenServer
SCO|Caldera UnixWare
Solaris
Tru64 UNIX

Lsof não pode relatar os componentes do nome do caminho para estes dialetos:

AIX
OpenBSD

Se você quiser saber por que lsof não pode relatar os componentes do nome do caminho para alguns dialetos, consulte o FAQ do lsof (A seção FAQ fornece sua localização).

ARQUIVO DE CACHE DE DISPOSITIVO

Examinar todos os membros da árvore de nós /dev (ou /devices) com as funções stat(2) pode levar muito tempo. Além disso, as informações de que lsof precisa – número do dispositivo, número do inode e caminho – raramente mudam.

Consequentemente, lsof normalmente mantém um arquivo de texto ASCII de informações de cache /dev (ou /devices) (exceção: o lsof baseado em /proc do Linux, onde não é necessário). O administrador de sistema local que cria lsof pode controlar a maneira como o caminho do arquivo de cache de dispositivo é formado, selecionando entre estas opções:


Caminho da opção -D; Caminho de uma variável de ambiente; Caminho em todo o sistema; Caminho pessoal (o padrão); Caminho pessoal, modificado por uma variável de ambiente.

Consulte a saída das opções de ajuda -h, -D? ou -? para o estado atual do suporte ao cache de dispositivo. A saída da ajuda lista o caminho padrão do arquivo de cache de dispositivo de leitura que está em vigor para a invocação atual de lsof. A saída da opção -D? lista os caminhos de arquivo de cache de dispositivo somente leitura e de gravação, os nomes de quaisquer variáveis de ambiente aplicáveis ​​e o formato do caminho do cache de dispositivo pessoal.

O lsof pode detectar se o arquivo de cache de dispositivo atual foi modificado acidentalmente ou maliciosamente por meio de verificações de integridade, incluindo o cálculo e a verificação de uma soma de redundância cíclica (CRC) de dezesseis bits no conteúdo do arquivo. Quando o lsof percebe que algo está errado com o arquivo, ele emite um aviso e tenta remover o arquivo de cache atual e criar uma nova cópia, mas apenas para um caminho para o qual o processo pode gravar legitimamente.

O caminho de onde um processo lsof pode tentar ler um arquivo de cache de dispositivo pode não ser o mesmo que o caminho para o qual ele pode gravar legitimamente. Assim, quando o lsof percebe que precisa atualizar o arquivo de cache de dispositivo, ele pode escolher um caminho diferente para gravá-lo do caminho de onde leu uma versão incorreta ou desatualizada.

Se disponível, a opção -Dr inibirá a gravação de um novo arquivo de cache de dispositivo. (Está sempre disponível quando especificado sem um argumento de nome de caminho.)

Quando um novo dispositivo é adicionado ao sistema, o arquivo de cache de dispositivo pode precisar ser recriado. Como o lsof compara o mtime do arquivo de cache de dispositivo com o mtime e ctime do diretório /dev (ou /devices), ele geralmente detecta que um novo dispositivo foi adicionado; nesse caso, o lsof emite uma mensagem de aviso e tenta reconstruir o arquivo de cache de dispositivo.

Sempre que o lsof grava um arquivo de cache de dispositivo, ele define sua propriedade para o UID real do processo em execução e seus modos de permissão para 0600, restringindo sua leitura e gravação ao proprietário do arquivo.

PERMISSÕES DO LSOF QUE AFETAM O ACESSO AO ARQUIVO DE CACHE DE DISPOSITIVO

Duas permissões do executável lsof afetam sua capacidade de acessar arquivos de cache de dispositivo. As permissões são definidas pelo administrador de sistema local quando o lsof é instalado.

A primeira e mais rara permissão é setuid-root. Ele entra em vigor quando o lsof é executado; seu UID efetivo é então root, enquanto seu UID real (ou seja, o do usuário conectado) não é. A distribuição lsof recomenda que as versões para esses dialetos sejam executadas com setuid-root.

HP-UX 11.11 e 11.23
Linux

A segunda e mais comum permissão é setgid. Ele entra em vigor quando o ID de grupo efetivo (GID) do processo lsof é definido para um que possa acessar dispositivos de memória do kernel - por exemplo, kmem'',sys'' ou ``system''.


Um processo lsof que possui permissão setgid geralmente renuncia a essa permissão após acessar os dispositivos de memória do kernel. Quando isso acontece, lsof pode permitir formações de caminho de cache de dispositivo mais flexíveis. A distribuição lsof recomenda que as versões para esses sistemas operacionais sejam executadas com permissão setgid e que seja permitido que renunciem a essa permissão.

AIX 5.[12] e 5.3-ML1
Apple Darwin 7.x em sistemas Power Macintosh
FreeBSD 4.x, 4.1x, 5.x e [6789].x para sistemas baseados em x86
FreeBSD 5.x, [6789].x e 1[012].8 para sistemas Alpha, AMD64 e Sparc64
HP-UX 11.00
NetBSD 1.[456], 2.x e 3.x para sistemas Alpha, x86 e SPARC
OpenBSD 2.[89] e 3.[0-9] para sistemas baseados em x86
SCO OpenServer Release 5.0.6 para sistemas baseados em x86
SCO|Caldera UnixWare 7.1.4 para sistemas baseados em x86
Solaris 2.6, 8, 9 e 10
Tru64 UNIX 5.1

(Observação: lsof para AIX 5L e versões superiores requer permissão setuid-root se sua opção -X for usada.)

Para esses sistemas operacionais, lsof não oferece suporte a um cache de dispositivo, portanto, as permissões concedidas ao executável não se aplicam ao arquivo de cache de dispositivo.

Linux

CAMINHO DO ARQUIVO DE CACHE DE DISPOSITIVO DA OPÇÃO -D

A opção -D fornece meios limitados para especificar o caminho do arquivo de cache de dispositivo. Sua função ? relatará os caminhos do arquivo de cache de dispositivo somente leitura e gravável que ^ sof usará.

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

As funções b, r e u também são restritas quando o processo lsof é executado com permissão setgid e lsof não renuncia à permissão setgid. (Consulte a seção "PERMISSÕES LSOF QUE AFETAM O ACESSO AO ARQUIVO DE CACHE DE DISPOSITIVO" para obter uma lista de implementações que normalmente não renunciam à sua permissão setgid.)

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

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

Quando disponível, a função r diz a lsof para ler o arquivo de cache de dispositivo, mas não atualizá-lo. Quando um argumento de caminho acompanha -Dr, ele especifica o caminho do arquivo de cache de dispositivo. A função r está sempre disponível quando é especificada sem um argumento de nome de caminho. Se lsof não estiver sendo executado com permissão setuid-root e renunciar à sua permissão ^ etgid, um argumento de nome de caminho pode acompanhar a função r.

Quando disponível, a função u diz a lsof para tentar ler e usar o arquivo de cache de dispositivo. Se não puder ler o arquivo ou se encontrar o conteúdo do arquivo incorreto ou desatualizado, lerá informações do kernel e tentará gravar uma versão atualizada do arquivo de cache de dispositivo, mas apenas em um caminho que considera legítimo para os UIDs efetivos e reais do processo lsof.


CAMINHO DO CACHE DE DISPOSITIVOS A PARTIR DE UMA VARIÁVEL DE AMBIENTE

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

Uma restrição adicional se aplica a um caminho de arquivo de cache de dispositivos obtido da variável de ambiente LSOFDEVCACHE: lsof não gravará um arquivo de cache de dispositivos no caminho se o processo lsof não renunciar à sua permissão setgid. (Veja a seção PERMISSÕES DO LSOF QUE AFETAM O ACESSO AO ARQUIVO DE CACHE DE DISPOSITIVOS para obter informações sobre implementações que não renunciam à sua permissão setgid.)

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

CAMINHO DE CACHE DE DISPOSITIVOS EM TODO O SISTEMA

O administrador do sistema local pode optar por ter um arquivo de cache de dispositivos em todo o sistema quando constrói o lsof. Esse arquivo será geralmente 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, este é o terceiro caminho do arquivo de cache de dispositivos do lsof.

Você pode verificar se um arquivo de cache de dispositivos em todo o sistema está em vigor para sua instalação local, examinando a saída da opção de ajuda do lsof, ou seja, a saída da opção -h ou -?.

O lsof nunca gravará no caminho do arquivo de cache de dispositivos em todo o sistema por padrão. Ele deve ser explicitamente nomeado com uma função -D em um procedimento de propriedade do root. Uma vez que o arquivo tenha sido gravado, o procedimento deve alterar seus modos de permissão para 0644 (leitura e gravação do proprietário, leitura do grupo e leitura de outros).

CAMINHO DE CACHE DE DISPOSITIVOS PESSOAL (PADRÃO)

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

Esta é a quarta opção de caminho do arquivo de cache de dispositivos do lsof e geralmente é o padrão. Se um caminho de arquivo de cache de dispositivos em todo o sistema foi definido quando o lsof foi construído, esta quarta opção será aplicada quando o lsof não conseguir encontrar o arquivo de cache de dispositivos em todo o sistema. Esta é a única vez que o lsof usa dois caminhos ao ler o arquivo de cache de dispositivos.

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

O arquivo de cache de dispositivos 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 o lsof tem um arquivo de cache de dispositivos distinto. A parte do nome do host do caminho distingue os arquivos de cache de dispositivos em um diretório inicial montado por NFS, no qual os arquivos de cache de dispositivos são gravados a partir de vários hosts diferentes.


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

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

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

CAMINHO DE CACHE DE DISPOSITIVO PESSOAL MODIFICADO

Se esta opção for definida pelo administrador do sistema local quando o 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 de 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 imediatamente após o diretório inicial na distribuição padrão do lsof.)

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

/Homes/abe/LSOF/.lsof_vic

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

O lsof não gravará em um caminho de arquivo de cache de dispositivo pessoal modificado se o processo lsof não renunciar à permissão setgid. (Consulte a seção PERMISSÕES DO LSOF QUE AFETAM O ACESSO AO ARQUIVO DE CACHE DE DISPOSITIVO para obter uma lista de implementações que normalmente não renunciam à sua permissão setgid.)

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

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

DIAGNÓSTICOS

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

O lsof retorna um (1) se algum erro for detectado, incluindo a falha ao localizar nomes de comando, nomes de arquivos, endereços de Internet ou arquivos, nomes de login, arquivos NFS, PIDs, PGIDs ou UIDs que foram solicitados para serem listados. Se a opção -V for especificada, o lsof indicará os itens de pesquisa que não conseguiu listar. Se a opção -Q for especificada, o lsof ignorará quaisquer falhas de itens de pesquisa e retornará um erro apenas se algo incomum e irrecuperável ocorrer.


Retorna zero (0) se nenhum erro for detectado e se a opção -Q for especificada ou se ele conseguir listar algumas informações sobre todos os argumentos de pesquisa especificados.

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

Avisos de /dev inacessíveis estão habilitados.

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

Avisos de /dev inacessíveis estão desabilitados.

As mensagens de aviso de dispositivo inacessível geralmente desaparecem depois que o lsof tiver criado um arquivo de cache de dispositivo funcional.

EXEMPLOS

Para um conjunto mais extenso de exemplos, documentados de forma mais completa, consulte o arquivo 00QUICKSTART da distribuição do lsof.

Para listar todos os arquivos abertos, use:

lsof

Para listar todos os arquivos de Internet, x.25 (HP-UX) e domínio UNIX abertos, 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

Se for aceitável que o PID 1234 não exista ou que o PID 1234 não tenha arquivos de rede IPv4 abertos, adicione -Q:

lsof -Q -i 4 -a -p 1234

Presumindo que o dialeto UNIX suporte IPv6, para listar apenas arquivos de rede IPv6 abertos, use:

lsof -i 6

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

lsof -i @wonderland.cc.purdue.edu:513-515

Para listar todos os arquivos que usam qualquer protocolo em qualquer porta de 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 de usuário 1234, ou processo 456, ou processo 123, ou processo 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 tem /u/abe/foo aberto sem se preocupar se não houver nenhum, use:

lsof -Q /u/abe/foo

Para executar uma ação somente se um processo tiver /u/abe/foo aberto, use:

lsof /u/abe/foo  echo "ainda em uso"

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

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

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

lsof /dev/log

Para encontrar 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 de dispositivo, use:

lsof -Di

Para obter a saída do PID e do nome do comando para cada processo, o descritor de arquivo, o número do dispositivo do arquivo e o 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 em execução do 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 que tem exatamente quatro caracteres e tem um 'o' ou 'O' no terceiro caractere, use esta forma de expressão regular da opção -c:

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

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

lsof [email protected]

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

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

Para encontrar um arquivo de soquete IP versão 6 (quando o dialeto UNIX suporta IPv6) por um endereço numérico em formato de dois pontos associado que tem uma sequência de zeros - por exemplo, o endereço de loopback - use:

lsof -i@[::1]

Para obter uma linha de marcador de modo de repetição que contenha a hora atual, use:

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

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

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

ERROS

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

Quando um arquivo tem 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, e não de qualquer combinação das estruturas de bloqueio individuais que possam ser descritas por várias estruturas de bloqueio.

O lsof não pode pesquisar arquivos com permissões de acesso restritivas por nome, a menos que seja instalado com permissão de set-UID de root. Caso contrário, ele se limita a pesquisar arquivos aos quais seu usuário ou seu grupo de GID (se houver) têm 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.

O lsof nem sempre pode representar os números de dispositivo Solaris da mesma forma que ls(1). Por exemplo, os números de dispositivo principal e secundário que as funções lstat(2) e stat(2) relatam para o diretório no qual os arquivos de CD-ROM são montados (normalmente /cdrom) não são os mesmos que os que ele relata para o dispositivo no qual os arquivos de CD-ROM são montados (normalmente /dev/sr0). (O lsof relata os números do diretório.)

O suporte para sistemas de arquivos /proc está disponível apenas para os 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 de dispositivo, número de inode e tamanho do arquivo - não estão disponíveis em alguns dialetos. A pesquisa de arquivos em um sistema de arquivos /proc pode exigir que o nome de caminho completo seja especificado.


Não são exibidos nenhum descritor de arquivo (txt) para processos Linux. Todas as entradas para arquivos diferentes do diretório de trabalho atual, do diretório raiz e dos descritores de arquivo numéricos são rotuladas como descritores de memória.

O Lsof não pode pesquisar pipes nomeados Tru64 UNIX por nome, porque sua implementação de kernel de lstat(2) retorna um número de dispositivo incorreto para um pipe nomeado.

O Lsof não pode relatar completamente ou corretamente os bloqueios no HP-UX 9.01, 10.20 e 11.00 devido àcesso insuficiente aos dados do kernel ou erros nos dados do kernel. Consulte o FAQ do lsof (A seção FAQ fornece sua localização.) para obter detalhes.

O tipo de arquivo SMT do AIX é uma invenção. É criado para estruturas de arquivo cujo tipo (15) não é definido no arquivo de cabeçalho /usr/include/sys/file.h do AIX. Uma maneira de criar essas estruturas de arquivo é executar clientes X com a variável DISPLAY definida como ``:0.0''.

A opção +|-f[cfn] não é suportada no Lsof baseado em /proc para Linux, porque ele não lê as estruturas do kernel da memória do kernel.

AMBIENTE

O Lsof pode acessar as seguintes variáveis de ambiente.

LANG define um locale de idioma. Consulte setlocale(3) para os nomes de outras variáveis que podem ser usadas no lugar de LANG - por exemplo, LC_ALL, LC_TYPE, etc.

LSOFDEVCACHE define o caminho para um arquivo de cache de dispositivo. Consulte a seção PATH DO CACHE DE DISPOSITIVO A PARTIR DE UMA VARIÁVEL DE AMBIENTE para obter mais informações.

LSOFPERSDCPATH define o componente do meio de um caminho modificado do arquivo de cache de dispositivo pessoal.

Consulte a seção PATH MODIFICADO DO CACHE DE DISPOSITIVO PESSOAL para obter mais informações.

PERGUNTAS FREQUENTES

Perguntas frequentes e suas respostas (um FAQ) estão disponíveis no arquivo 00FAQ da distribuição do lsof.

A versão mais recente do arquivo pode ser encontrada em:

https://github.com/lsof-org/lsof/blob/master/00FAQ

ARQUIVOS

/dev/kmem dispositivo de memória virtual do kernel

/dev/mem dispositivo de memória física

/dev/swap dispositivo de paginação do sistema

.lsof_hostname arquivo de cache de dispositivo do lsof (O sufixo, hostname, é o primeiro componente do
nome do host retornado por gethostname(2).)

AUTORES

O Lsof foi escrito por Victor A. Abell <_> da Universidade de Purdue. Desde a versão 4.93.0, a equipe lsof-org no GitHub mantém o lsof. Muitos outros contribuíram para o lsof. Eles estão listados no arquivo 00CREDITS da distribuição do lsof.

DISTRIBUIÇÃO

A distribuição mais recente do lsof está disponível em

https://github.com/lsof-org/lsof/releases

VEJA TAMBÉM

Nem todas as páginas de manual a seguir podem existir em todos os dialetos UNIX para os quais o lsof foi portado.

access(2), awk(1), crash(1), fattach(3C), ff(1), fstat(8), fuser(1), gethostname(2), isprint(3), kill(1), localtime(3), lstat(2), modload(8), mount(8), netstat(1), ofiles(8L), open(2), perl(1), ps(1), readlink(2), setlocale(3), stat(2), strftime(3), time(2), uname(1).