Cosa c'è /etc/mtab
in Linux?
Perché è necessario e vantaggi di averlo?
man 5 mtab
manca.
Cosa c'è /etc/mtab
in Linux?
Perché è necessario e vantaggi di averlo?
man 5 mtab
manca.
Risposte:
% file / etc / mtab / etc / mtab: link simbolico a ../proc/self/mounts % file / proc / mounts / proc / mounts: collegamento simbolico a self / mounts %
/etc/mtab
è un meccanismo di compatibilità. Decenni fa, Unix non aveva una chiamata di sistema per leggere le informazioni di mount esistenti. Invece, i programmi che montavano filesystem dovevano mantenere una collaborazione e volontariamente una tabella /etc/mtab
di ciò che era montato dove.
Per ovvie ragioni, questo non era un meccanismo ideale.
Linux ottenne la nozione di "procfs" e una delle cose che ottenne fu una versione di questa tabella gestita dal kernel, sotto forma di un mounts
file pseudo-regolare. La "chiamata di sistema" per leggere le informazioni di mount dal kernel è diventata una sequenza open-read-close contro quel file, seguita dall'analisi del risultato dalla forma leggibile dall'uomo a quella leggibile dalla macchina (qualcosa che ha alcune catture sottili, mentre tu può vedere dalle segnalazioni di bug di poco più di due settimane fa).
/etc/mtab
così è diventato popolarmente un collegamento simbolico /proc/mounts
, consentendo ai programmi che avevano cablato quel nome di continuare a leggere una tabella di mount da quel file, che i programmi che montavano e smontavano i filesystem non dovevano più fare esplicitamente qualsiasi cosa per aggiornarsi. (Alcuni di loro continueranno comunque, se /etc/mtab
si rivelerà un file normale scrivibile. E ci sono alcuni casi angolari in cui le informazioni normalizzate in mounts
cui mancano tutte le cose non kernel non sono esattamente ciò di cui abbiamo bisogno; anche se non superano i problemi generali con /etc/mtab
.)
Ogni processo può oggigiorno avere una propria visione individuale di ciò che è montato, e di conseguenza ora ci sono singoli mounts
file per ciascun processo nei procfs, la tabella di ogni processo è accessibile ad esso tramite il self
collegamento simbolico come self/mounts
, ed /proc/mounts
è anche ora una compatibilità meccanismo. (È interessante notare che né per processo mounts
né il formato di mounts
sono documentati nell'attuale documento Linux, sebbene lo sia mountinfo
un file pseudo-regolare simile .)
SunOS / Solaris ha un meccanismo simile. Il /etc/mnttab
file è in realtà un file system a file singolo e, oltre alla lettura della tabella, tramite un descrittore di file aperto a quel file, con la read()
chiamata di sistema, è possibile controllare le modifiche del punto di montaggio con poll()
e ottenere varie ulteriori informazioni con ioctl()
.
In HP-UX, /etc/mnttab
è anche il nome del file, ma a partire dalla versione 11 era ancora un file normale il cui contenuto era gestito in modo collaborativo dai programmi di utilità di sistema.
AIX non esporta una tabella di testo leggibile dall'uomo che i programmi devono analizzare e non esiste un file equivalente. I BSD, allo stesso modo, hanno chiamate di sistema a tutti gli effetti, getfsstat()
su FreeBSD e OpenBSD, per i programmi per ottenere la tabella di mount dal kernel in forma leggibile dalla macchina senza eseguirne il marshalling attraverso una forma intermedia leggibile dall'uomo.
/proc/self/mountinfo
con \ r nel percorso di montaggio . # 35137. Bug GNU coreutils./proc/mounts
. Documentazione / filesystems / proc.txt . Linux 5.1.fstab-decode
. Bug # 567071. Bug Debian.getfsstat()
. Manuale di chiamate di sistema di FreeBSD . 2016/12/27.mtab(5)
i vecchi tempi: man.cat-v.org/unix_8th/5/mtab .
/proc/mounts
, ma /proc/self/mounts
è esso stesso un meccanismo di compatibilità ora; mostra solo un sottoinsieme delle informazioni disponibili in /proc/self/mountinfo
. Il formato di /proc/self/mounts
è documentato proc(5)
come identico afstab(5)
Secondo man mount
:
I programmi mount e umount mantengono tradizionalmente un elenco dei filesystem attualmente montati nel file / etc / mtab. Questo vero file mtab è ancora supportato, ma sugli attuali sistemi Linux è meglio renderlo un link simbolico a / proc / monta, perché un normale file mtab gestito nello spazio utente non può funzionare in modo affidabile con spazi dei nomi, contenitori e altre funzionalità Linux avanzate.
Al montaggio senza registrazione in /etc/mtab
:
-n, --no-mtab
Montare senza scrivere in / etc / mtab. Ciò è necessario ad esempio quando / etc è su un filesystem di sola lettura.
Molte altre sfumature sono riportate nella pagina del manuale.