comando é desligado muito rapidamente para mim lsof-lo [duplicado]

0

Pode ser idiota, mas estou executando um comando que é concluído muito rápido, então não tenho tempo suficiente para extraí-lo de outra janela e ver quais arquivos estão abertos. Existe alguma maneira óbvia de executar um comando e anexar imediatamente o lsof a ele? (e de preferência continuar rastreando quais arquivos estão abrindo até que sejam concluídos)

edit - Eu também posso ser feliz com a anexação lsof ao processo depois que ele é desligado, eu não tenho que ver os arquivos que ele está abrindo em tempo real

    
por ihadanny 08.10.2018 / 11:16

4 respostas

2

Nesses casos, lsof pode não ser a ferramenta mais prática. Eu usaria strace neste caso. Por exemplo. para ver quais arquivos o comando ls abre durante seu curto tempo de execução:

strace -e trace=open ls
    
por 08.10.2018 / 13:15
0

Você pode usar o comando watch em uma janela, por exemplo:

watch -d 'lsof| 'fgrep cron''

O comando atualiza a janela a cada dois segundos; você pode diminuir o tempo com a opção -n ver em mais detalhes em man watch .

O | fgrep cron pipe ajuda você a ver apenas o resultado que está procurando.

E quando você usa o comando na outra janela, você verá os arquivos e o usuário associados com o comando cron neste caso. Altere o comando cron pelo seu comando ou programa específico.

    
por 08.10.2018 / 11:43
0

Você pode considerar o uso de 'strace': ele mostrará as chamadas do sistema desde o início da execução, incluindo as aberturas de arquivos.

    
por 08.10.2018 / 13:14
0

Você pode monitorar todos os arquivos abertos em tempo real com o comando:

sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

Para um nome de processo / comando em particular (não um script), você pode fazer: (por exemplo, exemplo como apache2)

sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and proc.name=apache2
    
por 08.10.2018 / 14:12

Tags