Linux fg命令教程:如何将后台运行的作业放到前台(附实例详解和注意事项)

您所在的位置:网站首页 前台的礼仪和注意事项 Linux fg命令教程:如何将后台运行的作业放到前台(附实例详解和注意事项)

Linux fg命令教程:如何将后台运行的作业放到前台(附实例详解和注意事项)

2024-07-04 03:27:01| 来源: 网络整理| 查看: 265

Linux fg命令介绍

fg命令是foreground的缩写,它用来将后台运行的作业放到前台继续执行。当我们在终端中执行一个命令时,有时候我们想要暂停它,或者让它在后台运行,不占用终端。这时候我们可以使用Ctrl+Z组合键来暂停当前的命令,或者在命令后面加上&符号来让它在后台运行。但是如果我们想要恢复暂停的命令,或者查看后台运行的命令的输出,我们就需要用到fg命令。fg命令可以让我们在多个后台作业之间切换,或者将后台作业转移到前台。

Linux fg命令适用的Linux版本

fg命令是一个shell内置命令,它适用于大多数的Linux发行版,如Ubuntu, Debian, CentOS, Fedora等。不同的shell可能有不同的实现方式,但是基本的功能和用法都是一致的。我们可以使用type fg命令来查看fg命令的类型,一般会显示fg is a shell builtin,表示它是一个shell内置命令。如果显示fg: command not found,表示当前的shell不支持fg命令,我们可以尝试切换到其他的shell,如bash, zsh等。

Linux fg命令的基本语法

fg命令的基本语法格式如下:

fg [作业ID]

其中,作业ID是一个数字,表示后台运行的作业的编号。我们可以使用jobs命令来查看当前有哪些后台作业,以及它们的编号。如果不指定作业ID,fg命令默认会将最近的一个后台作业放到前台。

Linux fg命令的常用选项或参数说明

fg命令没有选项,只有一个可选的参数,就是作业ID。如果不指定作业ID,fg命令默认会将最近的一个后台作业放到前台。如果指定了作业ID,fg命令会将对应的后台作业放到前台。作业ID可以是一个数字,也可以是一个百分号加上一个数字,如%1,表示第一个后台作业。

Linux fg命令的实例 实例1:将最近的一个后台作业放到前台

假设我们在终端中执行了一个耗时的命令,如ping www.bing.com,然后我们想要暂停它,我们可以按下Ctrl+Z组合键,这时候我们会看到类似下面的输出:

[[email protected] ~]$ ping www.bing.com PING a-0001.a-msedge.net (204.79.197.200) 56(84) bytes of data. 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=1 ttl=117 time=1.67 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=2 ttl=117 time=1.66 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=3 ttl=117 time=1.67 ms ^Z [1]+ Stopped ping www.bing.com [[email protected] ~]$

这里的[1]+表示这是第一个后台作业,Stopped表示它已经被暂停了。如果我们想要恢复这个命令,我们可以使用fg命令,不需要指定作业ID,因为它是最近的一个后台作业。我们会看到类似下面的输出:

[[email protected] ~]$ fg ping www.bing.com 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=4 ttl=117 time=1.67 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=5 ttl=117 time=1.66 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=6 ttl=117 time=1.67 ms ...

这时候,ping命令就会继续在前台运行,我们可以看到它的输出。如果我们想要停止它,我们可以按下Ctrl+C组合键。

实例2:将指定的后台作业放到前台

假设我们在终端中执行了多个后台作业,如ping www.bing.com &,ping www.google.com &,ping www.baidu.com &,然后我们想要查看其中一个的输出,我们可以使用fg命令,指定作业ID,如fg 2,表示将第二个后台作业放到前台。我们会看到类似下面的输出:

[[email protected] ~]$ ping www.bing.com & [1] 1234 [[email protected] ~]$ ping www.google.com & [2] 1235 [[email protected] ~]$ ping www.baidu.com & [3] 1236 [[email protected] ~]$ fg 2 ping www.google.com PING www.google.com (142.250.181.228) 56(84) bytes of data. 64 bytes from nrt20s09-in-f4.1e100.net (142.250.181.228): icmp_seq=1 ttl=115 time=1.64 ms 64 bytes from nrt20s09-in-f4.1e100.net (142.250.181.228): icmp_seq=2 ttl=115 time=1.64 ms 64 bytes from nrt20s09-in-f4.1e100.net (142.250.181.228): icmp_seq=3 ttl=115 time=1.64 ms ...

这时候,ping www.google.com命令就会在前台运行,我们可以看到它的输出。其他的后台作业仍然在后台运行,我们可以使用`jobs`命令来查看它们的状态。如果我们想要切换到其他的后台作业,我们可以再次使用fg命令,指定不同的作业ID。

实例3:将后台运行的交互式程序放到前台

有些程序是交互式的,需要我们输入一些信息,如密码,选项等。如果我们在终端中执行这些程序,并让它们在后台运行,那么我们就无法看到它们的提示,也无法输入信息。这时候,我们可以使用fg命令,将它们放到前台,然后进行交互。例如,我们可以使用ssh命令来远程登录到另一台Linux服务器,我们可以在命令后面加上&符号,让它在后台运行,如ssh user@host &,然后我们可以使用fg命令,将它放到前台,输入密码,登录成功后,就可以在远程服务器上执行命令了。我们会看到类似下面的输出:

[[email protected] ~]$ ssh user@host & [1] 1234 [[email protected] ~]$ fg ssh user@host user@host's password: Last login: Tue Dec 26 09:36:57 2023 from bashcommandnotfound.cn [user@host ~]$

这时候,ssh命令就会在前台运行,我们可以输入密码,登录到远程服务器。如果我们想要退出远程服务器,我们可以输入exit命令,或者按下Ctrl+D组合键。

实例4:将后台运行的编辑器放到前台

有些程序是编辑器,需要我们在终端中输入或修改一些文本,如vim, nano, emacs等。如果我们在终端中执行这些程序,并让它们在后台运行,那么我们就无法看到或编辑文本。这时候,我们可以使用fg命令,将它们放到前台,然后进行编辑。例如,我们可以使用vim命令来编辑一个文件,我们可以在命令后面加上&符号,让它在后台运行,如vim test.txt &,然后我们可以使用fg命令,将它放到前台,输入或修改文本,保存退出后,就可以在终端中执行其他命令了。我们会看到类似下面的输出:

[1] 1234 [[email protected] ~]$ fg vim test.txt

这时候,vim命令就会在前台运行,我们可以编辑test.txt文件。如果我们想要退出vim,我们可以输入:wq命令,保存并退出。

实例5:将后台运行的音乐播放器放到前台

有些程序是音乐播放器,需要我们在终端中控制播放,暂停,停止,切换等操作,如mplayer, mpg123, cmus等。如果我们在终端中执行这些程序,并让它们在后台运行,那么我们就无法控制它们。这时候,我们可以使用fg命令,将它们放到前台,然后进行操作。例如,我们可以使用mplayer命令来播放一个音乐文件,我们可以在命令后面加上&符号,让它在后台运行,如mplayer song.mp3 &,然后我们可以使用fg命令,将它放到前台,按下空格键暂停或恢复播放,按下q键停止播放,按下左右方向键快进或快退等。我们会看到类似下面的输出:

[1] 1234 MPlayer 1.4 (C) 2000-2023 MPlayer Team Playing song.mp3. libavformat version 58.76.100 (external) Audio only file format detected. Load subtitles in ./ ========================================================================== Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400) Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III) ========================================================================== AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample) Video: no video Starting playback... A: 0.0 (00.0) of 240.0 (04:00.0) ??,?% [[email protected] ~]$ fg mplayer song.mp3 A: 5.0 (05.0) of 240.0 (04:00.0) ??,?%

这时候,mplayer命令就会在前台运行,我们可以控制音乐播放。如果我们想要退出mplayer,我们可以按下q键,或者按下Ctrl+C组合键。

Linux fg命令的注意事项 fg命令只能在交互式的shell中使用,如果我们在脚本中使用fg命令,会报错fg: no job control,表示没有作业控制。这是因为脚本默认是不支持作业控制的,作业控制是一种允许用户在一个shell中同时运行多个进程的机制。如果我们想要在脚本中使用fg命令,我们需要在脚本的开头加上set -m命令,来启用作业控制。 fg命令只能将后台运行的作业放到前台,不能将前台运行的作业放到后台。如果我们想要将前台运行的作业放到后台,我们需要先按下Ctrl+Z组合键,暂停当前的作业,然后使用bg命令,将它放到后台继续运行。 fg命令只能将已经暂停或者正在运行的后台作业放到前台,不能将已经终止或者完成的后台作业放到前台。如果我们尝试将已经终止或者完成的后台作业放到前台,会报错fg: no such job,表示没有这样的作业。我们可以使用jobs -l命令来查看后台作业的状态,如果状态是Stopped或者Running,表示可以使用fg命令,如果状态是Done或者Terminated,表示不能使用fg命令。 如果我们在执行fg命令时,没有指定作业ID,或者指定了错误的作业ID,会报错bash: fg: xxx: no such job,表示没有这样的作业。这时候,我们可以使用jobs命令来查看正确的作业ID,然后重新执行fg命令。 Linux fg命令的相关命令 bg命令:将后台暂停的作业继续运行 jobs命令:查看后台运行的作业 kill命令:终止后台运行的作业 ps命令:查看进程的信息 top命令:实时监控进程的状态


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭