任务管理:
任务管理(job control)是用在bash环境下的,也就是说在我们登陆系统获取bash shell之后,在单一终端下同时执行多个任务的操作管理。
什么是任务管理:
执行任务管理的操作中,其实每个任务都是目前bash的子进程,即彼此之间是有相关联性的,我们无法用任务管理的方式由a的环境去管理b的bash。
假设我们现在只有一个终端,因此可以出现提示字符让你操作的环境成为前台,至于其他任务可以放在后台去暂停或者执行,需要注意的是放入后台执行的任务是不可以使用ctrl+c来终止的。
要执行bash的任务管理必须要要注意的是:
①:这些任务所触发的进程必须来自于你shell的子进程
②:前台,可以控制与执行命令的这个环境成为前台的任务
③:后台,可以自动执行的任务,你无法使用ctrl+c终止,可以使用bg,fg调用该任务
④:后台中执行的进程不能等待terminal或者shell的输入
job control的管理
①:直接将命令丢到后台中【执行】的 &
像我们之前提到的,如果只有一个bash的环境,如果想要执行多个任务,可以将某些任务直接丢到后台环境中,让我们可以继续操作前台的任务,那么如何将任务丢到后台中呢,最简单的方式是利用【&】这个符号,如下:
将 /data备份到 /tmp/test.tar.gz【在后台中执行】,&这个符号就代表将任务丢到后台执行
tar -zpcf /tpm/test.tar.gz /data &
需要注意的是:如果执行使用上述命令,在任务完成或者其他情况下,会在屏幕上输出该任务的结果,如果后台任务很多,会导致屏幕很乱,这时候我们就可以使用数据流重定向,将该任务的输出数据重定向到指定文件中!!!,如下:
tar -zpcf /tpm/test.tar.gz /data > /tmp/test.log 2>&1 &
②:将目前的任务丢到后台中暂停: ctrl + z
例如,我们正在使用vim编辑某个文件,那么这个时候如果我们想去前台操作一下某个文件,是否要结束vim呢?也是不需要的,你可以执行使用 ctrl + 组合键,将vim丢到后台中等待,默认情况下,使用ctrl + z丢到后台中的任务都是出于暂停状态
③:查看目前后台任务状态:jobs
jobs [-lrs]
-l : 除了列出job number与命令串之外,同时列出PID的号码
-r :仅列出正在后台run的任务
-s :仅列出正在后台当中暂停【stop】的任务
“+” 代表当前默认使用的任务,也就是最后被放到后台中任务号码
④:将后台任务拿到前台来处理 fg
我们在上述②中提到可以将任务暂停放到后台,那么我们如何将暂停的任务唤醒,再次继续操作呢???????
fg %jobnumber
%jobnumber: jobnumber为任务号码(数字),如③中的[1]或[3], %是可有可无的
如果你直接使用fg,而没有指定号码,那么会把号码+代表的任务拿到前台来,同样的,你也可以输入fg -,那么“-”对应的任务会被拿到前台来
⑤:让任务在后台下的状态变成运行中
bg %jobnumber
%jobnumber: jobnumber同样为任务号码
⑥:管理后台当中的任务 kill