有没有办法调试GNU Parallel?

问题描述 投票:1回答:1

我有一个我试图运行的示例脚本:

#!/bin/zsh

echo "i,rt,fifo,depth,rate,burst" > sweep_srcq.csv

parallel --bar --gnu -j4 --header : \
    '
    sem --id 0 echo {i},{rt},{fifo},{depth},{rate},{burst} >> sweep_srcq.csv | cat'\
    ::: i 5 \
    ::: rt 0 1 \
    ::: fifo 1 \
    ::: rate 5 6 8 A D 14 21 32 64 \
    ::: depth 128 \
    ::: burst 1 \

当我在我的一台机器上运行这个脚本时,它执行得很完美,我看到了结果文件:

i,rt,fifo,depth,rate,burst
5,0,1,128,8,1
5,0,1,128,5,1
5,0,1,128,A,1
5,0,1,128,6,1
5,0,1,128,D,1
5,0,1,128,14,1
5,0,1,128,21,1
5,0,1,128,32,1
5,0,1,128,64,1
5,1,1,128,5,1
5,1,1,128,6,1
5,1,1,128,8,1
5,1,1,128,A,1
5,1,1,128,D,1
5,1,1,128,14,1
5,1,1,128,21,1
5,1,1,128,32,1
5,1,1,128,64,1

但是在我的其他一台机器上,这段代码不会执行..

我的计时器停留在0s,它基本上只停留在那里直到我杀了它。有没有办法可以调试,我的机器上可能出现什么问题?

enter image description here

gnu gnu-parallel
1个回答
0
投票

如果它是您的完整脚本,您可以这样做,这更短,更快:

echo "i,rt,fifo,depth,rate,burst" > sweep_srcq.csv

parallel --bar -j4 --header : echo {i},{rt},{fifo},{depth},{rate},{burst} \
  ::: i 5 \
  ::: rt 0 1 \
  ::: fifo 1 \
  ::: rate 5 6 8 A D 14 21 32 64 \
  ::: depth 128 \
  ::: burst 1 \
  >> sweep_srcq.csv

但我觉得这不是你的完整剧本,而且你有理由从sem打电话给parallel

让我印象深刻的第一件事是你将stdout重定向两次:

sem [...] >> sweep_srcq.csv | cat

你想将stdout附加到.csv吗?或者你想将它发送到cat?如果你想要两者,你应该使用tee -a

您的问题可能只是服务器以不同方式解释此行,并且停顿的服务器运行从键盘读取的cat

© www.soinside.com 2019 - 2024. All rights reserved.