多任务处理:后台进程和前台进程

作为一个多任务操作系统, Linux支持在后台执行许多进程(基本上是程序或命令或类似任务),同时继续在前台工作。

前台进程

前台进程是您直接运行并等待它完成的任何命令或任务。 某些前台进程显示某种类型的用户界面支持正在进行的用户交互,而另一些则执行任务并在完成该任务时“冻结”计算机。

在shell中,前台进程通过在提示符处键入命令开始。 例如,要查看活动目录中的文件的简单列表,请键入:

$ ls

你会看到文件列表。 在计算机准备并打印该列表时,您无法从命令提示符执行其他任何操作。

后台进程

与前台进程不同, shell在运行更多进程之前不必等待后台进程结束。 在可用内存量的限制范围内,您可以一个接一个地输入许多后台命令。 要将命令作为后台进程运行,请键入该命令,并在该命令的末尾添加空格和连字符。 例如:

$ command1&

当用命令&符号发出命令时,shell将执行该工作,但不会让您等待命令完成,而是立即返回到shell,您将看到shell提示符(%for C Shell和$ Bourne Shell和Korn Shell)返回。 此时,您可以为前景或后台进程输入另一个命令。 后台作业以较低的优先级运行到前台作业。

当后台进程完成运行时,您将在屏幕上看到一条消息。

在进程之间切换

如果前台进程花费的时间过长,请按CTRL + Z停止它。停止的作业仍然存在,但其执行已暂停。 要恢复作业,但在后台输入bg将停止的作业发送到后台执行。

要在前台恢复暂停的进程,请键入fg ,该进程将接管活动会话。

要查看所有挂起的进程的列表,请使用jobs命令,或使用top命令显示CPU占用率最高的任务的列表,以便挂起或停止它们以释放系统资源。

外壳与GUI

多任务的工作方式有所不同,具体取决于您是使用shell还是图形用户界面进行工作 。 来自shell的Linux仅支持每个虚拟终端一个活动的前台进程。 然而,从用户的实际角度来看,一个窗口化的环境(例如,带有桌面的Linux,而不是基于文本的shell)支持多个活动窗口,这些活动窗口有效地用作多个同时的前台进程。 实际上,幕后的Linux会调整GUI中进程的优先级,以提高系统稳定性并支持最终用户处理。