Linux shell编程 13 ---- 子Shell与进程处理


    Linux是一种用户控制的多作业操作系统,系统允许多个系统用户同时提交作业,而一个系统用户又可能用多个Shell登录,每个系统用户可以用一个Shell提交多个作业

 

 1 子Shell

    1 父子Shell是相对的,它描述了两个Shell进程的fork关系,父Shell指在控制终端或窗口给出提示符的进程,子Shell是由父Shell创建的进程,在Linux中,只有一个函数可以创建子进程,那就是fork函数

    

    2 圆括号结构能够强制将其中的命令运行在子Shell中,它的基本格式为

       (command1 command2 command....n)

       上述结构表示圆括号内的n条命令在子Shell中运行

  

    3 子Shell能够从父Shell继承得来的属性如下

       1 当前工作目录

       2 环境变量

       3 标准输入,标准输出和标准错误输出

       4 忽略的信号

       5 除了环境变量和.bashrc文件中定义变量之外的Shell变量

       6 未被忽略的信号处理


 2 进程处理

    1 进程和作业是有区别的,一个正在执行的进程称为作业,一个作业可以包含多个进程。用户提交作业到操作系统,作业的完成可能依赖于启动多个进程。因此简单的说,作业是用户层面的概念,而进程是操作系统层面的概念

    

    2 进程是针对整个Linux系统而言的,作业是针对Shell而言的。作业有两种运行方式,前台运行和后台运行

    

    3 前台运行的作业指能够控制当前终端或窗口,且能接收用户的输入;而后台的运行的作业则不在当前激活的终端或窗口中运行,是在用户看不见的情况下运行的

 

    4 Shell中内置命令fg能够把后台的作业放到前台运行,如果没有带参数的fg命令就是将最近提交的那个后台作业放置到前台运行


    5 指定作业的方法及其意义

          参数                 意义

           %n            n为后台作业的作业号

           %string     命令以string字符串开始的后台作业

           %?string   命令包含string字符串的后台作业

           %+或%%  最近提交的后台作业

           %-             最近第二个提交的后台作业


    6 Shell内置的命令jobs是用于显示所有后台运行的作业

    

 3 信号
    1 向进程发送信号大多通过"Crtl"键加上一些功能键来实现的

    

    2 Ctrl组合键,信号类型及其意义

        组合键               信号类型                                                意义

        Ctrl+C        INT信号,即interupt信号                   停止当前运行的作业

        Ctrl+Z        TSTP信号,即terminal stop信号        使当前运行的作业暂时停止(转入阻塞态)

        Ctrl+\         QUIT信号                                           Ctrl+C的强化版本,当Ctrl+C无法停止作业时,使用此组合键

        Ctrl+Y        TSTP信号,即terminal stop信号       当进程从终端读取输入数据时,暂时停止该进程



上一篇:【web开发】☆★之利用POI操作Excel表格系列教程【5】设置不同格式单元格


下一篇:java8的ParallelStream踩坑记录