Linux'ta tam ve tam dosya sistemlerinin listesi nasıl alınır?


150

Genellikle mounthangi dosya sistemlerinin monte edildiğini kontrol etmek için kullanırım . Ayrıca arasında bir bağlantı olduğunu biliyoruz mountve /etc/mtabancak detayları hakkında emin değilim. Okuduktan sonra / proc / monte edilip edilmediğini kontrol etme kafam karıştı.

Sorum şu: Monte edilmiş dosya sistemlerinin en doğru listesini nasıl alabilirim? Sadece içeriğini mi yoksa içeriğini mi kullanmalıyım mountveya okumalı mıyım ? En güvenilir sonuç ne olurdu?/etc/mtab/proc/mounts


3
Ayrıca bu soruya verilen cevabı da okumalısınız: unix.stackexchange.com/questions/12040/…
nozimica 20

Linux'ta / etc / mtab Nedir? İle bağlantı kurmaya yardımcı olamıyorum ? çünkü buradaki cevapların hiçbirinin vermediği Linux dışı detayları kapsar.
Weijun Zhou

Yanıtlar:


140

Monte edilmiş dosya sistemlerinin kesin listesi içindedir /proc/mounts.

Sisteminizde herhangi bir tür kapsayıcı varsa, /proc/mountsyalnızca mevcut kapsayıcınızdaki dosya sistemlerini listeler. Örneğin, bir chroot'ta , /proc/mountsyalnızca montaj noktası chroot içinde olan dosya sistemlerini listeler. ( Chroot'tan kaçmanın yolları var, akıl. )

Ayrıca içinde takılı dosya sistemlerinin bir listesi var /etc/mtab. Bu liste mountve umountkomutları tarafından tutulur . Bu, eğer bu komutları kullanmazsanız (ki oldukça nadirdir), eyleminizin (mount veya unmount) kaydedilmeyeceği anlamına gelir. Uygulamada, çoğunlukla /etc/mtabsistemin durumundan çılgınca farklı olan dosyaları bulacaksınız . Ayrıca, chroot'ta gerçekleştirilen montajlar chrootlara yansıtılır, /etc/mtabancak ana şebekeye yansıtılmaz /etc/mtab. Salt /etc/mtabokunur bir dosya sistemindeyken gerçekleştirilen eylemler de orada kaydedilmez.

Bazen /etc/mtabtercihinize göre veya /proc/mountsbunlara ek olarak danışmak istemenizin nedeni, mount komut satırına erişimi olduğu için, bazen bilgiyi anlaşılması daha kolay bir şekilde sunabilmesidir; örneğin istediğiniz gibi montaj seçeneklerini görüyorsunuz (oysa çekirdek ve varsayılanları da /proc/mountslisteliyor mount) ve bağlama bağları olduğu gibi görünüyor /etc/mtab.


1
Güvenilmez ise mountkorumanın amacı nedir /etc/mtab? Bunun yerine mountbilgi sunulursa daha iyi olmaz mıydı /proc/mounts?
Piotr Dobrogost

2
@PiotrDobrogost /etc/mtab, orijinal olarak istenen seçenekler gibi çekirdeğin izlemediği bilgileri kaydedebilir ve aygıtlar için yinelenen girişler olarak görünmek yerine, görünenleri bağlar. Bununla birlikte, birçok dağıtım /etc/mtabbir bağlantı oluşturmaya doğru ilerlemektedir /proc/mounts.
Gilles,

3
Bununla birlikte, birçok dağıtım /etc/mtabbir bağlantı oluşturmaya doğru ilerlemektedir /proc/mounts. Duymak güzel - cevaplamak için bu bilgiyi eklemek daha da iyi hale getirecek. Çekirdeğin talep ettiği seçenekleri izlemenin uygulanabilir ve faydalı olacağını düşünüyor musunuz?
Piotr Dobrogost

2
/ Proc / mount içeriğinden kaçmanız gerektiğini unutmayın. Getmntent (3) sayfasında açıklandığı gibi, boşluk (\ 040), sekme (\ 011), newline (\ 012) ve ters eğik çizginin (\ 134) özel olarak ele alınması gerekir. Özellikle kullanıcı bağlamaları etkinleştirilmişse, bu yollarla çalışırken çok dikkatli olmanız gerekir.
Eric

2
Lütfen findmnt, 2010'dan bu yana tercih edilen yöntem olan ve ad adlarının ortak olduğu durumlarda yakın gelecekte tek güvenli yöntem olan komut kullanma hakkındaki diğer cevaba bakınız .
Marki555

68

V. 2.18'den itibaren (Temmuz 2010) util-linux , geçerli olarak bağlanmış dosya sistemlerinin bir listesini görüntülemenizi sağlayan bir araç içerir:

findmnt

Varsayılan ağaç görünümünden liste görünümüne geçebilir, -lçıkış sütunlarını -o(ile benzer lsblk) tanımlayabilir , -tvb.

findmnt -lo kaynak, hedef, fstype, etiket, seçenekler, kullanılmış -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

Daha fazla ayrıntı için mansayfayı okuyun (ve findmnt --helpmevcut sütunların listesini almak için)


33

Belki de bu sorunun yanıtlanmasından bu yana 5 yıl geçti çünkü işler değişti. cat /proc/mountsEğer umurumda değil bir sürü bilgi oluşturur. Bugün IMHO, bunu nihai çözüm olarak buluyorum.

df -h --output=source,target

man sayfalarını okuduğunuzda yapabileceğiniz her türlü seçenek vardır, ancak bu ne var. Örneğin, sonuçları daha da fazla temizlemek için, "tmpfs" dosya türlerini bu komutla hariç tutabilirsiniz:

df -hx tmpfs --output=source,target

df dosya düzeyinde değil, dosya sistemi düzeyinde çalışır.

Yukarıdaki komutlar ağ bağlantılarını da içerecektir.

Biraz daha fazla bilgi görmek için bunu kullanın:

df -hT

DİKKAT Yavaş monte ağ bağlantılarında bu birkaç dakika sürebilir!

Monte edilmiş ağ bağlantılarına sahip değilseniz veya (ve kök izinleriniz varsa) bundan daha iyisi yoksa:

sudo lsblk -f

Kök olmak zorunda değilsiniz, ancak bazı alanların / sütunların (Etiket gibi) boş verileri olacak ve bu, hangi dosya sistemlerinin monte edildiğini bilmek istediği için hala tamam olabilir.
Rick

Ubuntu. Ancak ben sadece kök kullanmayan ve ağa bağlı dosya sistemlerini listeleyen "findmnt" i keşfettim. Cevabımı bu bilgiyi içerecek şekilde düzenlemeyi düşünüyordum.
Rick

:-) Cevabınızı oylamak için yorgundum ama 15+ temsilcisi bulunana kadar yapamam
Rick

1
BTW, --outputbu seçenekleri kabul etmeyen, Ubuntu 12 gibi bir şeyle kullanmaya çalışıyorsanız don_crissti'nin findmntcevaplarını aşağıda bulabilirsiniz.
Mat Schaffer,

findmntEtiketleri görüntülemek için daha yüksek yeteneklere ihtiyaç duyuyor (root ile test edilmiş; root tüm özelliklere sahip).
ctrl-alt-delor

23

Çoğu zaman, mounten uygun yöntemdir. Halihazırda monte edilmiş dosya sistemlerinin tam ve tam listesi için, /proc/mounts(örneğin, ile cat /proc/mounts) içeriğini okumalısınız .

Örneğin, /okuma yazma işlemi başarısız olursa ve daha sonra bir geri dönüş olarak salt okunursa, /etc/mtab( mountkomut size neyin monte edildiğini söyler ve okur, neyin monte edildiğini değiştirdiğinde) güncellenmez. /(içeren /etc/mtab) şu anda salt okunur monte edildiğini yansıtmak için . Bu durumda, çalıştırma mounttipik olarak size (yanlış) /okuma yazısının monte edildiğini söyler .

Normal şartlar altında (yani onu içeren dosya sistemine yazılabildiğinde), /etc/mtabhalihazırda monte edilmiş dosya sistemlerinin bir listesini içerir. /etc/fstabSistem başlatıldığında otomatik olarak monte edilmesi gereken dosya sistemlerinin bir listesini içeren, bununla karıştırılmamalıdır .

Elbette, /procsanal dosya sistemi kendisine monte edilmediyse, içerdiği herhangi bir sanal dosyayı okuyamazsınız /proc/mounts. Bu çok nadiren böyledir. Bu durumda, mountmuhtemelen monte edilmiş olanı görmek için en iyi seçenek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.