Bash Shell同时执行多个命令

Bash Shell同时执行多个命令,你需要执行 3 个命令,但这些命令相互独立,不必等待前一个命令运行结束。

解决方案

你可以在命令末尾添加一个 & 符号,在后台运行该命令。这样一来,就能够连续快速地执行这 3 个命令,如下所示:

$ long &
[1] 4592
$ medium &
[2] 4593
$ short
$

或者,更好的做法是在单个命令行中完成所有操作。

$ long & medium & short
[1] 4592
[2] 4593
$

讨论

在“后台”(Linux 其实没有这么个地方)运行某个命令时,真正的意思是我们断开了键盘输入与命令之间的联系,shell 在显示命令行提示符并接受更多命令输入前不会再等着该命令完成。命令输出(除非我们采取明确的操作来改变这种行为)仍然会出现在屏幕上,因此,示例中 3 个命令的输出会在屏幕上交错出现。

方括号内有点奇怪的数字是作业号,随后是在后台启动的命令的进程 ID。在我们的示例中,作业 1(进程 4592)是 long 命令,作业 2(进程 4593)是 medium。
short 之后并未出现 & 符号,因此该命令不会在后台运行,bash 会等待其运行完毕才显示命令行提示符($)。

作业号或进程 ID 可用于对作业实施有限的控制。例如,我们可以用kill %1(因为作业号为 1)或者指定进程 ID(kill 4592)来“杀死”long 作业,二者能够实现相同的结果。

你也可以用作业号重新连接到后台作业。例如,可以用 fg %1 将 long 作业放回前台。如果后台只有一个作业在运行,甚至都不用指定作业号,只使用 fg 即可。

如果执行某个命令,但发觉其完成时间比预想的更长,那么可以用 Ctrl-Z 暂停该命令,返回到提示符下。接着输入 bg 来恢复作业,并在后台继续运行。这么做的效果相当于事前在命令尾部加上 & 符号。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!