#! /bin/bash
#
# clear_ram.sh - Clear as much user-space ram as possible
# (until the OOM_killer gets us)
#
swapoff -a
mem=$(free -b | grep Mem | awk '{print $2}')
mount none -t tmpfs -o size=$mem /tmp
dd if=/dev/zero of=/tmp/zero.dat bs=1M &
echo "17" > /proc/$(pidof dd)/oomadj
while (pidof dd); do kill -USR1 $(pidof dd); done
这是一个shell脚本。 这段代码做了什么?
不是家庭作业
答案 0 :(得分:3)
此脚本
dd
进程设置为Out of Memory杀手的斩波块上的第一个dd
的进程ID及其当前状态,只要它一直运行我说“尝试”因为它应该写入oom_adj
而不是oomadj
,至少对于最近的内核,并且因为最大值是15而不是17。
此处还有一个错误,因为它会打印执行dd
的所有的PID和状态,而不仅仅是脚本中的那个。
正如评论所说,最终内核Out Of Memory杀手将杀死这个过程。
我很确定这是件傻事。我不知道为什么你真的需要以这种方式零记忆。