推荐答案
在 Shell 脚本中,fg
和 bg
命令用于控制作业(jobs)的前台和后台执行。
fg
命令:将后台作业切换到前台执行。使用fg
命令时,可以指定作业编号(如fg %1
),将特定的后台作业切换到前台。如果不指定作业编号,默认将最近一个被挂起的作业切换到前台。bg
命令:将挂起的作业放到后台继续执行。使用bg
命令时,可以指定作业编号(如bg %1
),将特定的挂起作业放到后台。如果不指定作业编号,默认将最近一个被挂起的作业放到后台。
本题详细解读
fg
命令详解
- 功能:
fg
命令用于将后台作业切换到前台执行。前台作业会占用当前的终端,直到作业完成或被挂起。 - 使用场景:当你需要与一个后台作业进行交互时(例如输入数据或查看输出),可以使用
fg
命令将其切换到前台。 - 示例:
$ sleep 100 & [1] 12345 $ fg %1 sleep 100
在这个例子中,sleep 100 &
将sleep
命令放到后台执行,fg %1
将其切换到前台。
bg
命令详解
- 功能:
bg
命令用于将挂起的作业放到后台继续执行。后台作业不会占用当前的终端,可以在后台继续运行。 - 使用场景:当你有一个挂起的作业(例如通过
Ctrl+Z
挂起),并且希望它在后台继续执行时,可以使用bg
命令。 - 示例:
$ sleep 100 ^Z [1]+ Stopped sleep 100 $ bg %1 [1]+ sleep 100 &
在这个例子中,sleep 100
被Ctrl+Z
挂起,bg %1
将其放到后台继续执行。
作业控制符号
&
:在命令末尾加上&
可以将命令放到后台执行。Ctrl+Z
:挂起当前的前台作业。jobs
:查看当前 Shell 会话中的所有作业及其状态。
作业编号
%n
:表示作业编号为n
的作业。例如,%1
表示作业编号为 1 的作业。%+
或%%
:表示最近一个被挂起或放到后台的作业。%-
:表示倒数第二个被挂起或放到后台的作业。
通过 fg
和 bg
命令,可以灵活地控制作业的前台和后台执行,从而更好地管理 Shell 脚本中的任务。