Come ottenere l'elenco completo ed esatto dei filesystem montati su Linux?


151

Di solito uso mountper verificare quali filesystem sono montati. So anche che esiste una connessione tra mounte /etc/mtabma non sono sicuro dei dettagli. Dopo aver letto Come verificare se / proc / è montato, divento più confuso.

La mia domanda è: come ottenere l'elenco più preciso dei filesystem montati? Dovrei semplicemente usare mount, o leggere il contenuto /etc/mtabo il contenuto di /proc/mounts? Cosa darebbe il risultato più affidabile?


3
Dovresti anche leggere la risposta accettata a questa domanda: unix.stackexchange.com/questions/12040/…
— nozimica

Non posso fare a meno di collegarmi a Cos'è / etc / mtab in Linux? perché copre dettagli non Linux che nessuna delle risposte qui fornite.
— Weijun Zhou,

Risposte:


141

È presente l'elenco definitivo dei filesystem montati /proc/mounts.

Se hai qualsiasi forma di container sul tuo sistema, /proc/mountselenca solo i filesystem presenti nel tuo container attuale. Ad esempio, in un chroot , /proc/mountselenca solo i filesystem il cui punto di montaggio è all'interno del chroot. ( Ci sono modi per sfuggire al chroot, mente. )

C'è anche un elenco di filesystem montati in /etc/mtab. Questo elenco è gestito dai comandi mounte umount. Ciò significa che se non si utilizzano questi comandi (cosa piuttosto rara), l'azione (montare o smontare) non verrà registrata. In pratica, è soprattutto in un chroot che troverai /etc/mtabfile che differiscono selvaggiamente dallo stato del sistema. Inoltre, i montaggi eseguiti nel chroot si rifletteranno nei chroot /etc/mtabma non nel main /etc/mtab. Anche le azioni eseguite mentre si /etc/mtabtrova su un filesystem di sola lettura non vengono registrate lì.

Il motivo per cui a volte vorresti consultare /etc/mtabin preferenza o in aggiunta /proc/mountsè che, poiché ha accesso alla riga di comando mount, a volte è in grado di presentare le informazioni in un modo che è più facile da capire; per esempio vedi le opzioni di mount come richiesto (mentre /proc/mountselenca anche le mountimpostazioni predefinite del kernel) e i mount di bind appaiono come tali in /etc/mtab.


1
Che senso ha mountmantenere /etc/mtabse non si può fare affidamento su di esso? Non sarebbe meglio se invece fossero mountpresentate informazioni /proc/mounts?
— Piotr Dobrogost,

2
@PiotrDobrogost /etc/mtabpuò registrare informazioni che il kernel non tiene traccia, come le opzioni originariamente richieste e associare i montaggi che appaiono come tali invece di apparire come voci duplicate per i dispositivi. Tuttavia molte distribuzioni si stanno muovendo verso la creazione di /etc/mtabun collegamento simbolico a /proc/mounts.
— Gilles,

3
Tuttavia molte distribuzioni si stanno muovendo verso la creazione di /etc/mtabun collegamento simbolico a /proc/mounts. Buono a sapersi - l'aggiunta di queste informazioni per rispondere renderebbe ancora meglio. Pensi che il monitoraggio delle opzioni richieste dal kernel sia fattibile e vantaggioso?
— Piotr Dobrogost,

2
Nota che dovrai annullare la escape del contenuto di / proc / mounts. Come descritto nella pagina getmntent (3), spazio (\ 040), tab (\ 011), newline (\ 012) e barra rovesciata (\ 134) devono essere gestiti in modo speciale. Soprattutto se i montaggi utente sono abilitati, dovrai fare molta attenzione quando lavori con questi percorsi.
— Eric,

2
Si prega di consultare anche un'altra risposta per l'utilizzo del comando, findmntche è il modo preferito dal 2010 e probabilmente l'unico modo sicuro nel prossimo futuro quando gli spazi dei nomi di mount saranno comuni.
— Marki555,

69

A partire dalla v. 2.18 (luglio 2010) util-linux include uno strumento che consente di visualizzare un elenco di file system attualmente montati:

findmnt

È possibile passare dalla visualizzazione ad albero predefinita alla visualizzazione elenco con -l, definire colonne di output con -o(simile a lsblk), filtrare i risultati in base al tipo di file system con -tecc ...

findmnt -lo sorgente, destinazione, fstype, etichetta, opzioni, usato -t ext4
SOURCE    TARGET      FSTYPE LABEL OPTIONS                           USED
/dev/sda1 /           ext4   ARCH  rw,noatime,discard,data=ordered  17.6G
/dev/sdb2 /media/DATA ext4   DATA  rw,noatime,discard,data=ordered    44M

Per maggiori dettagli leggi la manpagina (e findmnt --helpper ottenere l'elenco delle colonne disponibili)


33

Forse perché sono passati 5 anni dalla risposta a questa domanda, le cose sono cambiate. Il cat /proc/mountscrea un sacco di informazioni che non si preoccupano. Oggi, IMHO, trovo che questa sia la soluzione definitiva.

df -h --output=source,target

quando leggi le pagine man ci sono tutti i tipi di opzioni che puoi fare ma questo è quello che fai. Ad esempio per ripulire ulteriormente i risultati è possibile escludere i tipi di file di "tmpfs" con questo comando:

df -hx tmpfs --output=source,target

df funziona a livello di filesystem e non a livello di file.

I comandi sopra includeranno anche i montaggi di rete.

Per vedere qualche informazione in più usa questo:

df -hT

NOTA Con connessioni di rete montate lente, questo può richiedere alcuni minuti!

Se non hai o ti preoccupi delle connessioni di rete montate (e hai i permessi di root) di questo è ancora meglio:

sudo lsblk -f

Non è necessario essere root ma alcuni dei campi / colonne (come Label) avranno dati null, il che potrebbe essere ancora corretto in quanto le domande vogliono sapere quali filesystem sono montati.
— Rick,

Ubuntu. Tuttavia ho appena scoperto "findmnt" che non usa root ed elenca i filesystem montati in rete. Stavo pensando di modificare la mia risposta per includere quella conoscenza.
— Rick,

:-) Mi sono stancato di dare un voto alla tua risposta, ma non posso fino a quando non avrò un rappresentante di 15+
— Rick,

1
A proposito, se stai cercando di usare --outputqualcosa come Ubuntu 12 che non accetta quelle opzioni, controlla la findmntrisposta di don_crissti sotto la quale lo fa.
— Mat Schaffer,

findmntsembra aver bisogno di maggiori capacità (testato con root; root ha tutte le capacità) per visualizzare le etichette.
— ctrl-alt-delor,

23

Il più delle volte mountè il metodo più conveniente. Per un elenco completo ed esatto dei filesystem attualmente montati, è necessario leggere il contenuto di /proc/mounts(ad es. Con cat /proc/mounts).

Ad esempio, se il montaggio di /readwrite non è riuscito e viene quindi montato di sola lettura come fallback /etc/mtab((il mountcomando legge dal comando per dirti cosa è montato, e scrive - se può - quando cambia ciò che è montato) non verrebbe aggiornato per riflettere che /(che contiene /etc/mtab) è attualmente montato in sola lettura. In questa situazione, l'esecuzione in mountgenere indica (erroneamente) che è /stato montato readwrite.

In condizioni normali (cioè quando è possibile scrivere sul filesystem che lo contiene), /etc/mtabcontiene un elenco di filesystem attualmente montati. Questo non deve essere confuso /etc/fstab, che contiene un elenco di filesystem che dovrebbero essere montati automaticamente all'avvio del sistema.

Ovviamente, se il /procfilesystem virtuale non è esso stesso montato, non è possibile leggere alcun file virtuale in esso, che includerebbe /proc/mounts. Questo è molto raro. In questa situazione, mountè probabilmente l'opzione migliore per vedere cosa è montato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.