Доступ к файлам / изменение в процессе / скрипте

Я получу несколько сценариев оболочки, которые я вроде не знаю, что они будут делать. Но мне нужно знать, какие операции ввода / вывода выполняет скрипт (например, файлы, которые они читают / получают к ним доступ, файлы, которые они пишут, папки создаются ... и т. Д.).

В качестве примера можно использовать strace следующим образом:

Сценарий INPUT: g++ -Wall a.cpp -o hello

Я буду запускать его так: sudo strace -f -e trace=open g++ -Wall a.cpp -o hello 2> output.txt

* ЧТО Я ХОЧУ: * output.txt будет иметь трассировку и файлы, к которым был получен доступ (a.cpp и bh, которые используются в a.cpp и выводим привет)

... 
[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
...

Задача

1- strace не обрабатывает трубу , поэтому, если я получу команду, подобную mkdir d2 | cp *.c d2/ он обнаружит только первую команду mkdir d2.

2- strace предоставляют слишком много информации, что хорошо, но если что-то более конкретное, это было бы здорово!

Я искал другие инструменты и утилиты, и большинство из них перечисляло бы информацию для запущен процесс , а я не хочу этого , так как скрипт будет выполнен немедленно и ничего не будет в списке процессов в Ubuntu.

Есть какие-нибудь идеи, как мне добиться этого в Ubuntu?

1
задан 20 December 2013 в 22:12

1 ответ

Относительно проблемы 1,

причина в том, что strace не запускает процесс с оболочкой, из соображений безопасности.

Чтобы это исправить, вам нужно обернуть трубу в bash -c ' ... ', заменив bash вашей оболочкой:

sudo strace -f -e trace=open bash -c 'mkdir d2 | cp *.c d2/' hello 2> output.txt
0
ответ дан 20 December 2013 в 22:12

Другие вопросы по тегам:

Похожие вопросы: