我有一个我试图运行的示例脚本:
#!/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
,它基本上只停留在那里直到我杀了它。有没有办法可以调试,我的机器上可能出现什么问题?
如果它是您的完整脚本,您可以这样做,这更短,更快:
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
。