você está aqui: Home  → Arquivo de Mensagens

lsof - List Open Files

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 24 de março de 2015

O comando lsof significa List Open Files, ou Liste Arquivos Abertos.

Quando invocado sem fornecer nenhum argumento, ele lista os processos em execução e os arquivos abertos por cada um deles:

  COMMAND    PID  TID USER   FD TYPE DEVICE SIZE/OFF       NODE NAME
  init         1      root  cwd  DIR    8,1     4096          2 /
  init         1      root  rtd  DIR    8,1     4096          2 /
  init         1      root  txt  REG    8,1   265848    2228296 /sbin/init
  init         1      root  mem  REG    8,1    47712    1311733 /lib/x86_64-linux-gnu/libnss_files-2.19.so
  init         1      root  mem  REG    8,1    47760    1311763 /lib/x86_64-linux-gnu/libnss_nis-2.19.so
  init         1      root  mem  REG    8,1    97296    1311713 /lib/x86_64-linux-gnu/libnsl-2.19.so
  init         1      root  mem  REG    8,1    39824    1311743 /lib/x86_64-linux-gnu/libnss_compat-2.19.so
  init         1      root  mem  REG    8,1    14664    1311737 /lib/x86_64-linux-gnu/libdl-2.19.so
  init         1      root  mem  REG    8,1   252032    1315213 /lib/x86_64-linux-gnu/libpcre.so.3.13.1
  ...

Listei acima apenas as primeiras linhas, na verdade este comando irá gerar uma saída que pode chegar a até mesmo centenas de linhas.

Com o uso de diretivas, eu posso obter listagens mais específicas de diversas formas.

Por exemplo, para listar os programas que estão acessando o arquivo /var/log/syslog, eu emito o comando:

  sudo lsof /var/log/syslog
  COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
  rsyslogd 862 syslog    1w   REG    8,1    92150 1325148 /var/log/syslog

Eu posso também solicitar que sejam listados todos os programas acessando arquivos em um determinado diretório. Isto é feito fornecendo ao programa lsof a diretiva +D.

  sudo lsof +D /var/log
  COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
  smbd       730   root    2w   REG    8,1        0 1593591 /var/log/samba/log.smbd
  smbd       730   root   34w   REG    8,1        0 1593591 /var/log/samba/log.smbd
  rsyslogd   862 syslog    1w   REG    8,1    92150 1325148 /var/log/syslog
  rsyslogd   862 syslog    2w   REG    8,1    35863 1310944 /var/log/kern.log
  rsyslogd   862 syslog    4w   REG    8,1    15211 1321755 /var/log/auth.log
  smbd       923   root    2w   REG    8,1        0 1593591 /var/log/samba/log.smbd
  smbd       923   root   28w   REG    8,1        0 1593591 /var/log/samba/log.smbd
  Xorg      1412   root    0w   REG    8,1    31850 1310898 /var/log/Xorg.0.log
  Xorg      1412   root    2w   REG    8,1     2282 1574974 /var/log/mdm/:0.log
  console-k 1431   root    7w   REG    8,1    16790 1575022 /var/log/ConsoleKit/history
  nmbd      2708   root    2w   REG    8,1     1800 1593512 /var/log/samba/log.nmbd
  nmbd      2708   root   26w   REG    8,1     1800 1593512 /var/log/samba/log.nmbd
  cupsd     3003   root    4u   REG    8,1    92830 1593620 /var/log/cups/access_log
  cupsd     3003   root    5u   REG    8,1        0 1593547 /var/log/cups/error_log
  cupsd     3003   root    6u   REG    8,1        0 1575143 /var/log/cups/page_log

Para listar os arquivos abertos por um determinado usuário, basta emitir o comando:

  lsof +u queiroz

Ou então, para listar todos os comandos dos usuários, com exceção de um deles:

  lsof +u ^queiroz

Para listar todos os arquivos abertos por um determinado processo:

  lsof -p 730

Para matar todos os processos em uso por um determinado usuário:

  kill -9 `lsof -t -u queiroz`

A diretiva -t produz uma listagem simplificada, contendo apenas a identificação do processo.

  lsof -t -u queiroz | head
  1502
  1781
  1782
  1854
  1858

Da mesma forma, eu posso usar a diretiva "-t" para listar o PID (Process ID) dos processos acessando um determinado arquivo ou diretório.

  lsof -t /var/log/syslog
  862

ou

  lsof -t +D /var/log
  730
  862
  923
  1412
  1431
  2708
  3003

Fonte: 15 Linux lsof Command Examples (Identify Open Files)



Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script