Sobes.tech
Junior

Como ver a lista de descritores de ficheiros no Linux?

sobes.tech IA

Resposta da IA

A lista de descritores de ficheiros pode ser vista usando o comando lsof.

# Mostrar todos os ficheiros abertos e descritores para todos os processos
lsof

# Mostrar ficheiros abertos e descritores para um processo específico por PID
# Substitua <PID> pelo identificador do processo de interesse
lsof -p <PID>

# Mostrar ficheiros abertos e descritores para todos os processos de um utilizador
# Substitua <username> pelo nome de utilizador
lsof -u <username>

# Mostrar ficheiros abertos e descritores para um comando específico
# Substitua <command> pelo nome do comando
lsof -c <command>

# Mostrar ficheiros abertos e descritores relacionados com ligações de rede
lsof -i

# Mostrar ficheiros abertos e descritores relacionados com uma porta específica
# Substitua <port_number> pelo número de porta
lsof -i :<port_number>

# Mostrar ficheiros abertos e descritores relacionados com um ficheiro ou diretório específico
# Substitua <file_or_directory> pelo caminho do ficheiro ou diretório
lsof <file_or_directory>

O lsof apresenta informações num formato de colunas:

  • COMMAND: Nome do comando associado ao processo.
  • PID: ID do processo.
  • USER: Utilizador que possui o processo.
  • FD: Descritor de ficheiro. Pode ser:
    • cwd: Diretório de trabalho atual.
    • rtd: Diretório raiz.
    • txt: Ficheiro de texto (código executável).
    • mem: Mapa de memória do ficheiro.
    • mmap: Ficheiro mapeado na memória.
    • <N>u: Descritor de ficheiro <N> aberto em modo "leitura/gravação".
    • <N>r: Descritor de ficheiro <N> aberto em modo "apenas leitura".
    • <N>w: Descritor de ficheiro <N> aberto em modo "apenas escrita".
    • <N>l: Descritor de ficheiro <N> bloqueado.
  • TYPE: Tipo de nó:
    • REG: Ficheiro normal.
    • DIR: Diretório.
    • CHR: Dispositivo de caracteres.
    • BLK: Dispositivo de blocos.
    • FIFO: Canal nomeado (pipe).
    • SOCK: Socket.
  • DEVICE: Número do dispositivo.
  • SIZE/OFF: Tamanho do ficheiro ou deslocamento (offset).
  • NODE: Número inode.
  • NAME: Nome do ficheiro.

Também pode usar o sistema de ficheiros /proc. Para cada processo (PID), /proc/<PID>/fd/ é um diretório contendo links simbólicos para os ficheiros abertos por esse processo. Cada link é nomeado pelo número do descritor de ficheiro.

# Ver os descritores de ficheiros para um processo com PID <PID>
# Substitua <PID> pelo identificador do processo de interesse
ls -l /proc/<PID>/fd/

A saída de ls -l mostrará o número do descritor e o ficheiro ao qual se refere.