正确执行shell`time`命令的并行顺序

时间:2019-04-02 21:26:20

标签: macos shell gnu-parallel

我需要执行下面的命令(作为脚本的一部分),但是我不知道以什么顺序放置东西以便其正确执行。我想做的是将 file.smt2 作为 optimathsat 的输入,执行它,获取执行时间。但我希望使用所有CPU内核并行完成多次。

parallel -j+0 time Desktop/optimathsat-1.5.1-macos-64-bit/bin/optimathsat < file.smt2 &>results.csv 

我在文件的开头添加了#!/bin/bash -x,以查看发生了什么,这就是输出:

+ parallel -j+0 time file.smt2
parallel: Warning: Input is read from the terminal. You are either an expert
parallel: Warning: (in which case: YOU ARE AWESOME!) or maybe you forgot.
parallel: Warning: ::: or :::: or -a or to pipe data into parallel.

...从第一行开始,我可以知道顺序是错误的。从第2、3和4行开始,缺少语法。我该如何解决?

1 个答案:

答案 0 :(得分:0)

所以我认为您不关心结果,而只关注时间:

seq $(parallel --number-of-threads) |
  parallel -j+0 -N0 --joblog my.log 'Desktop/optimathsat-1.5.1-macos-64-bit/bin/optimathsat < file.smt2'
cat my.log

-N0插入0个参数。

请考虑阅读GNU Parallel 2018(printedonline)-至少是第1 + 2章。您的命令行将对此表示感谢。