$cat t.sh
grep "12" test | wc -c
我想知道运行时会创建多少个进程。 我用了
./t.sh;ps -aux | grep "t.sh"
但它没有用,因为“./t.sh”在ps工作时已经运行了。
我如何实现这一目标?
答案 0 :(得分:1)
取决于您正在运行的系统。如果您有strace
,则可以跟踪所有fork
系统调用。问题是虽然有些系统使用fork
,有些vfork
和有些clone
,但您必须进行实验。在linux上:
strace -c -f -evfork ./t.sh
应该给你一个总结。 -c
给出一个计数,-f
表示“跟随”子进程,-evfork
表示跟踪vfork
内核调用。输出转到stderr,但您可以使用-o
选项将其重定向到文件(如果您在此处指定命名管道,则可以执行一些巧妙的技巧)。
答案 1 :(得分:1)
你的错误是分号。它告诉shell等到t.sh完成后再运行grep。使用&符号来告诉shell在后台运行t.sh.除了grep之外,你最好还是使用pstree来查看t.sh脚本生成的进程列表,如下所示:
$ ./t.sh & pstree $(pgrep t.sh)
答案 2 :(得分:0)
./t.sh;ps -aux | grep -E "t.sh"
-E完全匹配你需要的东西,没有别的,我现在不在linux上,所以我不能确定,但这与该选项有关