在 Linux 中,您经常会遇到需要很长时间才能完成的命令。您不必等待并让终端无法使用,而是可以使用 Linux 作业控制 (job control) 来管理这些任务。此强大功能允许您在单个 shell 会话中运行和管理多个 后台进程 (background processes),从而显著提高您的工作效率。
在后台运行命令
要直接在后台启动一个进程,只需在命令后附加一个和号(&)。这会立即返回您的 shell 提示符,允许您在命令执行时继续工作。
sleep 1000 &
sleep 1001 &
sleep 1002 &
列出后台作业
您可以使用 jobs 命令查看所有在后台运行的作业。
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1001 &
[3]+ Running sleep 1002 &
输出在第一列提供了作业 ID、其状态以及原始命令。+ 符号表示最近启动的后台作业,而 - 符号标记第二个最近的作业。
管理活动进程
如果一个命令已经在前台运行,而您决定需要收回终端控制权怎么办?您不必停止它。首先,按 Ctrl-Z 暂停正在运行的进程。然后,使用 bg 命令将该暂停的作业发送到后台。
pete@icebox ~ $ sleep 1003
^Z
[4]+ Stopped sleep 1003
pete@icebox ~ $ bg
[4]+ sleep 1003 &
现在,sleep 1003 进程作为后台作业正在运行,您可以使用 jobs 命令进行验证。
将作业调至前台
要将后台进程调回前台,请使用 fg 命令。您可以指定一个特定的作业及其 ID(例如 fg %1)。如果您在没有参数的情况下运行 fg 命令,它将把最近的后台作业(标记为 + 的作业)调到前台。
fg %1
终止后台作业
如果您需要停止一个后台进程,可以使用 kill 命令。与 fg 命令类似,您使用百分号(%)前缀来引用作业的 ID。这是 Linux 作业控制的一个关键功能。
kill %1
掌握这些命令对于任何希望在 shell 中高效多任务处理的 Linux 初学者来说都是至关重要的。