gpt4 book ai didi

linux - 我如何列出在 shell 脚本(或类似的东西)运行期间执行的所有进程

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:45 24 4
gpt4 key购买 nike

例如。当执行以下脚本时:

#!/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:

$ 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

关于linux - 我如何列出在 shell 脚本(或类似的东西)运行期间执行的所有进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com