我正在编译一个庞大的命令列表(所有命令都执行相同的操作),但由于编译该列表需要很长时间,我希望在完成之前开始执行(每个命令的执行通常需要比创建另一个更长的时间,所以没有真正的列表枯竭的风险)。
执行命令列表的正常方法是编写一个列出命令的 shell 脚本,但是当我开始执行脚本时,我不能再添加它了。
到目前为止我发现的方法是将命令放入command.list
并拥有parallel --jobs 1 --line-buffer :::: command.list
,但由于它涉及使用parallel
(我正在使用 GNU 并行,我不知道它是否可以与 more-utils 中的程序一起使用)用于非并行执行事物,我认为这有点滥用parallel
.
有没有更简单的方法呢?如果我搞砸了某些事情并且列表确实用完了,那么可以跟踪哪些命令已被执行,这会很好。
来自:https ://www.gnu.org/software/parallel/man.html#example-gnu-parallel-as-queue-system-batch-manager
这将为您提供已完成作业的记录 (my.log)。
GNU Parallel 版本 20220222 将仅在添加作业n+1时输出作业n(并将其添加到
my.log
)。如果这是不可接受的,只需添加另一个虚拟作业:旧版本中的行为略有不同。