2010-11-12 122 views
2

我正在寻找可能导致我的Linux计算机使用大量内存的命令? 任何指针?如何让我的电脑使用大量的RAM?

我想在后台运行该程序并执行一些其他需要高RAM内存的任务。

谢谢!

+2

写一个C程序,调用malloc(一百万兆字节)。 – 2010-11-12 01:27:46

+0

我需要在bash中进行此操作。 – abc 2010-11-12 01:30:45

+0

@Travis Dr. Evil - 是你吗? – Josephine 2010-11-12 01:32:45

回答

6

那一个会导致越来越多的内存由bash使用:

while read f; do arr[$((i++))]=$f; done < /dev/urandom 

另一个困难的方法可能是(是c areful):

while read f; do arr="$arr:$arr:$arr:$arr:$f"; done < /dev/urandom 

柔和版本:

while read f; do arr="$arr:$f"; done < /dev/urandom 

回收内存调用的部分:

unset arr 

你也可以用叉子炸弹混吧......但我会避免它

+0

谢谢,它的嵌入式Linux和阵列不工作! :( – abc 2010-11-12 01:53:13

+0

更新,如果没有阵列可用,使用字符串 – mpapis 2010-11-12 01:57:24

+0

谢谢这有助于!! – abc 2010-11-12 02:07:10

0

ulimit -m可用于对进程施加人为的内存限制。

+0

谢谢,但我正在寻找可能导致计算机使用大量内存的命令/逻辑。我的任务很难使用ulimit。 – abc 2010-11-12 01:33:54

0

使用此风险自负:

:(){:|:&} ;:

=>爆炸在您的RAM

+1

,宁愿拿处理器的电源不是RAM本身......但也许我错了 – mpapis 2010-11-12 01:37:38

+0

无论如何,这不是什么“ABC”需要:/ – malletjo 2010-11-12 01:40:51

+1

是的,这不会解决目的。我在嵌入式Linux上,所以fork炸弹完全掌控了cpu,我什么也做不了。另外,shell没有实现数组。 – abc 2010-11-12 01:55:34

1

当前的答案将尝试使用更多的RAM,直到它完全不在RAM内。对于更可控的方式,如果你有基本的GNU工具,你可以这样做:

yes | tr \\n x | head -c $BYTES | grep n 
# Protip: use `head -c $((1024*1024*2))` to calculate 2MB easily 

这工作,因为grep的加载到RAM中的数据的整条生产线。由yes替代换行符生成的行将会无限长,但受限于head$BYTES字节,因此grep将在内存中加载$ BYTES。 Grep本身对我来说就像100-200KB一样使用,您可能需要将其减去更精确的数量。

如果你也想加入一个时间限制,这可以很容易地在bash完成(不会sh工作):

cat <(yes | tr \\n x | head -c $BYTES) <(sleep $SECONDS) | grep n 

<(command)事情似乎鲜为人知,但往往是非常有用的在这里就可以了,更多的信息:http://tldp.org/LDP/abs/html/process-sub.html

如果你有pv,想慢慢增加RAM使用:

yes | tr \\n x | head -c $BYTES | pv -L $BYTESPERSEC | grep n 

例如:

yes | tr \\n x | head -c $((1024*1024*1024)) | pv -L $((1024*1024)) | grep n 

将以每秒1MB的速率使用多达一千兆字节。作为额外的奖励,pv将向您显示目前的使用率和总使用率。当然,这也与之前的变种来完成:

yes | tr \\n x | head -c $BYTES | pv | grep n 

只需插入| pv |部分将显示您当前的状态(吞吐量和总,在默认情况下,我认为 - 否则看到的人(UAL)页)。

相关问题