详解:为什么需要父子shell
父子Shell
1.source和点,执行脚本,只在当前的shell环境中执行生效
2.指定bash、sh解释器运行脚本,是开启subshell,开启子shell运行脚本命令
3.`./script`,都会指定shebang,通过解释器运行,也是开启subshell运行命令
1.父shell的概念:
1.pstree看到如下结果,就是父shell环境
sshd───sshd───bash───su───bash───pstree
2.ps进程管理命令,查看
ps -ef
-f 显示UID,PID,PPID
-e 列出所有进程的信息,如果-A选项option
通过一条命令,检查父子shell的关系
ps -ef --forest
2.子shell的概念:
2.1 多个子shell:
为什么学习子shell?如下
2.2 创建进程列表(创建子shell)
场景:需要执行一系列的shell命令
例如执行该命令:ls;cd ;pwd;echo "奥利给"
列表,肯定是被包括起来的数据
shell的进程列表概念,需要使用()小括号,如下执行方式,就称之为,进程列表,加上小括号,就是开启子shell运行命令,案例如下
(cd ~;pwd;ls ;cd /tmp/;pwd;ls)
2.3 检测是否在子shell环境中
Linux默认的有关shell的变量
特点:该变量的值特点,如果是0,就是父shell环境,否则是子shell
echo $BASH_SUBSHELL
检测是否开启了子shell运行命令:
cd ~;pwd;ls ;cd /tmp/;pwd;ls;echo $BASH_SUBSHELL
明确开启子shell运行的命令,进程列表,并且开启子shell运行
(cd ~;pwd;ls ;cd /tmp/;pwd;ls;echo $BASH_SUBSHELL)
结论:
利用括号, 开启子shell的理念,以及检查,在shell脚本开发中,经常会用子shell进行多进程的处理,提高程序并发执行效率。