【发布时间】:2011-03-05 16:12:29
【问题描述】:
我想要一个 bash 脚本在后台运行一个程序(获取多个变量和一个输入文件),但我希望该脚本一次只处理一个输入文件(一个目录中的所有输入文件)。例如
#!/bin/sh
for file in *
do
~/FrameDP/bin/FrameDP.pl --cfg ~/FrameDP/cfg/FrameDP.cfg --no_train --infile /home/bop08olp/FrameDP/data/"$file" --outdir ~/FrameDP/test
done
我猜上面的脚本不会在每次处理单独的输入文件之间等待,而是一次启动它们。该程序生成许多子进程。任何指针表示赞赏。谢谢!
【问题讨论】:
-
该代码中没有任何内容暗示它不会等待完成。
-
这看起来像this package,它似乎已经进行了并行处理。不过,我认为我们需要了解更多细节才能准确了解问题所在;股票
FrameDP.pl本身并没有出现在背景中。 -
是的,就是那个包,它确实做并行处理,但是在一个输入文件上。我想在几个输入文件上按顺序运行整个事情。也就是说,只需让它搅动输入文件,产生输出,然后在文件夹中获取下一个输入文件并重新开始。我可以通过在股票行的末尾添加一个 & 号来作为背景吗?
-
谢谢伊格纳西奥。我没有尝试它,因为我已经在运行程序(占用了所有 CPU)。我只是假设它不会等待基于在线研究问题的完成。但我会在我的机器完成当前工作后尝试一下。
-
按原样试用脚本,它只是循环并获取每个文件,同时为每个文件启动一个新进程。欢迎任何帮助让它等待每个作业完成,然后再开始使用新的输入文件。谢谢。