我试图找出为什么这个简单的bash脚本在运行时内存占用不断增加
#!/bin/bash
while true
do
pid=$(xdotool search --name "TeamViewer")
if [ ! -z "$pid" ]; then
xdotool windowminimize $pid
fi
sleep 1
done
当我运行watch cat /proc/meminfo
并运行脚本时,我看到memFree
和memAvailable
值以稳定的速率下降。并且它将继续发生,直到系统内存不足并且必须回退到交换,这会导致我的系统出现问题
脚本的原始版本(下面)使用内存的速度更高,因为--sync
,我认为
#!/bin/bash
while true
do
xdotool search --name --sync "TeamViewer" windowminimize
sleep 5
done
任何帮助将不胜感激
我正在使用2011 Macbook Pro运行Linux Mint 18.1和8GB内存
答案 0 :(得分:0)
不确定究竟发生了什么,但问题已经以某种方式解决了。运行此脚本不再占用内存。
#!/bin/bash
while true
do
pid=$(xdotool search --name "TeamViewer")
if [ ! -z "$pid" ]; then
xdotool windowminimize $pid
fi
sleep 1
done
这个仍然可以。
#!/bin/bash
while true
do
xdotool search --name --sync "TeamViewer" windowminimize
sleep 5
done
我的测试方法可能存在缺陷,导致我相信它们都会记忆。
答案 1 :(得分:0)
我可能迟到了,但我找到了造成您问题的原因。这是因为您使用的xdotool的旧版本存在大量内存泄漏。这是他们提交的修复程序,这些修复程序仅在版本3.2016中提供:https://github.com/jordansissel/xdotool/commit/15f8a7bb7f805940c415c5bc8ac8e7f2fb3b75a5#diff-90694289f0e4375c3600aa647543f692
因此,如果必须使用“ --sync”键,则应安装新版本的xdotool: https://launchpad.net/ubuntu/+source/xdotool/1:3.20160805.1-3
或从源代码自己构建。