私の目標は、いくつかの新しいマウントポイントが追加されていることを継続的に確認することです。 dfコマンドでこれを確認する必要があります。
したがって、次のコマンドは実際にdfを見て、新しいマウントポイントがあれば変更を見ることができます。
watchdf
しかし、dfに新しいマウントポイントが表示されたら、「新しいマウントポイントの追加」を印刷するbashスクリプトを介してdf情報を追跡できるかどうかを尋ねています。可能ですか?
答え1
出力を見ることは、df
出力が確実に処理できず、マウントされたすべてのファイルシステムを含むわけではないので、悪い考えです(-a
GNUまたはbusybox実装オプションを使用しない限り)。
Linux(util-linux
2.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