topの結果をrubyプログラムに取り入れようとしています。ただし、トップは、ルビーからサブシェルで呼び出された場合と、シェルで直接実行された場合とでは動作が異なります。具体的には、rubyから実行したときに多くの結果を除外します。
たとえばtop -bn1 | wc -l
、bashで実行すると「133」が返されます。backticksを使用してirbから同じコマンドを実行すると、「17」が返されます。
シェルからの呼び出しとサブシェルからの呼び出しに違いがあるのはなぜですか?ルビースクリプトでトップの完全な出力を取得するにはどうすればよいですか?
ノート
Ubuntu 12.04.1 LTS(正確)を実行しています。この問題は、まったく異なるバージョンのtopを提供するmacOSXでは発生しません。
「-d」遅延フラグを使用しても、動作は変わらないようです。また、反復回数を増やすこともありません。
psがtopと同じ統計の多くを返すことは知っていますが、計算方法が異なるtopのCPU使用率の見積もりに特に関心があります。