在进程运行时将STDOUT输出到文件的最佳方法是什么?我做了一个名为"runMyScript"的测试脚本,它有一些echo语句,中间有一些睡眠。
我正在使用Rails和Sidekiq来运行这个worker:
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
我应该提到这只是一个测试脚本,所以我可以尝试重定向输出,还有另一个脚本是由另一个团队编写的,我将在未来实际使用
system("runMyScript blah blah blah blah > #{FILE_MANAGER.configuration_directory + file_name}")
这会将任何打印到标准输出的输出重定向到您的文件(重定向是在控制台级完成的)。如果要在文件中追加内容,只需将>
替换为>>
。