新しいマウントポイントがある場合にdfコマンドでビューを追跡する方法

新しいマウントポイントがある場合にdfコマンドでビューを追跡する方法

私の目標は、いくつかの新しいマウントポイントが追加されていることを継続的に確認することです。 dfコマンドでこれを確認する必要があります。

したがって、次のコマンドは実際にdfを見て、新しいマウントポイントがあれば変更を見ることができます。

 watchdf

しかし、dfに新しいマウントポイントが表示されたら、「新しいマウントポイントの追加」を印刷するbashスクリプトを介してdf情報を追跡できるかどうかを尋ねています。可能ですか?

答え1

出力を見ることは、df出力が確実に処理できず、マウントされたすべてのファイルシステムを含むわけではないので、悪い考えです(-aGNUまたはbusybox実装オプションを使用しない限り)。

Linux(util-linux2.20以降)では、findmnt -pマウントポイントの変更をポーリングするために使用できます。

poll(events=POLLPRI)このコマンドは、ファイル記述子で読み取り専用オープン操作を実行して、/proc/self/mountinfoイベント(マウント、削除)が発生するとすぐに報告されるようにします。ただし、名前が変更されたマウントポイントは検出されません。

現在マウントされている名前空間の変更のみを検出します(ウォッチングと同様df)。

答え2

次のスクリプトを使用できます。

x=""
while :; do
  df="$(awk '{print $1,$2}' /proc/mounts)" # only the first two fields are relevant
  if [ "$x" != "$df" ]; then # only diff the contents when something has changed
    diff <(echo "$df") <(echo "$x") \ # compare the two values
      --unchanged-line-format='' \
      --old-line-format='mounted: %L' \
      --new-line-format='unmounted: %L'
  fi
  x="$df"
  sleep 1 # can be increased
done

の情報に基づいて/proc/mounts、スクリプトは1秒ごとに繰り返され、変更を確認します。diff古い値を新しい値と比較し、出力形式を指定します。


たとえば、スクリプトが実行されると、出力は次のようになります。

mounted: //srv/share /mountpoint
unmounted: /dev/sdb1 /media

関連情報