简单的bash脚本

时间:2017-09-24 05:56:32

标签: linux bash memory-leaks xdotool

我试图找出为什么这个简单的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并运行脚本时,我看到memFreememAvailable值以稳定的速率下降。并且它将继续发生,直到系统内存不足并且必须回退到交换,这会导致我的系统出现问题

脚本的原始版本(下面)使用内存的速度更高,因为--sync,我认为

#!/bin/bash

while true
do
    xdotool search --name --sync "TeamViewer" windowminimize
    sleep 5
done

任何帮助将不胜感激

我正在使用2011 Macbook Pro运行Linux Mint 18.1和8GB内存

2 个答案:

答案 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

或从源代码自己构建。