如何限制脚本的内存使用?

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 中使用自定义代码片段?

如何从applet增加发布请求内容限制

如何在.htaccess文件中设置PHP最大执行时间和脚本内存限制

如何在.htaccess文件中设置PHP最大执行时间和脚本内存限制

使用 PHP 上传图片并达到脚本内存限制