gpt4 book ai didi

linux - 在 UNIX/Linux Shell 中同时运行一系列命令的更好方法?

转载 作者:可可西里 更新时间:2023-11-01 11:46:19 27 4
gpt4 key购买 nike

我想知道在 UNIX/Linux 中同时执行一系列命令的最佳实践。假设我有一个程序 program_a,它需要一个参数。我已将参数逐行存储在文件中。所以我写道:

while read line
do
./program_a line > $line.log 2>&1
done < parameter_file

问题是 program_a 的执行需要很长时间。因为每个参数的program_a的每次执行都是独立的,所以我认为这些执行可以同时运行。我不知道它是否与多线程或其他技术有关。以下是我的想法。使用 & 在后台运行每个执行。

while read line
do
./program_a line $line.log 2>&1 &
done < parameter_file

有没有更好的启动多个任务的方法?

最佳答案

您知道xargs 可以并行启动任务吗? Check out -P -n parameters!

一个例子:

xargs -P 4 -n 1 ./program_a < parameter_file

这将启动最多 4 (P=4) 个 program_a 实例来处理每一行 (n=1)。您可能必须将 program_a 包装在 shell 脚本或其他东西中,以便可以适本地重定向子进程 stdout 和 stderr。

这比将进程置于后台更好:假设输入文件中有 1000 行,显然您不希望启动 1000 个进程。 Xargs 允许您将其视为一个队列,P 个工作人员每个消费和处理其中的 n 个项目。

关于linux - 在 UNIX/Linux Shell 中同时运行一系列命令的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20327032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com