Uygulama

Findmnt : Linux’ta dosya sistemlerinde sorgu

Findmnt, genellikle tüm büyük Linux dağıtımlarının temel paketlerinde yer alan ücretsiz ve açık kaynaklı bir yardımcı programdır. Yalnızca belirttiklerimiz için monte edilmiş tüm dosya sistemlerini listeleyebilir veya veri alabilir. Bu öğreticide, FindMnt’in nasıl kullanılacağını ve FileSystems’i Tür, Bağlantı Seçenekleri ve diğer parametrelere göre nasıl sorgulayacağınızı öğreniriz.

 

Findmnt Temel Kullanımı

Findmnt’i kullanmanın en basit yolu, herhangi bir seçenek veya argüman olmadan çağırmayı içerir; Bu durumda, yardımcı program dört sütun halinde düzenlenen tüm monte edilmiş dosya sistemleri hakkında bilgi görüntüler:

  • HEDEF
  • KAYNAK
  • Fstype
  • SEÇENEKLER

İlk sütun olan “Target”, Dosya sistemi MontajPoint hakkında bilgi tutar; İkincisi, “kaynak”, dosya sistemini barındıran kaynak cihazın yolunu içerir. Üçüncü sütun olan “FSType”, dosya sistemi türü (örn. Ext4 veya XFS) hakkında bilgi bildirmektedir; Son olarak, dördüncü sütun dosya sistemi için kullanılan montaj seçeneklerini görüntüler.

 



Yukarıda belirtilenler, Findmnt çıkışında kullanılan varsayılan sütunlardır. Mevcut olanların listesini almak için, kısa açıklamalarıyla birlikte, yardımcı programı -H seçeneğiyle çağırabiliriz: 

$ findmnt -H
     ACTION <string>        action detected by --poll
      AVAIL <string|number> filesystem size available, use <number> if --bytes is given
       FREQ <integer>       dump(8) period in days [fstab only]
     FSROOT <string>        filesystem root
     FSTYPE <string>        filesystem type
 FS-OPTIONS <string>        FS specific mount options
         ID <integer>       mount ID
  INO.AVAIL <string>        number of available inodes
  INO.TOTAL <string>        total number of inodes
   INO.USED <string>        number of used inodes
   INO.USE% <string>        percentage of INO.USED divided by INO.TOTAL
      LABEL <string>        filesystem label
    MAJ:MIN <string>        major:minor device number
OLD-OPTIONS <string>        old mount options saved by --poll
 OLD-TARGET <string>        old mountpoint saved by --poll
    OPTIONS <string>        all mount options
 OPT-FIELDS <string>        optional mount fields
     PARENT <integer>       mount parent ID
  PARTLABEL <string>        partition label
   PARTUUID <string>        partition UUID
     PASSNO <integer>       pass number on parallel fsck(8) [fstab only]
PROPAGATION <string>        VFS propagation flags
       SIZE <string|number> filesystem size, use <number> if --bytes is given
     SOURCE <string>        source device
    SOURCES <string>        all possible source devices
     TARGET <string>        mountpoint
        TID <integer>       task ID
       USED <string|number> filesystem size used, use <number> if --bytes is given
       USE% <string>        filesystem use percentage
       UUID <string>        filesystem UUID
VFS-OPTIONS <string>        VFS specific mount options

Belirli bir dosya sistemi hakkında bilgi almak

Daha önce tartıştığımız gibi, herhangi bir seçenek veya bağımsız değişken olmadan çağrıldığında, Findmnt tüm bağlanmış dosya sistemleri hakkında bilgi görüntüler. Bu nadiren faydalıdır: çoğu zaman cihaz adı, etiket, uuid veya majör: küçük sayı ile referans verebileceğimiz belirli bir dosya sistemi hakkında bilgi toplamakla ilgileniyoruz.

Bir dosya sistemi aramanın en yaygın yolu muhtemelen kaynak cihazıdır:

$ findmnt /dev/mapper/vg_system-lv_root

Başka bir seçenek, FileSytem’in bağlandığını bildiğimiz dizini (bağlantı noktasını) geçirmeyi içerir:

$ findmnt /

 



–Gget, —mountpoint veya —source seçeneklerini açıkça kullanmadıkça, FindMnt, hem kaynak hem de hedef sütunlara karşı argümanı eşleştirebilir. Aşağıdaki örnekte, yardımcı program çıktı döndürmez, çünkü argümanı bir bağlantı noktası olarak yorumlar: 

$ findmnt --mountpoint /dev/mapper/vg_system-lv_root

Belirli bir dosya sistemine başvurmak için, önceden tanıyorsak UUID veya etiketini de kullanabiliriz. Diyelim ki UUID 331392BA-8966-4877-828C-99CC4BC418EC olsun:

$ findmnt UUID=331392ba-8966-4877-828c-99cc4bc418ec

Benzer şekilde, bir dosya sistemini etiketiyle referanslamak için:

$ findmnt LABEL=backups

Belirli bir dosyada arama

Varsayılan olarak, Findmnt/etc/fstab,/etc/mtab ve/proc/self/mountinfo dosyalarında dosya sistemlerini arar. Bazı seçenekler bu davranışı değiştirmemize izin verir. Örneğin -s (veya – -fstab) seçeneği, Findmnt’i yalnızca /etc /fstab dosyasındaki dosya sistemlerini dikkate alır; Benzer şekilde, -m (—mtab) seçeneği, aramayı/etc/mtab dosyasının içeriğiyle sınırlar ve -k, (–Kernel için kısa), aramayı/proc/self/mountInfo dosyasına daraltır .

Ayrıca -f seçeneğini kullanarak özel, alternatif bir dosyanın yolunu da sağlayabiliriz (—B -File için kısa). Örneğin /etc /fstab-backup dosyasındaki dosya sistemlerini aramak için şunları çalıştırırdık:

$ findmnt -F /etc/fstab-backup

Sonuçları dosya sistemi türüne göre filtreleme

Bazı durumlarda, belirli bir dosya sistemini hedeflemek istemiyoruz ve ne de bağlanmış olanların listesini elde etmek için. Bunun yerine, bazı parametreye dayalı bir filtre uygulamak isteyebiliriz. Örneğin, Findmnt’in yalnızca belirli bir türdeki dosya sistemlerini döndürmesini sağlamak için -t seçeneğini (–type) kullanabilir ve filtre olarak kullanmak istediğimiz türlerin listesini aktarabiliriz. Tüm bağlanmış VFAT veya XFS dosya sistemleri hakkında bilgi toplamak istediğimizi varsayalım:

$ findmnt -t vfat,xfs

Bağlama seçeneklerine göre sonuçları filtreleme

Başka bir seçenek de, bağlama seçeneklerine dayalı bir filtre uygulamaktır. Bu özelliği kullanmak için, tek yapmamız gereken -o seçeneğini ( -opsiyonlar için kısa) kullanmak ve filtre olarak kullanmak istediğimiz virgülle ayrılmış seçenekler listesini sağlamaktır. Örneğin, “Relatime” ve “RO” seçenekleriyle bağlanan tüm FileSytems listesini almak için:

$ findmount -O relatime,ro

Birden çok seçenek belirtildiğinde, yalnızca belirtilen tüm seçeneklerle bağlanan dosya sistemleri sorguyla eşleşir (bu bir mantıksal ve gibi çalışır).

 



Dikkat edilmesi gereken başka bir şey, varsayılan olarak, “hayır” öneki (örneğin noSuid) ile bir seçenek kullanırken, ifadenin tam anlamıyla eşleşmeyeceğidir; Bunun yerine, bir “hariç tutma” filtresi olarak birbirinden yok olacak ve seçenek olmadan monte edilen tüm dosya sistemleriyle eşleşecektir.  Bu /etc /fstab dosyasının içeriğine bir göz atın: 

/         UUID=331392ba-8966-4877-828c-99cc4bc418ec xfs    defaults,x-systemd.device-timeout=0
/boot     UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85 xfs    defaults,nosuid
/boot/efi UUID=ABBE-D50B                            vfat   defaults,uid=0,gid=0,umask=077,shortname=winnt
/home     UUID=244ed50a-4223-41a5-9edb-658488d02279 xfs    defaults,x-systemd.device-timeout=0

Gördüğünüz gibi, listedeki ikinci dosya sistemi, 7E28E28A-FC1B-4652-8F86-4E2BDEFDAD85 UUID, “NOSUID” olan tek bağlantı seçeneği olan tek dosya sistemidir. -O noSuid seçeneğiyle Findmnt’i çalıştıralım ve ne döndürdüğünü görelim:

$ findmnt --fstab -O nosuid

Yukarıdaki komutun çıktısı:

TARGET    SOURCE                                    FSTYPE OPTIONS
/         UUID=331392ba-8966-4877-828c-99cc4bc418ec xfs    defaults,x-systemd.device-timeout=0
/boot     UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85 xfs    defaults,nosuid
/boot/efi UUID=ABBE-D50B                            vfat   defaults,uid=0,gid=0,umask=077,shortname=winnt
/home     UUID=244ed50a-4223-41a5-9edb-658488d02279 xfs    defaults,x-systemd.device-timeout=0

Bir şekilde beklenmedik bir şekilde kullandığımız “sorgu”, yalnızca “nosuid” seçeneği ile bağlanan dosya sistemini eşleştirmek yerine, tüm bunları “Suid” seçeneği olmadan döndürdü, hepsi. İfadenin dosya sistemleriyle tam anlamıyla “nosuid” seçeneğiyle eşleşmesini istiyorsak, seçeneği “+” ile önekleştirmeliyiz:

$ findmnt --fstab -O +nosuid

Bu sözdizimiyle, ifade kelimenin tam anlamıyla “nosuid” seçeneğiyle eşleşir ve beklenen sonucu verir:

TARGET SOURCE                                    FSTYPE OPTIONS
/boot  UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85 xfs    defaults,nosuid

Findmnt çıktısını biçimlendirme

Bir dizi seçenek, Findmnt komutunun çıktısını değiştirmemize ve biçimlendirmemize olanak tanır. Örneğin, kabuk komut dosyalarında Findmnt kullanırken, muhtemelen başlık satırını bastırmak ve yardımcı programın davranışını yalnızca tek bir bilgi parçasını döndürecek şekilde değiştirmek istiyoruz.

Üstbilgi satırı -n seçeneği (–noheadings kısa) kullanılarak bastırılabilir, yardımcı programı sadece belirli bilgileri döndürürken, -o seçeneğini (-utput) kullanabilir ve virgülle ayrılmış listesini geçebiliriz. Argüman olarak ilgilendiğimiz sütun (lar). Aşağıdaki örnekte, “$ root_fstype” değişkenine / üzerine monte edilen dosya sisteminin fstype’ını saklıyoruz:

$ root_fstype="$(findmnt --noheadings --output FSTYPE /)"
$ echo "${root_fstype}"
xfs

Findmnt, varsayılan olarak, çıktısını ağaç benzeri bir formatta düzenler, bu da dosya sistemleri arasındaki ilişkileri gösterir. Bunu değiştirebilir ve -j (–json) seçeneğini kullanarak çıkışı JSON olarak biçimlendirebiliriz. Örneğin JSON’daki /etc /fstab dosyasında bulunan dosya sistemini yeniden düzenlemek istediğimizi varsayalım:

$ findmnt -J --fstab

We would obtain a result similar to the following:

{
   "filesystems": [
      {
         "target": "/",
         "source": "UUID=331392ba-8966-4877-828c-99cc4bc418ec",
         "fstype": "xfs",
         "options": "defaults,x-systemd.device-timeout=0"
      },{
         "target": "/boot",
         "source": "UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85",
         "fstype": "xfs",
         "options": "defaults,nosuid"
      },{
         "target": "/boot/efi",
         "source": "UUID=ABBE-D50B",
         "fstype": "vfat",
         "options": "defaults,uid=0,gid=0,umask=077,shortname=winnt"
      },{
         "target": "/home",
         "source": "UUID=244ed50a-4223-41a5-9edb-658488d02279",
         "fstype": "xfs",
         "options": "defaults,x-systemd.device-timeout=0"
      }
   ]
}

Alternatif olarak, -l (–ist) seçeneğini ileterek “Liste” biçimini kullanabiliriz. Bu biçim, bir sorguyu kısıtlamak için filtreler uyguladığımızda otomatik olarak kullanılır.

Sonuç

Bu öğreticide, Linux’a monte edilmiş dosya sistemleri hakkında bilgi almak için FindMNT yardımcı programını kullanmayı öğrendik. Yardımcı program varsayılan olarak neredeyse tüm ana dağılımlarda kurulur. Tüm monte edilmiş dosya sistemlerinin nasıl listelendiğini, bir dosya sisteminin UUID, etiket, ad ve montaj noktası ile nasıl referans verileceğini ve FindMnt sonuçlarını montaj seçeneklerine ve dosya sistemi türlerine göre nasıl filtreleyeceğini gördük.

 

Yazının orijinalini buradan okuyabilirsiniz.