madiyaan damha
madiyaan damha

Reputation: 3077

How to get a process tree trace/log of a process in linux?

I want to know what executables a script launches and in what order (and trace those executables recursively).

For example, let's say I have a bash script here (called abc.sh):

#!/bin/bash
ls
gcc

I'd like to run this script with a "trace/log command" and get something like this:

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

This show that abc.sh called ls, and gcc. gcc, in turn, called cpp and cc1.

Is this possible? How can I do it? A tree view like the above would be nice, but a simpler view would work as well.

Note that I do not want the current snapshot of the process tree. Rather, I want a trace or a log of the spawning processes. Timing annotation would also be useful.

Thanks!

Upvotes: 5

Views: 4775

Answers (2)

Roman Cheplyaka
Roman Cheplyaka

Reputation: 38718

You may try to analyse the output of strace command. Particularly, you'll be interested in something like

strace -f -tt -e trace=execve ./abc.sh

Upvotes: 4

Pablo Santa Cruz
Pablo Santa Cruz

Reputation: 181280

You can use pstree command. It was conceived to show exactly what you are looking for: process tree (hence the name, pstree). It won't give you process tracing, but you could call it multiple times to get something similar to what you're looking fOr.

Upvotes: 0

Related Questions