检查bash中是否存在交换空间

4
我希望在我的bash脚本中检查Centos服务器上是否存在Swap空间,因此如果服务器上没有Swap空间,我可以创建Swap。我尝试了以下方法:
if [[ -n $(swapon -s) ]]; then
    :
else
   mkswap /dev/vda2 &> /dev/null
   swapon /dev/vda2
fi

很显然,即使没有交换分区,swapon -s 命令也会返回以下字符串:文件名 类型 大小 已用 优先级

1
请访问http://superuser.com/questions/727621/script-to-test-for-swap-then-exit-gracefully。 - mr.spuratic
相关:https://unix.stackexchange.com/questions/23072/how-can-i-check-if-swap-is-active-from-the-command-line/537054 - Ciro Santilli OurBigBook.com
2个回答

10
这对我很有用:
if free | awk '/^Swap:/ {exit !$2}'; then
    echo "Have swap"
else
    echo "No swap"
fi

1
我不认为只使用“swapon”就能完成这个任务,因为: - 它总是至少返回一行 - 它总是返回错误代码“0”
你可以“计算行数”,如果小于2,则采用“else”分支,即:
如果[[ $(swapon -s | wc -l) -gt 1 ]];则echo“OK”;否则echo“Bad”;fi
好的
如果[[ $(swapon -s | wc -l) -gt 2 ]];则echo“OK”;否则echo“Bad”;fi
坏的
或者仅检查swapon输出中的“设备”,即:
if [[ $(swapon -s | grep -ci "/dev" ) -gt 0 ]] ;  then echo "OK" ; else echo "Bad" ; fi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接