例如。执行以下脚本时:
#!/bin/sh
g++ -o foo foo.cpp
sudo apt-get install ninja
有什么干净的方法可以列出以下过程记录?
sh
g++
cpp
cplusplus
gas
ld
sudo
perl
您可以使用strace
来查找脚本运行时执行的所有程序。像这样的东西:
strace -o executed.txt -e execve -f sh your-sctrip.sh
这是一个例子。首先我的bash脚本:
$ cat build.sh
#!/bin/sh
g++ main.cpp
ls
然后它的痕迹:
$ strace 2>&1 -e execve -f bash build.sh \
| sed -n -r "s/.* execve\(\"([^,\"]+)\".* = 0$/\1/p"
/usr/local/CC/gcc-4.3.3/bin/g++
/usr/local/CC/gcc-4.3.3/libexec/gcc/x86_64-unknown-linux-gnu/4.3.3/cc1plus
/usr/bin/as
/usr/local/CC/gcc-4.3.3/libexec/gcc/x86_64-unknown-linux-gnu/4.3.3/collect2
/usr/bin/ld
/bin/ls
或者,如果您只需要文件名,请添加xargs -n 1 basename
:
$ strace 2>&1 -e execve -f bash build.sh \
| sed -n -r "s/.* execve\(\"([^,\"]+)\".* = 0$/\1/p" \
| xargs -n 1 basename
g++
cc1plus
as
collect2
ld
ls
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句