4

私のbashスクリプトのcentosボックスにスワップスペースが存在するかどうかを確認したい.したがって、サーバーにスワップスペースがない場合、スワップを作成できます。

私はこのアプローチを試しました

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

スワップがない場合でもswapon -s文字列が返される ため、明らかに機能しませんFilename Type Size Used Priority

4

2 に答える 2

7

これは私にとってうまく機能します:

if free | awk '/^Swap:/ {exit !$2}'; then
    echo "Have swap"
else
    echo "No swap"
fi
于 2014-03-14T20:37:11.553 に答える
1

「swapon」だけを使用してこれを行う手段がわかりません: - 常に少なくとも 1 行を返す - 常に「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 の出力で「devices」を確認します。つまり、次のようになります。

if [[ $(swapon -s | grep -ci "/dev" ) -gt 0 ]] ;  then echo "OK" ; else echo "Bad" ; fi
于 2014-03-14T20:26:48.283 に答える