Eu estarei recebendo alguns scripts de shell que eu meio que não sei o que eles farão. Mas eu preciso saber quais operações de E / S o script executa (por exemplo, arquivos que eles lêem / acessam, arquivos que eles escrevem, pastas criadas ... etc).
Um exemplo é usar strace da seguinte forma:
Script INPUT: g++ -Wall a.cpp -o hello
Vou executá-lo como: sudo strace -f -e trace=open g++ -Wall a.cpp -o hello 2> output.txt
* O QUE EU QUERO: * output.txt terá o rastreio e quais arquivos foram acessados (a.cpp e bh que são usados em a.cpp e output hello)
...
[pid 13871] open("a.cpp", O_RDONLY|O_NOCTTY|O_LARGEFILE) = 3
[pid 13871] open("b.h", O_RDONLY|O_NOCTTY|O_LARGEFILE) = 4
...
[pid 13874] open("hello", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
...
Problema
1- strace
não manipula pipe , portanto, se eu obtiver um comando como mkdir d2 | cp *.c d2/
, ele detectará apenas o primeiro comando mkdir d2
.
2- strace
fornece informações demais, o que é bom, mas se algo for mais concreto, seria ótimo!
Eu procurei por outras ferramentas e utils, e a maioria deles listaria informações para um processo em execução e eu não quero isso porque o script será executado imediatamente e nada estaria na lista de processos no Ubuntu.
Alguma idéia de como eu posso conseguir isso no Ubuntu?