如何使用 gnu parallel 在 shell 脚本中逐个运行命令

如何使用 gnu parallel 在 shell 脚本中逐个运行命令

我有这样的命令

time parallel -j 40 :::: filetoprocess.sh
time parallel -j 40 :::: filetoprocess2.sh

我想一个接一个地运行这些命令,即在time parallel -j 40 :::: filetoprocess.sh 完成后,time parallel -j 40 :::: filetoprocess2.sh但这里两个命令并行运行,
我已在 shell 脚本文件中写入这些命令,abc.sh然后我将其运行为nohup sh abc.sh &

这就是我正在做的事情
sh creatingcommds.sh 74.9997891 76.1575846 31.6355471 30.6397432 /cats/rallisdata/cropdatazone1/new43REQ 43REQ_20170513 sleep 2 && time parallel -j 40 :::: filetoprocess2.sh && sleep 2 && sh creatingcommds.sh 74.9997891 76.1575846 31.6355471 30.6397432 /cats/rallisdata/cropdatazone1/new43REQ 43REQ_20170523 sleep 2 && time parallel -j 40 :::: filetoprocess3.sh

creatingcommds.sh文件创建了 80 个,供使用,time parallel -j 40 :::: filetoprocess2.sh但在这里我收到文件未找到错误。

答案1

您需要的是&&乔治在评论中提到的方法。

&& 表示仅当前一个命令返回退出值 0 时,才会运行下一个列出的命令。||如果您只想在第一个命令失败或返回非 0 的值时运行下一个命令,也可以使用。

因此,对于你的情况来说,情况是这样的:

time parallel -j 40 :::: filetoprocess.sh && time parallel -j 40 :::: filetoprocess2.sh

这意味着一旦第一个命令成功完成它就会运行,如果第一个命令失败它将不会运行。

尝试一下

echo test 1 `sleep 2` && echo test 2 `sleep 2` && echo test 3 `sleep 2`

相关内容