0

メモリを使用しているプログラムを探していましたが、リークはどこにありますか?

そして、私はそれを見つけました、リークはbashスクリプトにあります。

しかし、どうすればそれが可能になるのでしょうか? Bashスクリプトは、変数の割り当てごとに常に新しいスペースを割り当てますか?

私の bash スクリプトは次のようなものです。この問題を修正する方法を教えてください。

CONF="/conf/my.cfg"
HIGHRES="/data/high.dat"

getPeriod()
{
meas=`head -n 1 $CONF`
statperiod=`echo $meas`
}

(while true
do
        lastline=`tail -n 1 $HIGHRES |cut -d"," -f2`
        linenumber=`grep -n $lastline $HIGHRES | cut -f1 -d:`
        /bin/stat $linenumber
        getPeriod
        sleep $statperiod
done)

編集 #1: high.dat の最後の行

2013-02-11,10:59:13,1,0,0,0,0,0,0,0,0,12.340000,0.330000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24.730000,24.709990,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
4

1 に答える 1

2

そのスクリプトの近似値を使用してメモリ リークを確認できませんでした。そのため、リークは実際にはあなたが考えている場所ではない可能性があります。メモリリークがあったことを理解するために行ったこととともに、完全な動作例を含む、より多くの情報で質問を更新することを検討してください。

とはいえ、ファイルの行数を調べるのにかなり奇妙な方法を選択しました。最も一般的な方法は、標準wcツールを使用することです。

$ wc -l < test.txt
      19
$

注:< fileファイル名を渡す代わりに を使用します。後者を使用すると、ファイル名が stdout に書き込まれるため、編集して削除する必要があります。

$ wc -l test.txt
      19 test.txt
$
于 2013-04-02T05:28:37.357 に答える