点击返回 自学Linux命令行与Shell脚本之路

5.1-shell父子关系

1 shell常见的种类 

  • bash是Linux标准默认的Shell,是BunrneAgain Shell的缩写,内部命令一共有40个。
  • sh 是Bourne Shell的缩写,sh是Unix标准默认的Shell。
  • ash 是Linux中占用系统资源最少的一个Shell,只包含24个内部命令。
  • ksh是Kom Shell的缩写,共有42条内部命令。
  • csh是Linux比较大的内核,共有52个内部命令。

shell启用什么样的shell程序取决于个人的用户IP配置。 可以通过/etc/passwd查看本机所采用的shell程序。

2 shell 父子关系理论

用于登陆某个虚拟控制器终端或在GUI中运行终端仿真器时候所启动的默认的交互shell就是父shell
在CLI提示符后输入/bin/bash命令后或其他等效的bash命令时,会创建一个新的shell,就是子shell

如上,第一次使用ps -f 时出现两个进程,第一个进程的进程ID是34285,运行的是bash shell程序;第二个进程的进程ID是34295,对应的命令ps -f
输入bash之后,一个子shell出现了,此时ps -f是在子shell中执行的。
          第一个进程的进程ID是34285,是父shell程序;第二个进程的进程ID是34295,是子shell程序;第三个进程的进程ID是39020,对应的命令ps -f
  (其中注意子shell的父进程ID/PPID是34298,是父shell进程的PID)(在生成子shell进程的时候,只有部分的父进程环境被复制到子shell环境中)

子shell可以从父shell中创建,也可以从子shell中创建

2.1 进程列表

通过加入;可以执行一系列命令
 在整个命令行加上()使命令列表变成了进程列表,生成了一个子shell来执行对应的命令

如何验证是否生成了子shell,就需要使用环境变量的命令

 echo $BASH_SUBSHELL    如果该命令返回时0表示没有子shell,俄国该命令返回1或者更大数字,表示存在子shell

2.2 子shell用法,使用后台模式

后台模式: 在后台模式下运行命令可以在处理命令的同时让出CLI,以供他用。
 一般演示使用sleep命令
sleep 10 表示希望进程等待10秒, 使用后回话将暂停10s后返回shell CLI提示符

如果要想将命令在后台模式下执行,只需在命令末尾加上&符号。

jobs命令可以显示出当前运行在后台模式所有用户的进程

将进程列表置入后台 ,, 既可以再子shell中进行繁重的处理工作,同事也不会让子shell的I/O收到影响

执行(sleep 2;echo $BASH_SUBSHELL;sleep 2) 会产生1个作业号和进程ID, 然后回到提示符,且多了一个数字" 1 "
       回车,得到另一个提示符

2.3 协程

 在后台生成一个子shell,并在这个子shell中执行命令。

自学Linux Shell5.1-shell父子关系的更多相关文章

  1. Linux编程 9 (shell类型,shell父子关系,子shell用法)

    一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

  2. 理解的shell父子关系

    今天我们谈谈linux系统的shell的父子关系,因为大家对手机都比较熟悉,手机本身也是一个linux主机,所以我们今天就拿手机来举个例子. 首先就是创建一个新的shell,你可以把它理解成一个手机打 ...

  3. 自学Linux Shell5.2-shell内建命令history alias

    点击返回 自学Linux命令行与Shell脚本之路 5.2-shell内建命令history alias 外部命令:有时称为文件系统命令,是存在于bash shell之外的程序,通常位于/bin./u ...

  4. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  5. 自学Linux Shell2.1-进入shell命令行

    点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 进入文本命令行界面(CLI)两种方法: 控制台终端 图形化终端 1. 通过Linux控制台终端访问CLI 按下Ctrl ...

  6. 自学Linux Shell11.6-退出shell

    点击返回 自学Linux命令行与Shell脚本之路 11.6-退出shell shell运行的每一个命令都是使用 退出状态码 告诉shell它已经运行完毕.退出状态码是一个0~255的整数值,在命令结 ...

  7. linux 2.6.32文件系统的dentry父子关系

    我们知道,linux文件系统,inode和dentry是有对应关系的,dentry是文件名或者目录的一个管理结构,2.6内核中: struct dentry { atomic_t d_count; u ...

  8. 自学linux——11.shell入门

    shell 基础 1.shell介绍(内置脚本) 程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理) 语法简单,代码写起来比较轻松,简单易学 (1)什么是shell shell ...

  9. 自学Linux Shell1.3-Linux文件系统

    点击返回 自学Linux命令行与Shell脚本之路 1.3-Linux文件系统 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多种目前流行的文件系统,如EXT2. EXT3. F ...

随机推荐

  1. 一个可爱 & 小清新的加载等待Android控件

    https://github.com/Carson-Ho/Kawaii_LoadingView

  2. China Intelligent Office Summit(2018.11.21)

    时间:2018.11.21地点:中关村软件园国际会议中心

  3. 在WPF中使用Caliburn.Micro搭建MEF插件化开发框架

    原文:在WPF中使用Caliburn.Micro搭建MEF插件化开发框架 版权声明:原创内容转载必须注明出处,否则追究相关责任. https://blog.csdn.net/qq_36663276/a ...

  4. SDP服务搜索流程源码分析

    BREDR的设备 在进行配对完成之后,进行;连接之前都要进行服务的搜索,服务搜索走的流程是SDP,这篇文章就分析一下,bluedroid中SDP的代码流程,我们从配对完成的回调函数开始分析: /*** ...

  5. linux RPM manager

    RPM manage:rpm2cpio package_name | cpio -id #将一个rpm包解压至当前目录rpm -qi package_name #查看一个已安装的rpm包信息rpm - ...

  6. phpstorm 报错及解决

    1. 当项目里有大量 js 文件时,一旦编辑包含 js 的文件,phpstorm 会卡顿,甚至未响应 问题原因: 内存限制较小 解决方法一: 直接将弹出框中的红色部分修改为需要的内存限制,并选择 Sh ...

  7. libc.so.6: version 'GLIBC_2.14' not found报错提示的解决方案

    线上一台服务器在执行leveldb程序的时候,报错:"libc.so.6: version `GLIBC_2.14' not found". 排查原因及解决方法如下: 1)产生原因 ...

  8. Ceph分布式存储集群-硬件选择

    在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分 ...

  9. Centos7下部署两套python版本并存环境的操作记录

    需求说明:centos7.2系统的开发机器上已经自带了python2.7版本,但是开发的项目中用的是python3.5版本,为了保证Centos系统的正常运行,以及节省机器资源(不想因此再申请另外一台 ...

  10. C-代码笔记-输入输出

    .ACSII 字符实质和整数存储方式相同 //2018年9月16日01:35:54 # include <stdio.h> int main(void) { '; // printf(&q ...