【问题标题】:Abnormal memory usage by a simple bash script一个简单的 bash 脚本异常的内存使用
【发布时间】:2018-03-05 08:28:00
【问题描述】:

我试图弄清楚为什么这个简单的 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 内存

【问题讨论】:

  • 你确定内存被你的 bash 脚本而不是 TeamViewer 本身吃掉了吗?您可以使用top -p123 -p789,其中123789 是您的脚本和团队查看器的PID。
  • 是的,我正在真空中测试这个脚本。没有其他进程正在运行。

标签: linux bash memory-leaks xdotool


【解决方案1】:

不确定到底发生了什么,但问题已经以某种方式自行解决。运行此脚本不再占用内存。

#!/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

我的测试方法可能存在缺陷,导致我相信它们都占用了内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-06
    • 2013-09-02
    • 2014-01-23
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多