父子shell实例

父子shell
  1. source 和点执行脚本,只在当前shell环境中执行生效
  2. 指定解释器sh 或bash等,执行脚本,是开启子shell运行脚本命令
  3. 用绝对路径或相对路径,也都会指定shebang,通过解释器运行,也是开启子shell运行命令
父shell概念

pstree看到如下情况,就是父shell环境

   │     └─3*[{gdm}]
        ├─geoclue───2*[{geoclue}]
        ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        ├─gnome-terminal-─┬─bash───pstree   ####

ps进程命令查看

ps -ef 
    -f 显示UID,PID,PPID
    -e 列出所有进程的信息,如同-A选项
ps -ef --forest
root      2886     1  0 14:59 ?        00:00:03 /usr/libexec/gnome-terminal-server
root      2894  2886  0 14:59 ?        00:00:00  \_ gnome-pty-helper
root      2895  2886  0 14:59 pts/0    00:00:00  \_ bash
root      3291  2895  0 15:20 pts/0    00:00:00      \_ bash
root      3338  3291  0 15:21 pts/0    00:00:00          \_ ps -ef --forest

父子shell

父shell发出命令:bash ----->bash的子shell发出命令:bash----->bash的孙shell发出命令:bash-->bash的曾孙shell发出命令: ps --forest

只要输入exit;就能退出子shell环境

创建进程列表(创建子shell执行命令)

假如需要执行一系列shell命令

ls;cd ;pwd;echo "奥里给"

列表,肯定是被包括起来的数据

shell进程列表理念,需要使用()小括号,如下执行方式,就称之为,进程列表

加上小括号,就是开启子shell命令

[root@localhost tmp]# (ls;pwd;cd; echo hello)
!  demo1.sh  myshell.sh  MyVar.sh  nohup.out  sub_str
/root/tmp
hello
[root@localhost tmp]# ps -ef --forest

检测是否在子shell环境中
#linux默认有关shell的变量
#该变量的值的命令结果是0就是当前shell
BASH_SUBSHELL
[root@localhost tmp]# 
[root@localhost tmp]# ls ;pwd;cd;echo $BASH_SUBSHELL
!  demo1.sh  myshell.sh  MyVar.sh  nohup.out  sub_str
/root/tmp
0
[root@localhost ~]# (ls ;pwd;cd;echo $BASH_SUBSHELL)
anaconda-ks.cfg  install.log  testyy.sh  tmp  公共  模板  视频  图片  文档  下载  音乐  桌面
/root
1
[root@localhost ~]# 

为什么要开启子shell,如果要执行一个ping命令,如果直接当前环境使用就会一致执行,无法进行其他操作。

子shell嵌套运行

一个小括号,开启一个子shell运行命令,还可以嵌套多个

[root@localhost ~]# (pwd;(pwd;(echo $BASH_SUBSHELL)))
/root
/root
3
[root@localhost ~]# 

利用括号,开启子shell的理念,以及检查,在shell脚本开发中,经常会用子shell进行多进程的处理,提高程序并发执行效率。

还剩下的问题

程序并发执行,

父子shell和后台运行的关系

posted @   翻滚的小井蛙  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示