linux bg
在 Linux 系统中,后台运行是一种常见的操作方式。当我们在终端执行一个命令时,有时候需要将该命令放到后台运行,而不阻塞当前终端的操作。本文将详细介绍 Linux 中的后台运行相关知识。
1. 前台运行与后台运行的区别
在 Linux 终端中,每次执行一个命令时,默认情况下都会阻塞当前终端的操作,直到该命令执行完成或者手动终止。这种方式称为前台运行。而后台运行是指将一个命令放到后台执行,不会阻塞当前终端的操作,可以继续执行其他命令。
前台运行的特点如下:
- 命令会占用当前终端,直到执行完毕或手动终止。
- 执行期间,终端无法执行其他命令。
- 可以使用 Ctrl + C 快捷键来终止当前正在运行的命令。
后台运行的特点如下:
- 命令会在后台执行,不会占用当前终端。
- 执行期间,可以继续在终端执行其他命令。
- 无法使用 Ctrl + C 终止后台运行的命令。
- 后台运行的命令会有自己的进程 ID (PID),可以使用该 PID 控制和管理命令。
2. 在命令后添加 & 符号实现后台运行
在 Linux 终端中,使用 & 符号可以将命令放到后台运行。具体的操作方式是,在要执行的命令后面添加一个空格和 & 符号。例如,我们要让一个程序以后台运行的方式启动,可以执行以下命令:
$ program_name &
在使用 & 符号进行后台运行时,命令会立即被放到后台执行,而不会等待该命令的执行结果。终端会立即返回一个进程 ID (PID),用于识别该后台运行的命令的进程。
需要注意的是,后台运行的命令输出的结果不会在终端中显示。如果需要查看输出,可以使用输出重定向将结果保存到文件中,或者通过其他方式查看。
3. 通过 Ctrl + Z 将前台运行的命令放到后台运行
除了在命令后添加 & 符号以外,我们还可以使用组合键 Ctrl + Z 来将前台运行的命令放到后台运行。该组合键会将当前正在运行的命令暂停,并返回一个进程 ID (PID)。
使用 Ctrl + Z 将命令放到后台运行的操作步骤如下:
- 在命令执行过程中,按下组合键 Ctrl + Z。
- 终端会显示一个消息,提示当前命令已经被暂停,并返回一个进程 ID (PID)。
可以使用 bg
命令将一个被暂停的命令放到后台运行。例如:
$ bg %job_id
其中 job_id
是在使用 Ctrl + Z 后返回的进程 ID。
4. 查看后台运行的命令
在 Linux 终端中,我们可以使用 jobs
命令来查看当前终端中正在运行的后台命令。该命令会显示后台运行的命令的状态信息,包括进程 ID (PID) 和命令名称。
执行 jobs
命令会得到类似以下的结果:
$ jobs
[1]- Running command_1 &
[2]+ Stopped command_2 &
结果中,每行代表一个后台运行的命令。行首的数字表示该命令的任务 ID (job ID),用于后续操作。行中的 +
或 -
符号表示最近被放到后台或者最后一个被放到后台的命令。
5. 将后台运行的命令调到前台运行
如果我们在后台运行的命令需要调回到前台运行,可以使用 fg
命令。该命令可以将一个后台运行的命令调到前台,并将其放到当前终端。
使用 fg
命令的语法如下:
$ fg %job_id
其中 job_id
是需要调回到前台的命令的任务 ID (job ID)。
6. 结束后台运行的命令
结束后台运行的命令可以使用 kill
命令,该命令可以向指定的进程发送信号,以终止其运行。
使用 kill
命令的基本语法如下:
$ kill [signal_type] PID
其中,signal_type
是信号类型,默认为终止进程。PID
是后台运行命令的进程 ID。
例如,要结束一个名为 command_name
的后台运行命令,可以执行以下命令:
$ kill 9 %job_id
其中 job_id
是要结束的命令的任务 ID,9
是终止信号类型。
7. 示例
下面是一个示例,在 Linux 终端中执行一个后台运行的命令,并通过 jobs
、fg
和 kill
命令进行相关操作:
$ sleep 1000 &
[1] 12345 # 这里的 job_id 是 1,进程 ID (PID) 是 12345
$ jobs
[1]+ Running sleep 1000 &
$ sleep 2000 &
[2] 23456 # 这里的 job_id 是 2,进程 ID (PID) 是 23456
$ jobs
[1]- Running sleep 1000 &
[2]+ Running sleep 2000 &
$ fg %2
sleep 2000 # 此步之后,sleep 2000 命令会在前台运行
^C # 按下 Ctrl + C 终止运行中的命令
$ jobs
[1]- Running sleep 1000 &
[2]+ Exit 130 sleep 2000
$ kill %1
[1]- Terminate sleep 1000
在上述示例中,我们首先使用 sleep
命令来创建两个后台进程。通过 jobs
命令可以查看到两个后台进程的状态。然后使用 fg
命令将第二个后台进程调到前台运行,并使用 Ctrl + C 终止该命令。最后使用 kill
命令终止第一个后台进程。
总结
通过本文的介绍,我们了解了 Linux 中的后台运行相关知识。我们可以使用 & 符号将命令放到后台运行,使用 Ctrl + Z 将前台运行的命令放到后台运行,以及如何查看、调到前台和结束后台运行的命令。
后台运行可以提高终端的使用效率,让我们能够同时执行多个命令。无论是通过在命令后面添加 & 符号还是使用 Ctrl + Z,后台运行都是非常方便和实用的操作方式。