2014-03-14 2 views
2

Я хочу проверить, существует ли пространство подкачки в поле centos в моем сценарии bash. Таким образом, наличные деньги на сервере не имеют места подкачки, тогда я могу создать swap.Проверьте, существует ли пространство подкачки в bash

Я попробовал этот подход

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

Очевидно, что это не будет работать, так как даже если нет замены swapon -s не будет возвращать строку Filename Type Size Used Priority

+1

См http://superuser.com/questions/727621/script-to-test-for-swap-then-exit-gracefully –

ответ

0

Я не вижу средства, чтобы сделать это просто используя «swapon», так как он: - всегда возвращает хотя бы одну строку - всегда возвращает код ошибки '0'

Вы можете «подсчитать строки» и если l ESS затем 2 затем взять 'еще' ветвь, т.е.

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

OK

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

Bad

Или просто проверить 'устройств' в выводе swapon, а именно:

if [[ $(swapon -s | grep -ci "/dev") -gt 0 ]] ; then echo "OK" ; else echo "Bad" ; fi 
3

Эта работа S хорошо для меня:

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