Проверьте, существует ли пространство подкачки в 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