スワップをテストして正常に終了するスクリプト


1

私はスワップをテストし、スワップがこのスクリプトの一部として見つかった場合は正常に終了するスクリプトを探しています。

#!/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

1
"cat / proc / swaps"がお手伝いします
maxxvw

私はそれについて考えました、しかし、私はそれがif else声明でうまくいくかどうか疑います
Peter

回答:


2

欠けている swapinfo (* BSD)、 swapon -s (スワップの使用)は次に良いことです。

次のいずれかがトリックを設定する必要があります $? 1つ以上のスワップが設定されている場合は0になります。

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

最後の2つのコマンドはおそらく最も堅牢で、最初の2つは(そのままでは)スワップの存在を確認しません。 のみ スワップファイルが使用されます(多少変わっていますが、OSのインストール中、またはディスクレスシステムで NFSを介したスワップ

あなたは検出するために代わりにこれを使うことができます。 -c の代わりに -q )スワップ:

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

(これもスワップをカウントします /dev/nbd ネットワークブロックデバイス スワップブロックデバイスは、少なくともlinux-3.13.5までは「パーティション」スワップデバイスとしてカウントされます。)


1

すべてのシステムのすべてのスワップに常に "/ dev"が含まれているかどうかわからない...そして/または、使用しているスワップの数を知りたいのであれば...

私は/ proc / swapsが使用中の各スワップに対して追加の行を持つべきだと思います、そしてスワップがなければそれは(タイトルの)1行だけです。そう wc -l 行数、つまりスワップ数を指定する必要があります - 1。

したがって、これは使用中のスワップの数を示すはずです。

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

(または、何らかの理由で本当に猫が嫌いな場合)

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

= 0またはwhatnotの場合はテスト可能

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.