我有一个带有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" ]
答案 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
...