• 自学Linux Shell5.1-shell父子关系


    点击返回 自学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网卡设置
    Linux虚拟机-----概述(1)
    Redis缓存数据库-----概述(1)
    Spring和Mybatis的集成
    onehot编码解释
    LINUX-CUDA版本所对应的NVIDIA驱动版本号,cuda版本报错的朋友参考一下
    matplotlib画图
    pytorch实现花朵数据集读取
    轻量架构ShuffleNet V2:从理论复杂度到实用设计准则
    CBAM: 卷积块注意模块
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9182437.html
Copyright © 2020-2023  润新知