我正在寻找可能导致我的Linux计算机使用大量内存的命令? 有什么指针吗?
我想在后台运行它并执行其他需要高RAM使用率的任务。
谢谢!
答案 0 :(得分:6)
那个会导致bash使用不断增长的内存:
while read f; do arr[$((i++))]=$f; done < /dev/urandom
另一个困难的方法可能是(小心):
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
你也可以将它与叉炸弹混合......但我会避免它
答案 1 :(得分: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的速度使用高达1 GB的容量。作为额外的奖励,pv
将向您显示当前的使用率和到目前为止的总使用量。当然,这也可以通过以前的变体来完成:
yes | tr \\n x | head -c $BYTES | pv | grep n
只需插入| pv |
部分即可显示当前状态(吞吐量和总数,默认情况下,我认为 - 否则请查看man(ual)页面。)
答案 2 :(得分:0)
ulimit -m
可用于对进程施加人为内存限制。
答案 3 :(得分:0)
使用此风险需要您自担风险:
:(){:|:&amp; };:
=&GT;你的公羊爆炸