现在的位置: 首页 > 综合 > 正文

作业管理:&、jobs、fg、bg、kill介绍

2017年12月05日 ⁄ 综合 ⁄ 共 1113字 ⁄ 字号 评论关闭

作业管理(job control)是在bash环境下使用的,也就是说,当我们登录系统获取bash shell之后,在单一终端界面下,同时管理多个作业。下面分别介绍与作业管理有关的几个常用命令:

一、直接将命令放到后台执行的 "&"
在bash环境下,前台:您可以控制的作业称为前台作业(foreground),后台:在内存可以自行运行的作业,您好无法直接控制他,除非以bg/fg命令把该作业调用出来。

"&" 用法:
# tar -zpcf /tmp/etc/tar.gz /etc &
[1] 234 <== [job number] PID

#  <==可继续继续工作,不受影响,这就是后台

把当前作业放到后台暂停:[Ctrl] + z,有些时候我们正在使用vi逻辑一个文件,突然有其它事情,需要切换到bash环境去执行相关命令,喧是我们直接退出vi逻辑环境?当然不需要,我们只需用命令[Ctrl]+z ,然该作业暂停到后台,状态Stopped.
如:
#vi /etc/profile
#在vi的一般模式下,按下[Ctrl]+z组合键
[1]+ Stopped   /usr/bin/vim /etc/profile
#   <==顺序获取了前台的控制权

二、观察当前后台作业状态: jobs
如观察当前bash中的所有作业与对应的PID.

#jobs -l
[1]+ Stopped   /usr/bin/vim /etc/profile
[2]- Stopped   /usr/bin/vim /etc/profile.conf

说明:上面的 -l 表示让列表现示作业号的PID,另外(+-)号,(+)号表示默认的作业,如我在bash中输入fg,则[1] 会被自动执行。

三、将后台作业拿到前台处理:fg
#fg %jobnumber

我们可先用上面介绍的jobs -l命令查询目前所有的作业号,然后再执行fg %jobnumber命令。应能够将后台作业拿到前台来处理。

四、让作业在后台运行:bg
我们刚才介绍了用[Ctrl]+z可以让当前作业放到后台去"暂停",那么,现在我们可以让一个作业在后台运行。
如:
#find / -perm +7000
#此时,请立刻按下[ctrl]+z暂停。
[1]+ Stopped   #find / -perm +7000

#然后让它在后台运行

#bg %1

五、管理后台作业:kill
有时我们不想让一个作业再继续运行了,这时我们可以向系统发一个signal,来kill这个作业,
#kill -signal %jobnumber
常用参数:
-9:  立刻强制删除一个作业
-15:以正常的程序方式终止一项作业,与-9是不一样的。

#jobs
[1]+ Stopped   vim bashrc
#kill -9 %1
[1]+ 终止    vim bashrc

抱歉!评论已关闭.