プロセスの実行中に STDOUT をファイルに出力する最良の方法は何ですか? 「runMyScript」と呼ばれるテスト スクリプトを作成しました。これには、いくつかのスリープを間に挟んだいくつかの echo ステートメントがあります。
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
これは単なるテスト スクリプトであるため、出力のリダイレクトを試みることができます。別のチームによって作成された別のスクリプトがあり、今後実際に使用する予定です。