原创,转载注明出处
一.shell脚本父子进程分析
代码:
#!/bin/bash
echo $$
ps -ef |grep `echo $$`
echo "-------------------------------------"
( pwd;echo $$;ps -ef |grep `echo $$`;)
echo "-------------------------------------"
{ pwd;echo $$;ps -ef |grep `echo $$`; }
运行结果1:
结果分析1:
1. 最后一行显示当前登录shell进程ID为9561;
2. 第三行显示登录shell派生出一个进程ID为10767的shell执行进程;该进程负责扫描shell脚本进行执行;
3. 10767脚本执行进程负责逐行执行脚本:遇到内置命令直接在当10767进程中执行,遇到可执行程序就fork 新的子进进程来执行。
4. 进程号为 10768和10769的进程都是执行shell 10767进程派生的子进程ps 和grep .
5. 10767脚本执行进程扫描到( com1;com2;) 语句群时,会再派生一个ID为10771子shell负责执行()