Linux / Unix:bg 命令示例
我是 Linux 和 Unix 系统 bash/ksh 的新用户。如何在 Linux/类 Unix 系统上在后台运行作业或脚本?如何在 bash 或 ksh 或 sh shell 上在后台运行作业?
作业控制就是停止/暂停进程(命令)执行并根据您的要求继续/恢复执行的能力。这是使用您的操作系统和 shell(例如 bash/ksh 或 POSIX shell)完成的。
该bg命令是 Linux/Unix shell 作业控制的一部分。该命令既可用作内部命令,也可用作外部命令。它恢复执行暂停的进程,就像它们是用 & 启动的一样。使用 bg 命令重新启动已停止的后台进程。
目的
通过将当前环境中暂停的作业作为后台作业运行来恢复它们。
句法
基本语法如下:
bg jobID
bg jobID1 jobID2 ... jobIDN
了解职位编号 (jobID)
在 shell 中有多种方式来引用作业。字符%引入作业规范。JobID 可以是进程 ID (PID) 编号,也可以使用以下符号组合之一:
- %Number:使用职位编号,例如%1或%2。
- %String:使用名称以暂停命令开头的字符串,例如%commandNameHere或%ping。
- %+或%%:指当前工作。
- %-:指之前的工作。
bg 命令示例
在开始使用 bg 命令之前,您需要了解另外两个命令(键序列)。
如何查找当前会话中的作业状态?
只需使用如下jobs 命令即可列出当前 bash/ksh/tcsh shell 中的所有活动作业:
$ jobs
或
$ jobs -l
示例输出:
[1] 6107 Running gedit fetch-stock-prices.py & [2]- 6148 Running gnome-calculator & [3]+ 6155 Stopped ping example.com
在这个例子中,输出了三个作业:gedit fetch-stock-prices.py(基于 GUI 的文本编辑器)、gnome-calculator和暂停/停止ping example.com命令。
如何暂停或停止当前会话中的作业?
Ctrl只需使用–Z快捷键序列或使用kill 命令或 pkill 命令即可暂停作业:
kill -s stop PID kill -s stop jobID pkill -stop PID
推杆更加困难
在此示例中,您将在前台运行ping 命令:
ping www.example.com
要暂停 ping 命令作业,请按下Ctrl-Z按键序列。要列出活动作业,请输入:
$ jobs -l
示例输出:
[3]+ Stopped ping example.com
现在,使用作业编号 3ping example.com通过输入以下命令来恢复作业:
bg %3
示例输出:
[3]+ ping example.com & example@wks05:~$ 64 bytes from www.example.com (75.126.153.206): icmp_req=4 ttl=53 time=264 ms 64 bytes from www.example.com (75.126.153.206): icmp_req=5 ttl=53 time=250 ms 64 bytes from www.example.com (75.126.153.206): icmp_req=6 ttl=53 time=251 ms 64 bytes from www.example.com (75.126.153.206): icmp_req=7 ttl=53 time=251 ms 64 bytes from www.example.com (75.126.153.206): icmp_req=8 ttl=53 time=267 ms
下面是运行名为 update-mutual-fund.sh 命令的 Unix shell 脚本的另一个示例:
~/scripts/scripts/financial/update-mutual-fund.sh --all --output=html ### To stop press CTRL + Z ## jobs -l #### ~/scripts/scripts/financial/update-mutual-fund.sh has job id # 6 ### Resume job id #6 bg %6
在此示例中,从终端在后台运行 gnome-calculator 进行计算:
$ gnome-calculator &
示例输出:
[1] 6517
要停止作业 ID # 1 (或 PID # 6517),请键入以下kill 命令:
$ kill -s stop %1
或
$ kill -s stop 6517
示例输出:
[1]+ Stopped gnome-calculator
一旦停止,您将无法在 gnome-calculator 中输入数字。要恢复已停止的 gnome-calculator,请输入:
或
示例输出:
$ jobs -l
$ bg %1
$ jobs -l
$ bg %gnome-ca
[1]+ gnome-calculator &
bg 命令选项
从命令手册页或键入以下命令:
$ help bg
示例输出:
bg: bg [job_spec ...] Move jobs to the background. Place the jobs identified by each JOB_SPEC in the background, as if they had been started with `&'. If JOB_SPEC is not present, the shell's notion of the current job is used. Exit Status: Returns success unless job control is not enabled or an error occurs.
关于 /usr/bin/bg 和 shell 内置命令的说明
键入以下内容type command来查明 bg 是否是 shell 的一部分、外部命令或者两者兼而有之:
$ type -a bg
示例输出:
bg is a shell builtin bg is /usr/bin/bg
在几乎所有情况下,您都需要使用作为 BASH/KSH/POSIX shell 内置实现的 bg 命令。/usr/bin/bg 命令不能在当前会话中使用。/usr/bin/bg 命令在不同的环境中运行,并且不共享父 bash/ksh shell 对作业的理解。
相关媒体
本教程还提供简短视频格式: