发新话题
 搜藏 打印 该页面添加到 Mister Wong

『linux基础知识』shell 的任务管理

『linux基础知识』shell 的任务管理

命令的任务调度

当您在终端里运行一个命令或开启一个程序时,终端要等到命令或程序运行完毕后,才能再被使用。在 Unix 中,我们称这样的命令或程序在前台(foreground)运行。如果您想在终端下运行另一个命令,则需要再打开一个新的终端。

但这里还有一个更优雅的办法,称为任务调度(jobbing)或后台(backgrounding)。当您运用任务的调度或将命令置于后台,终端就立即解放了,这样一来,终端立即就可以接受新的输入。为实现这样的目的,您只需在命令后面添加一个 & :

gqview &

告诉 shell 将图片查看器'GQview'放到后台去执行(即当成 job 来运行)。

命令 jobs 将告诉您,在这个终端窗口中,运行着哪些命令与程序:

jobs

[1]+ Running gqview &

当您要关闭终端窗口时,这一点就很重要,因为关闭终端将导致所有在其中运行的任务都将被中止,在此例中,如果您关闭了终端,由这个终端开启的 GQview 程序也将被关闭。

但如何将前台运行的一个程序放到后台去?没问题:

gqview

<CTRL z>

[2]+ Stopped gqview

bg

[2]+ gqview &

组合键 <CTRL z> 将挂起终端中正在运行的程序,然后您就可以用 bg 命令将其放到后台去执行。

请注意,在后台运行图形应用程序有时候是有用处的,这样可以在终端下显示这个程序的出错信息,虽然这对您可能没有直接的帮助,当如果碰到了麻烦,向别人询问时,这些出错提示就有用武之地了。

一些图形程序,很可能还处在测试期(Beta),尽管在后台执行,也会在终端中输出一些信息。如果您对此不满,可以用下面命令:

command &>/dev/null &

这不仅将程序送到后台执行,还将其输出发到'/dev/null'文件。'/dev/null'是系统的"碎纸机" (shredder),所有送到那里的信息都将消失殆尽。

本文由wjping119 发布于Linuxsky 论坛,网址:http://bbs.linuxsky.org/thread-2089-1-1.html

TOP

发新话题