有没有办法调试 GNU Parallel?
Posted
技术标签:
【中文标题】有没有办法调试 GNU Parallel?【英文标题】:Is there a way to debug GNU Parallel? 【发布时间】:2019-03-08 19:44:26 【问题描述】:我有一个正在尝试运行的示例脚本:
#!/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
,它基本上一直停留在那里,直到我杀死它。有什么方法可以调试,我的机器可能出了什么问题?
【问题讨论】:
【参考方案1】:如果它是你的完整脚本,你可以这样做,它更短更快:
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
但我觉得这不是您的完整脚本,您从parallel
调用sem
是有原因的。
让我印象深刻的第一件事是你重定向标准输出两次:
sem [...] >> sweep_srcq.csv | cat
您希望将标准输出附加到 .csv 吗?或者你希望它发送到cat
?如果你想要两者,你应该改用tee -a
。
您的问题可能只是服务器对这一行的解释不同,并且停滞的服务器运行一个从您的键盘读取的cat
。
【讨论】:
以上是关于有没有办法调试 GNU Parallel?的主要内容,如果未能解决你的问题,请参考以下文章