原创,转载注明出处
一.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负责执行()

本文详细分析了Linux Shell脚本的执行过程,包括父子进程的关系、内部命令与外部命令的区别、管道与脚本执行的关系,以及如何查看命令是否为内建命令。通过实例展示了在不同情况下,shell如何派生子进程执行脚本和命令,以及执行环境的影响。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



