有时当我运行 skype 时,它会占用大量内存,事实上
我无法关闭它,一切都像疯了一样滞后。但这只是有时
有命令可以跟踪 skype,当它占用大量内存时,就关闭它。就像这样
track skype when memory exceeds XXXX killall skype
答案1
虽然主动设定限制可能是有意义的,但让我们回答 OP 的问题 :-)
在 中编写一个 Upstart 脚本/etc/init/skype-killer.conf
。skype
如果不是skype
,则将其替换为 Skype 的二进制名称,并将500000
(例如 500000 kB = 500 M) 替换为您希望强制执行的 Skype 虚拟内存大小限制 (以 kB 为单位) 以及30
检查间隔的秒数。
此作业将在启动时启动并持续检查 skype 内存使用情况。将其复制到 后/etc/init
,sudo
请执行sudo start skype-killer
以使其运行,或重新启动系统。如果您希望修改内存使用情况,请编辑skype-killer.conf
并执行sudo stop skype-killer; sudo start skype-killer
。
start on startup
stop on shutdown
script
while /bin/true; do
if $(pidof skype); then
test $(cat /proc/`pidof skype`/status | grep "VmSize:" | sed -re s,VmSize:\\s+,, | cut -d" " -f1) -gt 500000 && killall skype
fi
sleep 30
done
end script
答案2
最简单的方法是使用 bashulimit
命令,该命令告诉内核在内存使用量超过特定限制时自动终止 shell(以及其所有子进程)。
- 使用以下命令启动终端
Ctrl-Alt-T
- 输入
ulimit -v N
以设置限制以千字节为单位例如256000
256 MB。 - 使用以下设备启动 Skype
skype
如果 Skype 超出了您通过 设定的限制,内核将自动终止 Skype N
。您可能需要多次尝试不同的N
值来设定一个合适的阈值,以使 Skype 在开始影响您的系统(“挂起”)之前被终止,而不是在正常运行期间被终止。
答案3
Tuminoid 的代码对我来说不起作用。我按照以下方式对其进行了修改。此外,我还降低了内存阈值和休眠时间。
start on startup
stop on shutdown
script
while /bin/true; do
if (pidof skype)
then
test $(cat /proc/`pidof skype`/status | grep "VmSize:" | sed -re s,VmSize:\\s+,, | cut -d" " -f1) -gt 500000 && killall skype
fi
sleep 10
done
end script