如何在 bash 脚本中同时运行两个不同的长时间运行的命令?

rec*_*bot 3 scripting linux bash

作为迁移脚本的一部分,我必须 chmod 和 chown 数十万个文件。每个命令大约需要一个半小时才能完成。我意识到这两个操作可以同时运行,从而减少了运行时间,我通过在 shell 中测试证实了这一点。

我知道使用“&”将命令推入后台的技巧,但我需要确保在继续执行脚本的其余部分之前完成两个进程。

谢谢

Den*_*son 12

使用wait命令。

这个演示:

#!/bin/bash
echo $SECONDS
sleep 12&
sleep 15&
jobs
wait
echo $SECONDS
echo "jobs are done"
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

0
[1]-  Running                 sleep 12 &
[2]+  Running                 sleep 15 &
15
jobs are done
Run Code Online (Sandbox Code Playgroud)

在输出最后两行之前有十五秒的停顿。