【BASH】同时执行多个命令

后台运行命令技巧
本文介绍如何在Linux环境下使多个命令并行执行的方法,通过在命令末尾添加'&'符号让命令在后台运行,实现多任务的同时处理。此外,还介绍了如何管理这些后台任务,包括暂停、恢复及调度到前台等操作。
部署运行你感兴趣的模型镜像

 

问题:

需要执行三个程序,它们是独立的,不需要等待其他命令执行结束。

 

解决方案:

在命令后放一个'&',使得命令在后台运行。这样你可以用如下的方法同时执行这三个程序。

$ long &

[1] 4592

$ medium &

[2] 4593

$ short

$

更好的方法是把这几个命令放在同一行:

$ long & medium & short

[1] 4592

[2] 4593

$

 

讨论:

实际上当我们在后台(Linux中并不存在后台这个地点)运行程序的时候,是将keyboard input和所执行的命令分离,shell并不等待命令执行结束就可以接收新的命令,后台命令的输出仍然后显示到屏幕上面。

比较奇怪的时候输出的方括号内的任务序号,后面跟随一个进程ID。上面的示例中,job 1process 4592)是long命令的,job 2process 4953)是medium的。

short命令没有放到后台是因为在命令后面没有跟随一个'&',因此bash将等待short执行结束后再给出提示符($).

任务序号或进程ID可以提供简单的后台任务管理。可以使用kill %1来杀掉long任务(因为 long的任务序号是1),或者你可以指定进程IDeg. Kill 4952),可以达到同样效果。

同样可以使用任务序号把后台运行的命令调度到前台,比如fg %1。如果只有一个后台在运行的命令,仅使用fg就可以了。

如果你已经开始运行某个命令,并发现该命令需要执行比较长的时间,可以使用Ctrl-Z暂停它。

想要在后台重新启动这个任务,使用bg

 

 

您可能感兴趣的与本文相关的镜像

HunyuanVideo-Foley

HunyuanVideo-Foley

语音合成

HunyuanVideo-Foley是由腾讯混元2025年8月28日宣布开源端到端视频音效生成模型,用户只需输入视频和文字,就能为视频匹配电影级音效

Linux 系统中,可以通过多种方式同时执行多个命令,以提高效率或实现并行任务处理。这些方法包括使用后台运行符 `&`、分号 `;`、逻辑操作符 `&&` 和 `||`,以及更高级的并行工具如 `parallel`。 ### 使用 `&` 在后台运行命令 通过在命令末尾添加 `&`,可以让命令在后台运行,从而实现多个命令的并发执行。例如: ```bash command1 & command2 & ``` 此方式适用于长时间运行任务,并且不会阻塞终端。例如执行两个脚本: ```bash ./a.sh & ./b.sh & ``` 脚本 `a.sh` 和 `b.sh` 将几乎同时开始执行,互不干扰[^3]。 ### 使用分号 `;` 连续执行命令 分号 `;` 允许连续执行多个命令,无论前一个命令是否成功。例如: ```bash ls ; pwd ; whoami ``` 此命令会依次执行 `ls`、`pwd` 和 `whoami`,即使其中某个命令失败也不会影响后续命令执行[^2]。 ### 使用逻辑操作符控制命令执行流程 逻辑操作符 `&&` 和 `||` 可以基于前一个命令执行状态来决定是否执行后续命令。例如: - `&&` 表示当前一个命令成功时执行后一个命令: ```bash gcc myprogram.c -o myprogram && ./myprogram ``` 如果 `gcc` 编译成功,才会运行生成的可执行文件 `./myprogram` [^2]。 - `||` 表示当前一个命令失败时执行后一个命令: ```bash ./my_script.sh || echo "Failed to execute my_script.sh" ``` 如果 `./my_script.sh` 执行失败,则会输出错误提示信息 [^2]。 ### 使用 `parallel` 工具并行执行命令 GNU `parallel` 是一个强大的命令行工具,可以更灵活地并行执行多个命令。例如: ```bash parallel ::: "command1" "command2" "command3" ``` 此命令会并行运行 `command1`、`command2` 和 `command3`,适用于需要高效处理多个独立任务的场景。 ### 综合使用示例 可以在一个命令行中组合使用上述操作符,构建更复杂的逻辑。例如: ```bash gcc myprogram.c -o myprogram && ./myprogram || echo "Compilation failed" ``` 如果编译成功,则运行程序;如果失败,则输出错误信息 [^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值