揭秘Linux后台作业都知道的一些知识
时间:2010-11-25 来源:mydear
Linux的基础操作,旨在让读者对Linux有个初步的认识。Linux经过发展,这里解说Linux后台了,这里我发表一下个人理解,和大家讨 论讨论。从操作系统的角度来讲,作业是计算机系统中运行的一项用户任务。在unix/linux系统中作业可以定义为:在命令行中输入的一个或一组命令。
由于linux是一个真正的多用户多任务的操作系统,所以可以同时运行多个任务,但是在前台启动一个作业时,标准输入和标准输出都被锁定,它们被当前作业所独占,直至该作业结束。为此,linux定义了两种类型的作业:前台作业和Linux后台作业。
前台作业
我们一般在终端执行的程序都是前台作业,在它运行过程中无法启动其他作业,启动前台作业也相当简单,输入命令然后回车。
◆挂起一个前台作业为了挂起一个前台作业,只需按下Ctrl+z。这个在我们处于全屏编辑模式下很有用,可以挂起编辑作业,完成其他任务。这样回到终端后,我们执行jobs -l就可以查看被挂起的作业的相关信息。
◆恢复一个被挂起的作业恢复一个挂起的作业,只需在终端执行前台命令fg。
◆终止一个前台作业终止一个前台作业,只需按下Ctrl+c,作业终止后,键入回车激活命令行提示符。
Linux后台作业
当一个作业需要占用较长时间的时候也许我们需要Linux后台运行该命令以完成其他的任务。
◆启动一个Linux后台作业启动一个 Linux后台作业,只需在命令的后面加上符号&。特别注意,如果该作业有参数,则&号紧跟在最后一个参数之后。命令结尾与&之 间不留空格。需要注意的是,前台作业和Linux后台作业是共享键盘,显示器等资源的,Linux后台作业和前台作业为了分的CPU时间片是要竞争竞争, 所以Linux后台作业发送给显示器的任何消息因此将与来自当前作业的消息混在一起,这可能很快变的很混乱。一个Linux后台作业要请求用户输入必须将 之移到前台。强烈建议Linux后台作业的输入和输出必须重定向,最好将终端输出重定向文件或者null设备。你可以试试不带参数的Linux后台 ping命令,例如ping localhost&,呵呵,等着闪屏吧!
◆挂起,重启,终止Linux后台作业为了挂起一个Linux后台作业用stop命令,重启用bg命令,终止用kill命令。三种命令都需要一个%号大头的作业号,作业号可以用jobs查看
◆作业前Linux后台状态切换一个被挂起的作业可以在前台和Linux后台状态间切换。一旦作业被挂起,就可以使用bg命令将作业起到Linux后台执行。移动一个Linux后台任务到前台自然用fg命令了。
◆多Linux后台作业当多个Linux后台作业运行时,需要用到作业号,用以标示想要处理的作业。
作业队列
使用jobs [-l]命令可以查看当前作业及其状态。每个作业有相应的作业号,当前值,运行状态。
◆当前值作业列表中的+号,-号称为当 前值标志。+号说明改作业位当前默认作业,-号说明当前默认作业完成后将替代当前默认作业。这里=,-号倒是有点进程优先级的味道了。当一个作业被挂起就 地动称为默认的当前值标志,如果多个作业被挂起则按照挂起的顺序一次赋予相应的标识值,最先挂起的为加号,较早的为减号,按优先级理解起来很容易明白。
◆使用作业号前面提到的几个命令都可以加上作业号参数。作业号有%号开头,并与命令之间有一空格隔开。默认作业号可表示位:%+,或者%%,包含减号当前值的作业可用%-表示。例如结束当前默认作业:kill %%或者kill %+。
◆ 作业状态生命周期一个作业可能处于三种状态之一:前台,Linux后台,挂起。当一个作业启动,它在前台运行,在运行期间作业可以被挂起,终止它,或者运 行直至自动结束掉。挂起的作业也可转到Linux后台继续执行。一个作业从创建到结束完全可以在人工干预下执行,我们可以更好的控制自己的作业任务,以便 是Linux更好的为我们服务我们也可以提高工作效率。