活学活用Linux操作系统的后台任务


Linux作为一个多任务环境,允许用户同时执行多项任务,例如查看系统情况、备份资料、编辑文件和打印文件等。

对于耗时长的任务不应该让它在前台任务中执行,而应该交给后台任务去执行。这样前台任务可继续正常运作其它的操作,不用等待。示例如下:

# find / -name testing &

# fg

如果想要让上面例子中的任务转为后台执行,就运用 “& ”。不过,由于是后台执行的,所以该程序的输出并不会出现在屏幕上。当用户将数个任务放到后台任务执行时,要如何去管理这些后台任务?如何知道后台任务的执行情况?如何 终止或暂时停止后台任务的执行?下面就来逐一说明。

控制管理

举例如下:# du -a /user > user.data &

[1] 237

# find / -name core -type f -ls > core.data &

[2] 238

如上通过“&”命令将三个任务放到后台中执行。用命令“jobs -l”显示后台任务的执行情况,举例如下:

#jobs -l

[1] + 237 Running du -a /user > user.data

[2] - 238 Running find / -name core -type f -ls > core.data

首先介绍一个任务控制特有的名词:当前任务。上面的当前任务是“du -a /user > user.data”,因为后台任务号码是“[1]”。如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。

终止后台任务

命令总是有出错的时候。当出现这种情况时,用户可用Shell的内置命令“kill”来结束任务。假如想要结束后台任务“du -a /user > user.data”,可以用下面的命令:# kill 237

# kill %1

其中,237为第一个后台任务的PID号码。如果想终止第二个后台任务,以下两种要领均可:

要领一:#kill %2

要领二:# kill %-

相关内容