2010-11-12 12 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)頁)。

相關問題