GNU/Linux >> Znalost Linux >  >> Linux

Příkaz pro zjištění, kde je disk připojen?

Existuje jednoduchý příkaz, který vezme uzel zařízení disku jako vstup a řekne mi, kde (a zda) je tento disk připojen? Je možné získat bod připojení sám, abych ho mohl předat jinému příkazu?

Pracuji na živém systému Debian Squeeze s minimální instalací (v případě potřeby mohu nainstalovat další balíčky).

Přijatá odpověď:

V Linuxu můžete získat informace o přípojných bodech přímo z jádra v /proc/mounts . mount program zaznamenává podobné informace v /etc/mtab . Cesty a možnosti se mohou lišit, například /etc/mtab představuje co mount předán jádru, zatímco /proc/mounts zobrazuje data tak, jak jsou vidět uvnitř jádra. /proc/mounts je vždy aktuální, zatímco /etc/mtab nemusí být, pokud /etc byl v určitém okamžiku pouze pro čtení, což spouštěcí skripty neočekávaly. Formát je podobný /etc/fstab .

V obou souborech obsahuje první pole oddělené mezerami cestu k zařízení a druhé pole obsahuje bod připojení.

awk -v needle="$device_path" '$1==needle {print $2}' /proc/mounts

nebo pokud nemáte awk:

grep "^$device_path " /proc/mounts | cut -d ' ' -f 2

Existuje řada okrajových případů, kdy možná nedostanete to, co očekáváte. Pokud bylo zařízení připojeno jinou cestou v /dev který označuje stejné zařízení, tímto způsobem si toho nevšimnete. V /proc/mounts , držáky vazby jsou k nerozeznání od originálu. Může existovat více než jedna shoda, pokud přípojný bod zastíní jiný (toto je neobvyklé).

V /proc/self nebo /proc/$pid , existuje pro každý proces mount soubor, který napodobuje globální soubor. Informace o připojení se mohou mezi procesy lišit, například kvůli chroot . Existuje další soubor s názvem mountinfo který má jiný formát a obsahuje více informací, zejména hlavní a vedlejší čísla zařízení. Z dokumentace:

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

Pokud tedy hledáte zařízení podle čísla, můžete to udělat takto:

awk -v dev="$major:minor" '$3==dev {print $5}'
awk -v dev="$(stat -L -c %t:%T /dev/block/something)" '$3==dev {print $5}'

Linux
  1. Bind Mount?

  2. Pointa externího příkazu `cd`?

  3. Debian – přístup k původnímu obsahu Mount Pointu?

  1. Proveďte příkaz, kde je nalezen soubor?

  2. Jak připojit a odpojit souborový systém / oddíl v Linuxu (Příklady příkazů Mount/Umount)

  3. Příklady příkazů mount v Linuxu

  1. mount:příkaz nenalezen

  2. Linux du command bez procházení připojených souborových systémů

  3. Kde je příkaz drahokamu v RHEL6?