bash 作业控制

作业控制是指以选择性地停止(暂停)的进程的执行和继续的能力(恢复)在稍后的点其执行。用户通常通过由操作系统内核的终端驱动和bash共同提供一个交互式接口使用这个设施。

shell与相关联的每个管道的工作。它保持当前正在执行的任务,这可与作业命令中列出的表。当bash异步启动工作(在后台),它打印一条线,看起来像:
[1] 25647
表明这个工作是作业号1,而且在与该作业相关联的管道的最后一个进程的进程ID是25647.全部在单一管道中的过程是相同的作业的成员。 Bash使用作业抽象,作业控制的基础。

为了方便用户界面的作业控制的执行,操作系统维护当前终端进程组ID的概念。这个过程组的成员(其进程组ID等于当前终端进程组ID)收到键盘产生的信号,例如SIGINT。这些方法被认为是在前台。后台进程是那些进程组ID与终端的不同;这样的过程是免疫的键盘产生的信号。仅前台进程被允许从读或,如果用户如此用的stty指定TOSTOP,写入到终端。它尝试从读(写的时候stty的TOSTOP生效)终端被ker的NEL的终端驱动,其中,除非抓到,暂停进程发送一个SIGTTIN(SIGTTOU)信号后台进程。

如果其中的bash运行的操作系统支持作业控制,bash会包含设施使用它。键入挂起字符(通常是^ Z,按Ctrl-Z),而一个进程正在运行导致该进程被停止,并控制返回抨击。键入延迟挂起字符(通常是^ Y,控制-Y)导致当它试图从终端读取输入要停止的过程,要返回控制打坏。然后,用户可以操纵这个作业的状态,使用bg命令,继续它在后台运行,fg命令继续它在前台,或kill命令来杀死它。一个^ Z立即生效,并且具有使待处理的输入和预输入要被丢弃的附加副作用。有多种方式来指代一个作业在shell。字符%引入工作规范(作业规范)。

例如,%CE指的是停止CE作业。如果前缀多个作业相匹配,bash报错。使用%?CE,另一方面,是指包含字符串是在其命令行任何作业。如果子多个作业相匹配,bash报错。符号%%和%+指的是当前工作的shell的概念,这是最后一个作业停止,而这是在前台或后台启动。在以前的工作可以用%来引用 - 。如果只有一个单一的作业,%+和% - 都可以用来指该作业。

在有关的工作(例如,作业命令的输出)输出,当前作业总是与+标记,并且以前的工作与 - 。单个%(没有附带工作规范),也指当前作业。

简单地命名工作可以用来把它放到前台:%1是代名词fg %1,从后台到前台的工作带来1。同样,%1&''恢复作业1的背景下,相当于BG%1’。

shell学会立即每当作业改变状态。通常情况下,bash的等待,直到它是关于报告在一个作业站土族的变化,从而不会中断任何其它输出之前打印一个提示。如果-b被设置内建命令使能,bash立即报告这些变化。对SIGCHLD任何陷阱为每个子进程退出执行。

如果在作业停止(或者,如果checkjobs外壳选项已经使用内建命令shopt,运行启用),外壳印一条警告消息,并且,如果checkjobs选项启用由退出bash的一种尝试,列出工作和他们的状态。jobs命令可被用来检查自己的状态。如果退出第二次尝试时中间没有作出命令,shell不会打印其他警告,作业将终止任何停止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值