4

我想检查我的 bash 脚本中的 centos 盒子上是否存在交换空间。因此在现金服务器上没有交换空间,然后我可以创建交换。

我试过这种方法

if [[ -n $(swapon -s) ]]; then
    :
else
   mkswap /dev/vda2 &> /dev/null
   swapon /dev/vda2
fi

显然它不会起作用,因为即使没有交换swapon -s也会返回一个字符串 Filename Type Size Used Priority

4

2 回答 2

7

这对我很有效:

if free | awk '/^Swap:/ {exit !$2}'; then
    echo "Have swap"
else
    echo "No swap"
fi
于 2014-03-14T20:37:11.553 回答
1

我看不到仅使用“swapon”的方法,因为它:-始终返回至少一行-始终返回错误代码“0”

您可以“计算行数”,如果少于 2,则选择“其他”分支,即

if [[ $(swapon -s | wc -l) -gt 1 ]] ; then echo "OK" ; else echo "Bad" ; fi

好的

if [[ $(swapon -s | wc -l) -gt 2 ]] ; then echo "OK" ; else echo "Bad" ; fi

坏的

或者只是在 swapon 输出中检查“设备”,即:

if [[ $(swapon -s | grep -ci "/dev" ) -gt 0 ]] ;  then echo "OK" ; else echo "Bad" ; fi
于 2014-03-14T20:26:48.283 回答