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

时间:2014-03-14 14:22:22

标签: bash swapfile

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

我试过这种方法

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

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

2 个答案:

答案 0 :(得分:5)

这对我很有用:

if free | awk '/^Swap:/ {exit !$2}'; then
    echo "Have swap"
else
    echo "No swap"
fi

答案 1 :(得分:0)

我没有看到使用“交换”的方法来做到这一点。既然如此: - 始终至少返回一行 - 始终返回错误代码' 0'

你可以计算行数'如果少于2,那么请选择' else'分支,即。

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