Как получить трассировку / журнал дерева процессов в linux? - PullRequest
1 голос
/ 15 октября 2010

Я хочу знать, какие исполняемые файлы запускает скрипт и в каком порядке (и отслеживать эти исполняемые файлы рекурсивно).

Например, допустим, у меня есть скрипт bash (называемый abc.sh):

#!/bin/bash
ls
gcc

Я бы хотел запустить этот сценарий с помощью команды «trace / log» и получить что-то вроде этого:

abc.sh -- ls
      |-- gcc -- cpp
              -- cc1
              ... etc.

Это показывает, что abc.sh называется ls и gcc.gcc, в свою очередь, называется cpp и cc1.

Возможно ли это?Как мне это сделать?Представление в виде дерева, подобное приведенному выше, было бы неплохо, но также могло бы работать и более простое представление.

Обратите внимание, что мне не нужен текущий снимок дерева процессов.Скорее, я хочу, чтобы след или журнал процессов нереста.Сроки аннотации также будут полезны.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 октября 2010

Вы можете попытаться проанализировать вывод команды strace.В частности, вас заинтересует что-то вроде

strace -f -tt -e trace=execve ./abc.sh
0 голосов
/ 15 октября 2010

Вы можете использовать команду pstree.Он был задуман, чтобы показать именно то, что вы ищете: дерево процессов (отсюда и название, pstree).Он не даст вам трассировки процесса, но вы можете вызвать его несколько раз, чтобы получить что-то похожее на то, что вы ищете.

...