Script para testar a troca e, em seguida, sair normalmente

1

Estou procurando um script que teste a troca e saia normalmente se a troca for encontrada como parte deste script:

#!/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
    
por Peter 11.03.2014 / 17:28

2 respostas

2

A falta de swapinfo (* BSD), swapon -s (troca de uso) é a próxima melhor coisa.

Qualquer um dos itens a seguir deve funcionar, configurando $? para 0 se um ou mais swaps estiverem configurados:

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

Os dois últimos comandos são provavelmente os mais robustos, os dois primeiros não confirmam a existência de swap quando somente arquivos de swap são usados (um tanto incomum, mas possivelmente encontrados durante um Instalação do sistema operacional ou em sistemas sem disco que trocam por NFS ).

Você pode usar isso para detectar (ou contar, use -c em vez de -q ) swaps:

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

(Isso também conta a troca de /dev/nbd dispositivos de bloco de rede , os dispositivos de bloco de swap são contados como "partição" trocar dispositivos, pelo menos até linux-3.13.5.)

    
por 11.03.2014 / 20:57
1

Não tenho certeza se cada troca em cada sistema sempre contém "/ dev" ... E / ou se você quer saber quantos swaps estão em uso ...

Eu acho que o / proc / swaps deve ter uma linha extra para cada swap que está em uso, e se não houver swap, então é apenas uma linha (de títulos). Então, wc -l deve informar o número de linhas e, portanto, o número de swaps - 1.

Portanto, isso deve fornecer o número de swaps em uso:

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

(ou se você realmente odeia gato por algum motivo,)

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

e pode ser testado se = 0 ou algo assim

    
por 14.03.2014 / 19:57

Tags