.
这些工作所触发的½程必须来自于你
shell
的子½程
(
只管理自己的
bash)
;
.
前景:你可以控制与下达指令的这个环境称为前景的工作
(foreground)
;
.
背景:可以自行运作的工作,你无法使用
[ctrl]+c
终止他,可使用
bg/fg
呼½该工作;
.
背景中『执行』的½程不能等待
terminal/shell
的输入
(input)
½下来让我们实际来管理这些工作吧!
16.2.2 job control
的管理
如前所述,
bash
只能够管理自己的工作而不能管理其他
bash
的工作,所以即使你是
root
也不能够
½别人的
bash
底下的
job
给他拿过来执行。此外,又分前景与背景,然后在背景里面的工作状态
又可以分为『暂停
(stop)
』与『运作中
(running)
』。那实际½行
job
控制的指令有哪些?底下就来
谈谈。
.
直½½指令丢到背景中『执行』的
&
如同前面提到的,我们在只有一个
bash
的环境下,如果想要同时½行多个工作,
那么可以½某些
工作直½丢到背景环境当中,让我们可以继续操作前景的工作!那么如何½工作丢到背景中?
最简
单的方法就是利用『
&
』这个玩意儿了!举个简单的例子,我们要½
/etc/
整个备份成为
/tmp/etc.tar.gz
且不想要等待,那么可以这样做:
[root@study ~]#
tar
-
zpcf /tmp/etc.tar.gz /etc &
[1] 14432
<== [job number] PID
[root@study ~]# tar: Removing leading `/' from member names
#
在中括
号内
的
号码为
工作
号码
(job number)
,
该号码
与
bash
的控制有
关
。
#
后
续
的
14432
则
是
这个
工作在系
统
中的
PID
。至于后
续
出
现
的
数
据是
tar
执
行的
数
据流,
#
由于我
们没
有加上
数
据流重
导
向,所以
会
影
响画
面!不
过
不
会
影
响
前景的操作喔!
仔细的瞧一瞧,我在输入一个指令后,在该指令的最后面加上一个『
&
』代表½该指令丢到背景中,
此时
bash
会给予这个指令一个『工作号码
(job number)
』,就是那个
[1]
啦!至于后面那个
14432
则
是该指令所触发的『
PID
』了!而且,有趣的是,我们可以继续操作
bash
呢!很不赖吧!
不过,
那么丢到背景中的工作什么时候完成?完成的时候会显示什么?如果你输入几个指令后,突然出现这
个数据:
[1]+ Done tar
-
zpcf
/tmp/etc.tar.gz /etc
就代表
[1]
这个工作已经完成
(Done)
,该工作的指令则是½在后面那一串指令列。
这样了½了吧!
另外,这个
&
代表:『½工作丢到背景中去执行』喔!
注意到那个『执行』的字眼!此外,这样
的情况最大的好处是:
不怕被
[ctrl]+c
中断
的啦!
此外,½工作丢到背景当中要特别注意资料的流
向喔!包括上面的讯息就有出现错误讯息,导致我的前景被影响。
虽然只要按下
[enter]
就会出现
提示字符。但如果我½刚刚那个指令改成:
[root@study ~]#
t
ar
-
zpcvf /tmp/etc.tar.gz /etc &