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