作业控制 :
官方 : 作业控制是一个命令行功能,允许一个shell 实例来运行和管理多个命令。
作用 : 使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行
期间返回接受其他命令。
前台进程 :
foreground :前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产
生的输入和信号,并允许从终端读取或写入到终端。
background :后台进程没有控制终端,它不需要与终端交互。
示例 :
前台进程 :
后台进程 :
===>>>
可以发现前台进程没法继续在命令行 执行命令 ,后台进程是可以继续执行命令的~!
查看后台进程 : Jobs
命令 Jobs :
✋ jobs 命令,就是用来查看当前终端放在后台的进程
✋ [ 1 ] [ 2 ] : 表示 作业 1,作业 2。 即 在后台有两个作业 。
✋ + : 表示最近被放到后台中的工作
✋ - : 表示最近第二个被放到后台中的工作
后台超过 三个工作,就不会有+ - 符号出现了~!!!
✋ Running : 表示该进程正在运行
stopped : 表示该进程已经停止
前后台进程相互调换 :
✋ 即把 前台进程放在后台去运行 ,或者,把后台进程放到前台去运行 ~!!
✋ 其实,主要是 介绍两个 命令 bg ; fg 。
前台进程放在后台去运行 :
✋ 这类问题,通常来讲,大家想想 : “ 前台进程要到后台去运行 ”
===>>>
那我最直接了当的,不就是直接让该进程去后台运行就完了嘛。
就比如现在要运行一个 ( sleep 300 )
那我直接加一个 & 不就行了
===>>>
直接 ( sleep 300 & ) 直接结束了呗~!!!
这是最直接了当的~!!!
前台进程到后台运行,我直接 & 就完了呗~!!!
该案例,就不列举了, & 的应用,过于简单,不示例~!!
===>>>
还有一种,就是该前台进程正在运行呢( 这一点其实才是想要说的那个例子 )
就是现在,前台正有个进程在运行着呢,现在需要把它转为 后台进程~!
===>>>
那就得先使用 发送信号量 ctrl + z 先给该进程暂停了
(自动就挂在后台进程了 )
然后使用 jobs 命令,查看后台进程;
查看完该进程在后台的 [ 编号 ] 之后,再使用 bg 命令 继续运行该进程~!
这样,该进程就从 前台进程正在运行 变为 后台进程 正在运行了~!!
其实,相当于是 让后台进程 继续在后台运行~!!!!!
示例 :
有 两个作业,一个是前台正运行,我们使用 ctrl z 给暂停 ( 后台挂起 )
一个是在后台正在运行~!!!!
显然 , [ 1 ] 是后台挂起, [ 2 ] 是后台正在运行~!!
现在,我们把后台挂起的 [ 1 ] 作业 继续让在后台运行~!!
( 这就是我们上面举得例子,让后台进程,继续在后台运行 )
===>>> bg 命令
执行完命令后,显然可以看到 提示 job 2 已经在后台了; 不过,我们执
行完该命令后,是让它继续在后台运行起来。
命令各式 : bg %( 进程所对应的 [ 编号 ] )
后台进程调到前台来执行 :
我们依旧以上面示例 :
现在调用 [ 1 ] 工作 到前台去执行 :
显然,我们把该进程调到前台来后,该进程立马执
行,终端即无法输入命令 ( 这是 sleep 的作用 )
我们使用的命令是 : fg %
使用 kill 命令 终止 工作 :
终止 工作 1 :