理解的shell父子关系

        今天我们谈谈linux系统的shell的父子关系,因为大家对手机都比较熟悉,手机本身也是一个linux主机,所以我们今天就拿手机来举个例子。

        首先就是创建一个新的shell,你可以把它理解成一个手机打开了一个软件,但是在linux打开一个“软件”没有那么容易,这就需要用到两种方法。

        方法一:在CLI提示符用/bin/bash或bash创建一个shell。

 

图1-1

可以看到第一个bash的进程号为2022927;第二个bash的进程号为为2023167;这样说也不是特别明显,我们用ps -forest命令看看

 

图1-2

从图1-2中可以直观的看到第二个bash是第一个bash的一个子进程;可以与图1-1的进程做一下对比

       方法二:在CLI提示符后用(命令;命令;命令;)创建一个shell。

 

图1-3

从图1-3我们可以看到返回了一个1,则证明我们的子shell是成功的。推出shell也是非常容易的输入命令exit就可以了。

       当Linux运行着一个shell是你也可以说:“运行着一个进程”,所以”进程“=”shell“。

      shell的用法

      一:后台

 

图1-4

图1-4我们在子shell下运行了一个sleep并将其放入了后台,他得进程号为2026627我们现在退出此进程如图1-5。

 

图1-5

      二:协程 

     由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。我可以将子例程理解为一个函数。

例如图1-6,用coproc创建了一个协程zz,jobs可以查看后台作业。