Linux 黑魔法——后台运行的艺术
date
Oct 22, 2016
URL
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 的作业控制,可以大大提高我们的工作效率。