在执行期间使用ruby将标准输出到文件
在进程运行时,将标准输出输出到文件的最佳方式是什么?我制作了一个名为“runMyScript”的测试脚本,它有一些echo语句,中间有一些sleep语句 我正在使用Rails和Sidekiq运行此worker:在执行期间使用ruby将标准输出到文件,ruby,sidekiq,Ruby,Sidekiq,在进程运行时,将标准输出输出到文件的最佳方式是什么?我制作了一个名为“runMyScript”的测试脚本,它有一些echo语句,中间有一些sleep语句 我正在使用Rails和Sidekiq运行此worker: class RunBuildWorker include Sidekiq::Worker sidekiq_options retry: false, backtrace: true def perform(file_name) IO.popen('runMySc
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}")
这会将打印到标准输出的任何输出重定向到您的文件(重定向在控制台级别完成)。如果要附加到文件,只需将
>
替换为>
,这似乎完成了我之前所做的工作。我原以为它会工作,但在输出文件上执行tail-f
时,它只在脚本完成后才会出现。似乎您的脚本没有连续刷新打印。你能给我举一个“runMyScript”的小例子吗?问题应该在您的脚本中。感谢您迄今为止的帮助,我对使用bash文件相当陌生。哦!那确实管用!我只需要重新启动sidekiq程序。我猜它没有正确地拾取我的更改。