2016-07-11 12 views
0

私は20秒ごとにbashスクリプトを使用してvmstatを実行し、その結果を数時間ファイルに出力しようとしています。私のスクリプトは次のようになります。vmstatがファイルに出力を書き込んでいません

#!/bin/bash 
vmstat 20 1000 | ./timestamp.pl >> vmstat.txt 

timestamp.plスクリプトは次のようになります。私は、vmstatの出力の各行にタイムスタンプを挿入するためにtimestamp.plを呼び出しています

#!/usr/bin/perl 

while(<>){ 
print localtime() . "$_ ";} 

。このスクリプトはSunOS上で約1時間実行されており、vmstat.txtファイルには何も表示されません。どのようなアイデアがこれを改善するか、それともvmstat.txtファイルに出力を書き込むのか?

+1

再現することはできませんこの問題。 Solaris 11でうまく動作します。 – Cyrus

+0

システムに 'unbuffer'があるかどうか確認してください。' vmstat'行にあらかじめ保留しておいてください。あるいは 'stdbuf -o0 program |のように' stdbuf'を読み書きすることができるかどうかを見てください。 stdbuf -i0 script'を実行します。がんばろう。 – shellter

+0

@Cyrus、システムはsolaris 10です。 – user1471980

答えて

2

のどちらか(スクリプトはおよそ5h30min後に終了します)、またはループの前に、この行を追加することで、あなたのperlスクリプト内でバッファリングを無効にperlの出力をフラッシュするために十分な時間を待つ:

$|++; 
関連する問題