如何限制脚本的内存使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何限制脚本的内存使用?相关的知识,希望对你有一定的参考价值。
我使用的脚本消耗了大量的ram内存,以至于它会冻结我的计算机并出错。
你怎么能限制这个特定脚本的内存使用量?
我用debian 9(linux)
谢谢。
这是基本脚本
path="/home/xxx"
mesMenosUnDia=$(date +%m --date='-1 month')
fecha=$(date +"%Y-$mesMenosUnDia-%d")
echo "find"
list=$(find /home/xxx -type f)
listArray=($list)
for i in "${listArray[@]}"
do
onlyDate=$(echo $i | grep -P 'd{4}-d{2}-d{2}' -o)
if [[ $onlyDate < $fecha ]];then
rm $i
else
fi
done
答案
您可以限制与ulimit一起使用的最大内存。缺点是脚本将达到极限并死亡。但是你的计算机不会挂起,因为当脚本要求太多内存时,它会被杀死。
您的脚本使用了太多内存,因为您在内存中存储了太多内容。具体来说,您将find命令的输出捕获到一个变量中,然后将所有这些数据复制到一个数组中,这样整个内容就会重复。
而不是将所有内容保存在内存中,将其放入磁盘。
path="/home/xxx"
mesMenosUnDia=$(date +%m --date='-1 month')
fecha=$(date +"%Y-$mesMenosUnDia-%d")
echo "find"
find /home/xxx -type f > tmp
for i in $(<tmp)
do
onlyDate=$(echo $i | grep -P 'd{4}-d{2}-d{2}' -o)
if [[ $onlyDate < $fecha ]];then
rm $i
else
fi
done
rm tmp
以上是关于如何限制脚本的内存使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
如何在 Toad for Oracle 中使用自定义代码片段?
如何在.htaccess文件中设置PHP最大执行时间和脚本内存限制