Linux 黑魔法——后台运行的艺术

date
Oct 22, 2016
slug
Linux-bg-fg-kill
status
Published
tags
DevOps
summary
你是否经常因为程序占据终端而无法继续工作?其实Linux Shell提供了强大的后台运行管理功能,可以轻松实现程序在后台运行。本文深入介绍Linux Shell的作业控制功能,包括后台运行的方法、作业管理的相关命令等。
type
Post
在 Linux Shell 中,我们可以很方便地控制程序在前台(Foreground)或后台(Background)运行。本文将详细介绍 Linux Shell 的作业控制功能,包括后台运行、作业管理等相关命令的用法。

一、Shell 的作业控制

Shell 作为 Linux 的用户界面,具有作业控制(Job Control)功能。作业控制允许 Shell 并发运行多个作业(Job),并在作业之间切换。
Shell 通过作业控制,可以方便地实现以下功能:
  • 在后台运行进程
  • 将运行中的作业切换到前台
  • 暂停、继续或终止作业
Shell 的作业控制依赖于操作系统的作业控制功能,比如 BSD 的作业控制(Job Control)。Shell 作为用户接口,与内核的作业控制功能相结合,为用户提供了方便的作业控制方式。

二、启动后台作业

在 Shell 命令后面加上 & 符号,可以让该命令以后台作业的方式运行。
例如:
这样,command 就会在后台运行,Shell 可以继续接受其他命令的输入。
举个例子,我们用后台方式运行 vim 编辑器:
这样 vim 就在后台运行,可以编辑 test.txt 文件,而 Shell 提示符返回,可以执行其他命令。

三、作业管理

1. 查看后台作业

jobs 命令可以查看当前所有的后台作业:
输出显示当前有一个后台作业,同时显示了该作业的状态(Running)和命令。

2. 切换后台作业到前台

可以使用 fg 命令将后台作业切换到前台运行:
%1 表示编号为 1 的那个作业。这样 vim 编辑器就会切换到前台来。

3. 暂停后台作业

可以使用 CTRL+Z 暂停当前运行的前台作业,该作业会进入停止状态。
如果想暂停后台作业,可以先用 fg 切换到前台,然后 CTRL+Z 暂停。

4. 继续执行后台作业

bg 命令可以让暂停的作业在后台继续执行:
作业的状态由 Stopped 变为 Running。

5. 终止作业

可以使用 kill 命令终止作业:
这样就终止了编号为 1 的作业。
kill 命令也可以配合作业的 PID 使用:

四、总结

  • 使用 & 可以实现后台运行程序
  • jobs 可以查看后台作业
  • fg / bg 可以在前台和后台切换
  • CTRL+Z 可以暂停前台作业
  • kill 可以终止作业
熟练掌握 Shell 的作业控制,可以大大提高我们的工作效率。

© KangVcar 2016 - 2024