如果内存达到80%,需要触发脚本

时间:2018-04-09 16:51:35

标签: bash shell out-of-memory heap-dump

我有一个带有HeapDump的bash脚本。但是当我的机器内存达到80%时,我需要自动触发它。

任何人都可以帮我写剧本吗?我在AWS上运行我的环境。

到目前为止,这是我的尝试:

#!/bin/bash
threshold=40
threshold2=45
freemem=$(($(free -m |awk 'NR==2 {print $3}') * 100))
usage=$(($freemem / 512))
if [ "$usage" -gt "$threshold" ]

1 个答案:

答案 0 :(得分:1)

shell的工作方式是检查每个程序的退出代码,以决定下一步该做什么。因此,您希望重构代码,以便在内存低于80%时返回0(成功),否则返回其他数字。

在shell中进行算术充其量是脆弱的,如果你想要浮点数而不是整数则不可能。您已经在使用Awk - 为了简单和高效,将所有逻辑重构为Awk。

#!/bin/bash
# declare a function
freebelowthres () {
    free -m |
    awk -v thres="$1" 'NR==2 {
        if ($3 * 100 / 512 > thres) exit(1)
        exit(0) }'
}

用法:if freebelowthres 80; then ...