linux - 如何获取shell脚本的所有进程名称?

标签 linux bash shell

$cat t.sh  
grep "12" test | wc -c  

我想知道它运行时会创建多少个进程。 我用过

./t.sh;ps -aux | grep "t.sh"    

但它没有工作,因为在 ps 工作时“./t.sh”已经跑完了。

我怎样才能达到这个目标?

最佳答案

取决于您运行的系统。如果您有 strace,您可以跟踪所有 fork 系统调用。问题是虽然有些系统使用 fork,有些系统使用 vfork 和一些 clone,但您必须进行试验。在 Linux 上:

strace -c -f -evfork ./t.sh

应该给你一个总结。 -c 给出计数,-f 表示“跟随”子进程,-evfork 表示跟踪 vfork内核调用。输出转到 stderr,但您可以使用 -o 选项将其重定向到一个文件(如果您在此处指定一个命名管道,您可以使用一些巧妙的技巧)。

关于linux - 如何获取shell脚本的所有进程名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11190211/

相关文章:

linux - Bash 脚本添加参数中收到的数字

linux - 从 Matlab 启动应用程序

bash - Makefile 不提示编译器使用优化标志

string - 删除两个字符串之间的未知字符串

c++ - IShellDisptach:为什么 FolderItemVerbs::Release() + CoUninitialize() 会崩溃?

c++ - system() 返回错误语法错误 : "(" unexpected

c# - mkbundled 应用程序的单一服务

C++ 程序以代码 01 退出,未执行任何代码

bash - 以特定格式格式化日志

c - 使用 sigaction 实现 ctr-c