1

Я ищу сценарий, который проверяет swap и корректно завершает работу, если swap найден как часть этого сценария:

#!/bin/bash
# This script formats and mounts /dev/sdc

{
if [ ! -f /scripts/alert ]; then
    echo "File not found!"
    exit 0
fi
} 

mkswap /dev/sdc && swapon /dev/sdc

#END

2 ответа2

2

Отсутствие swapinfo (* BSD), swapon -s (использование swap) является следующим лучшим решением.

Любое из следующего должно помочь, установив $? в 0, если настроен один или несколько обменов:

/sbin/swapon -s | grep -q /dev
grep -q /dev /proc/swaps
free | awk '/Swap/{ exit(!$2)}'
awk '/SwapTotal/ {exit (!$2)}' /proc/meminfo

Последние две команды, вероятно, являются наиболее надежными, первые две не будут (как есть) подтверждать существование подкачки, когда используются только файлы подкачки (что несколько необычно, но, возможно, обнаруживается при установке ОС или в бездисковых системах, которые меняются местами) NFS).

Вместо этого вы можете использовать это для обнаружения (или подсчета, использования -c вместо -q) перестановок:

grep -qE "(partition|file)" /proc/swaps

(Это также будет считать swap на сетевых блочных устройствах /dev/nbd блочные устройства swap считаются как swap-устройства "раздела", по крайней мере, до linux-3.13.5.)

1

Я не уверен, что каждый своп в каждой системе всегда содержит "/dev" ... И / или если вы хотите узнать, сколько свопов используется ...

Я думаю, что /proc /swaps должен иметь дополнительную строку для каждого используемого свопа, и если нет свопа, то это только одна строка (из названий). Таким образом, wc -l должен указывать количество строк и, следовательно, количество перестановок - 1.

Так что это должно дать количество используемых свопов:

 swapnum=$(( $(cat /proc/swaps|wc -l) - 1 ))

(или если вы действительно ненавидите кошку по какой-то причине)

 swapnum=$(( $(wc -l < /proc/swaps) - 1 ))

и может быть проверено, если = 0 или еще много чего

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .