我一直在寻找哪个程序正在使用我的记忆,泄漏在哪里?
而且,我创建了它,泄漏是在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
答案 0 :(得分:2)
我无法通过该脚本的近似来验证内存泄漏,因此泄漏实际上可能不在您认为的位置。考虑使用更多信息更新您的问题,包括完整的工作示例以及您所做的事情,以确定您有内存泄漏。
那就是说,你已经选择了一种奇怪的方法来找出一个文件有多少行。最常用的方法是使用标准wc
工具:
$ wc -l < test.txt
19
$
注意:使用< file
而不是传递文件名,因为后者会导致文件名写入stdout,然后你必须编辑它:
$ wc -l test.txt
19 test.txt
$