开发者

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

开发者 https://www.devze.com 2023-01-19 21:46 出处:网络
I want to know what executables a script launches an开发者_运维问答d in what order (and trace those executables recursively).

I want to know what executables a script launches an开发者_运维问答d 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!


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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消