【发布时间】:2018-12-07 20:09:52
【问题描述】:
我正在使用 GNU 并行为许多不同的数据集运行 Stata do 文件。
我有一个包含以下内容的 Bash 脚本:
parallel -a arguments.txt -j 3 stata -b do $dofileloc {}
由于do 文件对于每个数据集都有几个不同的部分,我希望“实时”显示进度(例如,在 Stata do 的一部分之后显示“为XYZ 加载的数据”数据集的文件完成等)。
所以我想将消息从 Stata 重定向到命令行,但我在执行此操作时遇到了麻烦。
如果我不在批处理模式下运行 Stata,我可以看到所有内容,这有点乱。我曾尝试在 Stata 中使用 shell 命令,但我似乎无法找出正确的组合。
如果有任何提示,我将不胜感激。
【问题讨论】:
-
据我所知,您无法做到这一点——至少实时无法做到。为什么不为每个数据集将
do文件拆分成更小的文件?然后,您可以在每个do文件结束后简单地在 bash 脚本中包含一条消息。 -
可能在最后添加一个过滤器?
parallel ... | grep "loaded" -
感谢您的帮助和对延迟的歉意,我有很多事情要做,并且在回复之前试图在这个问题上取得一些进展。不幸的是,过滤器不起作用。我不想为每个数据集拆分 do 文件的原因是因为它是所有数据集的相同代码(其中有 30 多个),这就是我首先并行化该过程的原因。我怀疑 Stata 的批处理模式可能与这个问题有关——这可能是为什么无法做到这一点的原因。再次感谢!
标签: bash stata gnu-parallel