É possível corrigir completamente um script desde o momento da criação? Como?

0

Vamos supor que eu queira ligar strace a um programa para capturar quais arquivos ele grava. Eu preciso de um PID existente para isso. Se eu ligar strace, nesse ponto o script já pode ter arquivos escritos, o que eu vou perder. Condição de corrida clássica. O que eu faço agora é tentar fazer outro programa que execute o script original que não faz nada além de sleep 1 antes do comando ser executado, para que eu obtenha o strace completo. Isso parece uma coisa ruim para fazer. E os problemas de desempenho aparecem quando se executam muitos scripts. Mas eu não posso ligar strace sem um PID existente. Ou?

    
por Rápli András 18.01.2017 / 18:42

1 resposta

2

Substitua o script por um wrapper que execute strace , que, por sua vez, inicia o script original. Isso pode envolver

mv yourscript /somewhere/else/yourscript

e, em seguida, yourscript se torna

#!/bin/sh
OUTPUT_TO='mktemp /tmp/yourscript.$$.XXXXXXXXXX' || exit 1
exec strace -o $OUTPUT_TO ... /somewhere/else/yourscript "$@"

onde ... é qualquer outro argumento strace que você precisa.

Como alternativa, considere sysdig , pois ele pode rastrear por nome de arquivo ou nome de usuário sem a necessidade de um ID de processo ou script de wrapper:

sysdig -p '%fd.name' proc.name contains yourscript
    
por 18.01.2017 / 19:12

Tags