Проверьте, существует ли пространство подкачки в bash

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

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

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

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

2 ответа

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

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

Я не вижу способа сделать это, просто используя "swapon", поскольку он: - всегда возвращает хотя бы одну строку - всегда возвращает код ошибки "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
Другие вопросы по тегам