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.