linux - 如何并行执行 4 个 shell 脚本,我不能使用 GNU 并行?

标签 linux bash shell unix parallel-processing

我有 4 个 shell 脚本 dog.sh、bird.sh、cow.sh 和 fox.sh。这些文件中的每一个都使用 xargs 并行执行 4 个 wgets 以 fork 一个单独的进程。现在我希望这些脚本本身能够并行执行。由于某些我不知道的可移植性原因,我不能并行使用 GNU。有没有办法用 xargs 或任何其他工具来做到这一点。

另外请问可移植性的原因是什么?

我是 shell 脚本的新手。对不起,如果我的问题看起来很神秘。

提前谢谢你们。

最佳答案

执行此操作的最简单方法是将所有四个脚本置于后台。您可以用另一个脚本“run_parallel.sh”包装它们,如下所示:

./dog.sh &
./bird.sh &
./cow.sh &
./fox.sh &

& 符号以非阻塞方式在后台调用进程,导致所有 4 个进程同时执行。

例如,这里有一个名为“one_two_three.sh”的脚本:

echo 'One'
sleep 1
echo 'Two'
sleep 1
echo 'Three'
sleep 1
echo 'Done'

和一个包装器“wrapper.sh”:

./one_two_three.sh &
./one_two_three.sh &
./one_two_three.sh &
./one_two_three.sh &
echo 'Four running at once!'

关于linux - 如何并行执行 4 个 shell 脚本,我不能使用 GNU 并行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277780/

相关文章:

ios - 使用 xcodebuild 在模拟器上构建并运行应用程序

Python 日志记录 - 以格式保存到文件

linux - 可以在 USB 中的同一个 URB 中发送和接收数据吗? Linux操作系统

linux - 变量在 shell 脚本中不起作用

bash - 如何用 BASH 中另一个文件的行替换 CSV 文件的列?

bash - AWS CloudFormation 模板不接受 bash 脚本

shell - 命令来验证管道中的输入然后将其传递?

php - Active Directory LDAPS 通过自签名证书启用。但是 PHP 客户端无法通过 AD 服务器进行身份验证

c - make 出了什么问题?

Ruby 或 Bash 或 Grep 正则表达式不适用于 '?',即前一个字符出现 0 次或 1 次