0
在进程运行时将STDOUT输出到文件的最佳方式是什么?我制作了一个名为“runMyScript”的测试脚本,它有一些echo语句,其间有些睡眠。在执行过程中将STDOUT输出到带有ruby的文件
我使用Rails和Sidekiq运行该工人:
class RunBuildWorker
include Sidekiq::Worker
sidekiq_options retry: false, backtrace: true
def perform(file_name)
IO.popen('runMyScript blah blah blah blah') do |io|
File.open(FILE_MANAGER.configuration_directory + file_name, 'a') do |file|
while (line = io.gets)
file.write line
end
end
end
end
end
不幸的是,直到该过程完成它不写入文件。在执行过程中如何写入文件?
更新:
这是脚本当前的内容。
COUNTER=0
while [ $COUNTER -le 5 ]
do
echo "The counter is $COUNTER"
sleep 1
COUNTER=$(($COUNTER + 1))
done
我应该提到这只是一个测试脚本,所以我可以尝试重定向输出,有一个被写了另一支球队,我需要实际使用在未来的另一个剧本。
这似乎完成了我之前做的事情。我认为它会起作用,但是当在输出文件上做一个'tail -f'时,它只会在脚本完成后才会出现。 – ardavis 2013-03-27 16:37:20
好像您的脚本不会持续冲洗它的打印件。你能举一个“runMyScript等等等等等等等”的小例子吗?问题应该位于您的脚本中。 – gorootde 2013-03-27 16:39:52
好的,我会更新我的问题。 – ardavis 2013-03-27 16:40:22