ディスクのデバイスノードを入力として受け取り、そのディスクがマウントされている場所(およびマウントされているかどうか)を教えてくれる簡単なコマンドはありますか?マウントポイントを単独で取得して、別のコマンドに渡すことはできますか?
最小限のインストールでDebianSqueezeライブシステムに取り組んでいます(必要に応じて追加のパッケージをインストールできます)。
承認された回答:
Linuxでは、/proc/mounts
のカーネルから直接マウントポイント情報を取得できます。 。 mount
プログラムは同様の情報を/etc/mtab
に記録します 。 /etc/mtab
のように、パスとオプションは異なる場合があります mount
を表します /proc/mounts
がカーネルに渡されるのに対し、 は、カーネル内に表示されるデータを示しています。 /proc/mounts
/etc/mtab
に対して、常に最新です。 /etc
の場合はそうではない可能性があります ブートスクリプトでは予期されていなかったある時点で読み取り専用でした。形式は/etc/fstab
に似ています 。
どちらのファイルでも、最初の空白で区切られたフィールドにはデバイスパスが含まれ、2番目のフィールドにはマウントポイントが含まれます。
awk -v needle="$device_path" '$1==needle {print $2}' /proc/mounts
または、awkがない場合:
grep "^$device_path " /proc/mounts | cut -d ' ' -f 2
期待どおりの結果が得られない可能性のあるエッジケースがいくつかあります。デバイスが/dev
の別のパスを介してマウントされた場合 同じデバイスを指定しているので、このように気付くことはありません。 /proc/mounts
内 、バインドマウントはオリジナルと見分けがつかない。マウントポイントが別のマウントポイントをシャドウする場合、複数の一致が存在する可能性があります(これは異常です)。
/proc/self
内 または/proc/$pid
、プロセスごとのmount
があります グローバルファイルを模倣するファイル。マウント情報は、たとえばchroot
が原因で、プロセス間で異なる場合があります 。 mountinfo
という追加のファイルがあります これは形式が異なり、より多くの情報、特にデバイスのメジャー番号とマイナー番号が含まれています。ドキュメントから:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
(1) mount ID: unique identifier of the mount (may be reused after umount)
(2) parent ID: ID of parent (or of self for the top of the mount tree)
(3) major:minor: value of st_dev for files on filesystem
(4) root: root of the mount within the filesystem
(5) mount point: mount point relative to the process's root
(6) mount options: per mount options
(7) optional fields: zero or more fields of the form "tag[:value]"
(8) separator: marks the end of the optional fields
(9) filesystem type: name of filesystem of the form "type[.subtype]"
(10) mount source: filesystem specific information or "none"
(11) super options: per super block options
したがって、番号でデバイスを探している場合は、次のように行うことができます:
awk -v dev="$major:minor" '$3==dev {print $5}'
awk -v dev="$(stat -L -c %t:%T /dev/block/something)" '$3==dev {print $5}'