Listar todos os arquivos '.log' abertos no * nix

3

Há momentos como administrador do sistema, você pode não ter certeza dos caminhos do arquivo de log de um novo aplicativo. Dependendo do sistema, pode haver várias maneiras de encontrar o mesmo. Por favor, compartilhe as diferentes formas de obter uma lista de arquivos de log abertos em um sistema.

    
por Kent Pawar 11.10.2013 / 15:32

4 respostas

3

Arquivos do usuário X

Se você precisar ver apenas arquivos abertos de um único usuário:

$ lsof -u<user>

Ou apenas arquivos com um descritor de arquivo de texto (geralmente arquivos reais):

$ lsof -a -u<user> -d txt

Exemplo

Todos os arquivos em uso pelo usuário saml .

$ lsof -usaml
COMMAND     PID USER   FD   TYPE             DEVICE  SIZE/OFF       NODE NAME
vim        1341 saml  cwd    DIR              253,2      4096   10370078 /home/saml/mp3s
vim        1341 saml  rtd    DIR              253,0      4096          2 /
vim        1341 saml  txt    REG              253,0   2105272    1215334 /usr/bin/vim
vim        1341 saml  mem    REG              253,0    237616     393586 /lib64/libgssapi_krb5.so.2.2

Somente arquivos usando um descritor de texto e são de propriedade do usuário saml .

$ lsof -a -usaml -d txt
      Output information may be incomplete.
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF     NODE NAME
vim        1341 saml txt    REG  253,0  2105272  1215334 /usr/bin/vim
bash       1468 saml txt    REG  253,0   940312  2490450 /bin/bash
gvfsd-htt  1777 saml txt    REG  253,0   179528  1209465 /usr/libexec/gvfsd-http
gnome-key  2051 saml txt    REG  253,0   953664  1214068 /usr/bin/gnome-keyring-daemon
...

lsof como root

Normalmente, você desejará executar lsof com privilégios elevados, para que possa ver todos os arquivos em um sistema pertencente a um processo ou raiz do Apache, por exemplo.

$ sudo lsof  

Você também pode usar lsof para trás e descobrir qual processo abriu um determinado arquivo.

$ sudo lsof /var/log/messages
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
rsyslogd 1266 root    4w   REG  253,0   372306 1973825 /var/log/messages

lsof como topo

Você também pode usar lsof da mesma forma que top , onde ele pesquisará cada segundo e mostrará o que está acontecendo em seu sistema.

$ sudo lsof -u saml -c sleep -a -r5

Exemplo

O argumento -c ... mostra apenas processos com a string ... em seu nome. Aqui estou usando o comando sleep para mostrar isso. Eu corro o comando lsof , que pesquisa a cada 5 segundos, e mostra todos os arquivos abertos por qualquer processo com a cadeia de suspensão neles. Em seguida, executei sleep 5 em outro terminal.

$ sudo lsof -u saml -c sleep -a -r5
      Output information may be incomplete.
=======
=======
=======
=======
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
sleep   10780 saml  cwd    DIR  253,2    32768 10354689 /home/saml
sleep   10780 saml  rtd    DIR  253,0     4096        2 /
sleep   10780 saml  txt    REG  253,0    27912  2490470 /bin/sleep
sleep   10780 saml  mem    REG  253,0   151456   393578 /lib64/ld-2.13.so
sleep   10780 saml  mem    REG  253,0  1956608   393664 /lib64/libc-2.13.so
sleep   10780 saml  mem    REG  253,0 99158752  1209621 /usr/lib/locale/locale-archive
sleep   10780 saml    0u   CHR 136,59      0t0       62 /dev/pts/59
sleep   10780 saml    1u   CHR 136,59      0t0       62 /dev/pts/59
sleep   10780 saml    2u   CHR 136,59      0t0       62 /dev/pts/59
=======
=======
=======
=======

arquivos de log

Você pode usar lsof para encontrar arquivos de log simplesmente digitando qualquer uma das saídas acima para os nomes dos arquivos de log que você está interessado em ver o que está acontecendo.

$ lsof .... | grep "log file name"
    
por 11.10.2013 / 16:02
1

Eu uso o abaixo para obter uma lista de todos os arquivos .log abertos:

lsof | grep "\.log$" | awk '{print $NF}' | sort -u

Para obter uma lista de .log arquivos para um processo que uso:

pfiles <PID> | grep "\.log$" | sort -u

Além disso, por favor, deixe-me saber se existe uma maneira mais eficiente de fazer isso ..

    
por 11.10.2013 / 15:35
0

No Solaris 10 e Solaris 11

Use o comando pfiles para ver os arquivos que um processo abriu, incluindo arquivos de log. Grep na saída e você será capaz de ver se o processo (no momento da sua foto) tem um arquivo de log aberto.

Quanto às outras respostas nesta página:

No Solaris, não há pstree ou lsof pronto para uso.

  • pstree . Esta ferramenta é encontrada na maioria dos Linux'es. Na verdade, é muito semelhante ao comando Solaris ptree , na verdade, li em algum lugar que pstree foi inspirado no Solaris ptree . Tenho certeza que você pode fazer pstree funcionar no Solaris, mas não tenho certeza se entenderia o ponto em que você tem o comando ptree

  • lsof . Esta ferramenta não está disponível nativamente no Solaris. É verdade que você pode encontrá-lo, mas da última vez que eu olhei ele usou um hack não documentado para fazer seus truques no Solaris. Também só funcionou em zonas globais da última vez que olhei. O equivalente mais próximo do Solaris seria pfiles .

por 18.10.2013 / 13:51
-1

Você pode usar locate . Por exemplo:

locate .log
    
por 11.08.2015 / 12:19