Linux'ta stat Komutu Nasıl Kullanılır

Yayınlanan: 2022-01-29
Ubuntu tarzı bir masaüstünde bir Linux terminali.
Fatmawati Achmad Zaenuri/Shutterstock.com

Linux stat komutu size ls çok daha fazla ayrıntı gösterir. Bu bilgilendirici ve yapılandırılabilir yardımcı programla perdenin arkasına bir göz atın. Size nasıl kullanılacağını göstereceğiz.

stat Sizi Perde Arkasına Götürüyor

ls komutu yaptığı işte harikadır - ve çok şey yapar - ama Linux'ta her zaman daha derine inmenin ve yüzeyin altında ne olduğunu görmenin bir yolu var gibi görünüyor. Ve çoğu zaman, bu sadece halının kenarını kaldırmak değildir. Döşeme tahtalarını parçalayabilir ve ardından bir delik açabilirsiniz. Linux'u soğan gibi soyabilirsiniz.

Yeni Başlayanlar İçin 10 Temel Linux Komutu
İLGİLİ Yeni Başlayanlar İçin 10 Temel Linux Komutu

ls size bir dosya hakkında hangi izinlerin ayarlandığı, ne kadar büyük olduğu ve bir dosya mı yoksa sembolik bir bağlantı mı olduğu gibi pek çok bilgiyi gösterecektir. Bu bilgiyi görüntülemek için ls , inode adı verilen bir dosya sistemi yapısından okur.

Her dosya ve dizinin bir inode'u vardır. İnode, dosya hakkında, hangi dosya sisteminin işgal ettiği gibi meta verileri ve dosyayla ilişkili tarih damgalarını tutar. İnode, dosya için bir kütüphane kartı gibidir. Ama ls size sadece bazı bilgileri gösterecek. Her şeyi görmek için stat komutunu kullanmamız gerekiyor.

ls gibi, stat komutunun da birçok seçeneği vardır. Bu, onu takma adların kullanımı için harika bir aday yapar. stat size istediğiniz çıktıyı vermesini sağlayan belirli bir seçenek kümesi keşfettikten sonra, onu bir takma ad veya kabuk işlevine sarın. Bu, kullanımı çok daha uygun hale getirir ve bir dizi gizli komut satırı seçeneğini hatırlamanız gerekmez.

İLGİLİ: Linux'ta Dosyaları ve Dizinleri Listelemek için ls Komutu Nasıl Kullanılır

Hızlı Karşılaştırma

Bize insan tarafından okunabilir dosya boyutlarıyla ( -h seçeneği) uzun bir liste ( -l seçeneği) vermek için ls kullanalım:

 ls -lh ana.h 

Reklamcılık

Soldan sağa, ls'nin sağladığı bilgiler:

  • İlk karakter kısa çizgi "-" dir ve bu bize dosyanın bir soket, sembolik bağlantı veya başka bir nesne türü değil, normal bir dosya olduğunu söyler.
  • Sahip, grup ve diğer izinler sekizli biçimde listelenir.
  • Bu dosyaya işaret eden sabit bağlantıların sayısı. Bu durumda ve çoğu durumda, bir olacaktır.
  • Dosya sahibi Dave'dir.
  • Grup sahibi Dave.
  • Dosya boyutu 802 bayttır.
  • Dosya en son 13 Aralık 2015 Cuma günü değiştirildi.
  • Dosya adı ana.c .

stat ile bir göz atalım:

 stat ana.h 

stat aldığımız bilgiler:

  • Dosya : Dosyanın adı. Genellikle komut satırında stat ilettiğimiz adla aynıdır, ancak sembolik bir bağlantıya bakıyorsak farklı olabilir.
  • Boyut : Dosyanın bayt cinsinden boyutu.
  • Bloklar : Dosyanın sabit sürücüde depolanması için ihtiyaç duyduğu dosya sistemi bloklarının sayısı.
  • IO Bloğu : Bir dosya sistemi bloğunun boyutu.
  • Dosya türü : Meta verinin tanımladığı nesne türü. En yaygın türler dosyalar ve dizinlerdir, ancak bunlar bağlantılar, yuvalar veya adlandırılmış kanallar da olabilir.
  • Cihaz : Onaltılık ve ondalık olarak cihaz numarası. Bu, dosyanın depolandığı sabit sürücünün kimliğidir.
  • İnode : İnode numarası. Yani, bu düğümün kimlik numarası. İnode numarası ve cihaz numarası birlikte bir dosyayı benzersiz şekilde tanımlar.
  • Bağlantılar : Bu sayı, bu dosyaya kaç tane sabit bağlantının işaret ettiğini gösterir. Her sabit bağlantının kendi düğümü vardır. Yani bu rakam hakkında düşünmenin başka bir yolu, kaç tane düğümün bu tek dosyaya işaret ettiğidir. Bir sabit bağlantı her oluşturulduğunda veya silindiğinde, bu sayı yukarı veya aşağı ayarlanacaktır. Sıfıra ulaştığında, dosyanın kendisi silinir ve düğüm kaldırılır. Bir dizinde stat kullanıyorsanız, bu sayı, “.” dahil olmak üzere dizindeki dosya sayısını temsil eder. geçerli dizin için giriş ve üst dizin için “..” girişi.
  • Erişim : Dosya izinleri sekizli ve geleneksel rwx (okuma, yazma, yürütme biçimleri) gösterilir.
  • Uid : Kullanıcı kimliği ve sahibinin hesap adı.
  • Gid : Grup kimliği ve sahibinin hesap adı.
  • Erişim : Erişim zaman damgası. Göründüğü kadar basit değil. Modern Linux dağıtımları, erişim süresini güncellemek için gereken sabit sürücü yazma işlemlerini optimize etmeye çalışan relatime adlı bir şema kullanır. Basitçe söylemek gerekirse, erişim süresi, değiştirilen zamandan daha eskiyse güncellenir.
  • Değiştir : Değişiklik zaman damgası. Bu, dosya içeriğinin en son değiştirildiği zamandır. (Şans eseri, bu dosyanın içeriği en son dört yıl önce günümüze kadar değiştirilmiştir.)
  • Değiştir : Değişiklik zaman damgası. Bu, dosyanın özniteliklerinin veya içeriğinin en son değiştirildiği zamandır. Bir dosyayı yeni dosya izinleri ayarlayarak değiştirirseniz, değişiklik zaman damgası güncellenir (dosya öznitelikleri değiştiği için), ancak değiştirilen zaman damgası güncellenmez (dosya içeriği değiştirilmediği için).
  • Doğum : Dosyanın orijinal oluşturulma tarihini göstermek için ayrılmıştır, ancak bu Linux'ta uygulanmaz.

Zaman Damgalarını Anlamak

Zaman damgaları saat dilimine duyarlıdır. Her satırın sonundaki -0500 , bu dosyanın bir bilgisayarda, mevcut bilgisayarın saat diliminden beş saat ileri olan Eşgüdümlü Evrensel Saat (UTC) saat diliminde oluşturulduğunu gösterir. Yani bu bilgisayar, bu dosyayı oluşturan bilgisayarın beş saat gerisindedir. Aslında, dosya Birleşik Krallık saat dilimindeki bir bilgisayarda oluşturuldu ve biz ona burada ABD Doğu Standart saat dilimindeki bir bilgisayarda bakıyoruz.

Değiştirme ve değiştirme zaman damgaları karışıklığa neden olabilir, çünkü tecrübesiz kişilere isimleri aynı anlama geliyormuş gibi gelir.

ana.c adlı bir dosyadaki dosya izinlerini değiştirmek için chmod kullanalım. Herkes tarafından yazılabilir hale getireceğiz. Bu, dosyanın içeriğini etkilemez, ancak dosyanın özniteliklerini etkiler.

 chmod +w ana.c

Sonra zaman damgalarına bakmak için stat kullanacağız:

 stat ana.c 

Reklamcılık

Değişiklik zaman damgası güncellendi, ancak değiştirilmiş olan güncellenmedi.

Değiştirilen zaman damgası yalnızca dosyanın içeriği değiştirilirse güncellenecektir. Değişiklik zaman damgası, hem içerik değişiklikleri hem de nitelik değişiklikleri için güncellenir.

Stat'ı Birden Çok Dosyayla Kullanma

Aynı anda birkaç dosya hakkında stat raporu almak için dosya adlarını komut satırında stat :

 stat ana.h ana.o 

Bir dosya kümesinde stat kullanmak için kalıp eşleştirmeyi kullanın. Soru işareti “?” herhangi bir tek karakteri temsil eder ve yıldız işareti “*” herhangi bir karakter dizisini temsil eder. Bu komutla stat tek harf uzantılı “ana” adlı herhangi bir dosya hakkında rapor vermesini söyleyebiliriz:

 stat ana.? 

Dosya Sistemlerini Raporlamak için stat kullanma

stat , dosyaların durumu kadar dosya sistemlerinin durumu hakkında da rapor verebilir. -f (dosya sistemi) seçeneği, stat dosyanın bulunduğu dosya sistemi hakkında rapor vermesini söyler. Ayrıca, dosya adı yerine stat “/” gibi bir dizini de iletebileceğimizi unutmayın.

 stat -f ana.c 

stat verdiği bilgi:

  • Dosya : Dosyanın adı.
  • ID : Onaltılık gösterimdeki dosya sistemi kimliği.
  • Namelen : Dosya adları için izin verilen maksimum uzunluk.
  • Tür : Dosya sisteminin türü.
  • Blok boyutu : Optimum veri aktarım hızları için okuma istekleri talep edilecek veri miktarı.
  • Temel blok boyutu : Her dosya sistemi bloğunun boyutu.

Bloklar:

  • Toplam : Dosya sistemindeki tüm blokların toplam sayısı.
  • Free : Dosya sistemindeki boş blokların sayısı.
  • Mevcut : Normal (root olmayan) kullanıcılar için mevcut olan ücretsiz blok sayısı.

düğümler:

  • Toplam : Dosya sistemindeki toplam düğüm sayısı.
  • Free : Dosya sistemindeki serbest düğüm sayısı.

Sembolik Bağlantıların Referansından Çıkarma

Aslında sembolik bir bağlantı olan bir dosyada stat kullanırsanız, bağlantı hakkında rapor verir. stat bağlantının işaret ettiği dosya hakkında rapor vermesini istiyorsanız, -L (referans) seçeneğini kullanın. ana.c dosyası, code.c için sembolik bir bağlantıdır. -L seçeneği olmadan bakalım:

 stat kodu.c 

Reklamcılık

Dosya adı, ( -> ) code.c işaret eden ana.c gösterir. Dosya boyutu sadece 11 bayttır. Bu bağlantıyı depolamaya ayrılmış sıfır blok var. Dosya türü sembolik bir bağlantı olarak listelenir.

Açıkçası, burada asıl dosyaya bakmıyoruz. Bunu tekrar yapalım ve -L seçeneğini ekleyelim:

 stat -L kodu.c 

Bu şimdi, sembolik bağla işaret edilen dosyanın dosya ayrıntılarını gösteriyor. Ancak dosya adının hala code.c olarak verildiğine dikkat edin. Bu, hedef dosyanın değil, bağlantının adıdır. Bunun nedeni, komut satırında stat geçirdiğimiz ad bu olmasıdır.

Terse Raporu

-t (terse) seçeneği, stat öğesinin özet bir özet sağlamasına neden olur:

 stat -t ana.c 

Verilen hiçbir ipucu yok. Bunu anlamak için - alan sırasını ezberleyene kadar - bu çıktıyı tam bir stat çıktısına çapraz referanslamanız gerekir.

Özel Çıktı Formatları

stat farklı bir veri kümesi elde etmenin daha iyi bir yolu, özel bir biçim kullanmaktır. Biçim dizileri adı verilen uzun bir belirteç listesi vardır. Bunların her biri bir veri öğesini temsil eder. Çıktıya dahil etmek istediklerinizi seçin ve bir biçim dizesi oluşturun. stat çağırdığımızda ve format dizesini ona ilettiğimizde, çıktı yalnızca istediğimiz veri öğelerini içerecektir.

Reklamcılık

Dosyalar ve dosya sistemleri için farklı biçim dizileri vardır. Dosyalar için liste:

  • %a : Sekizli erişim hakları.
  • %A : İnsan tarafından okunabilir biçimde ( rwx ) erişim hakları.
  • %b : Ayrılan blok sayısı.
  • %B : Her bloğun bayt cinsinden boyutu.
  • %d : Ondalık olarak aygıt numarası.
  • %D : Onaltılık olarak aygıt numarası.
  • %f : Hex cinsinden ham mod.
  • %F Dosya türü.
  • %g : Sahibin grup kimliği.
  • %G : Sahibin grup adı.
  • %h : Sabit bağlantıların sayısı.
  • %i : düğüm numarası.
  • %m : Bağlantı noktası.
  • %n : Dosya adı.
  • %N : Sembolik bir bağlantı ise, referansı kaldırılmış dosya adıyla alıntılanan dosya adı.
  • %o : En uygun G/Ç aktarım boyutu ipucu.
  • %s : Bayt cinsinden toplam boyut.
  • %t : Karakter/blok aygıtı özel dosyaları için onaltılı olarak ana aygıt türü.
  • %T : Karakter/blok aygıtı özel dosyaları için onaltılı olarak ikincil aygıt türü.
  • %u : Sahibin kullanıcı kimliği.
  • %U : Sahibin kullanıcı adı.
  • %w : Dosyanın doğum zamanı, insan tarafından okunabilir veya bilinmiyorsa kısa çizgi “-”.
  • %W : Dosya doğum zamanı, Epoch'tan bu yana saniyeler; 0 bilinmiyorsa.
  • %x : Son erişim zamanı, insan tarafından okunabilir.
  • %X : Son erişim zamanı, Epoch'tan bu yana saniyeler.
  • %y : Son veri değişikliğinin zamanı, insan tarafından okunabilir.
  • %Y : Son veri değişikliği zamanı, Epoch'tan bu yana saniyeler.
  • %z : Son durum değişikliğinin zamanı, insan tarafından okunabilir.
  • %Z : Son durum değişikliğinin zamanı, Epoch'tan bu yana saniyeler.

"Çağ", 1970-01-01 00:00:00 +0000 (UTC) tarihinde gerçekleşen Unix Dönemidir.

Dosya sistemleri için biçim dizileri şunlardır:

  • %a : Normal (root olmayan) kullanıcılar için kullanılabilen ücretsiz blok sayısı.
  • %b : Dosya sistemindeki toplam veri blokları.
  • %c : Dosya sistemindeki toplam düğüm sayısı.
  • %d : Dosya sistemindeki serbest düğüm sayısı.
  • %f : Dosya sistemindeki boş blokların sayısı.
  • %i : Onaltılık olarak dosya sistemi kimliği.
  • %l : Dosya adlarının maksimum uzunluğu.
  • %n : Dosya adı.
  • %s : Blok boyutu (optimum yazma boyutu).
  • %S : Dosya sistemi bloklarının boyutu (blok sayıları için).
  • %t : Onaltılık olarak dosya sistemi türü.
  • %T : insan tarafından okunabilir biçimde dosya sistemi türü.

Biçim dizilerinin dizelerini kabul eden iki seçenek vardır. Bunlar --format ve --printf . Aralarındaki fark şudur: --printf yeni satır \n ve tab \t gibi C tarzı kaçış dizilerini yorumlar ve çıktısına otomatik olarak yeni satır karakteri eklemez.

Bir format dizesi oluşturalım ve onu stat geçirelim. Kullanılacak biçim dizileri dosya adı için %n , dosya boyutu için %s ve dosya türü için %F şeklindedir. Her dosyanın yeni bir satırda işlendiğinden emin olmak için dizenin sonuna \n kaçış dizisini ekleyeceğiz. Biçim dizimiz şöyle görünür:

 "%n dosyası %s bayttır ve bir %F\n'dir"

Bunu stat seçeneğini kullanarak --printf . stat code.c adlı bir dosya ve ana.? . Bu tam komuttur. --printf ile biçim dizgisi arasındaki " = " eşittir işaretine dikkat edin:

 stat --printf="%n dosyası %s bayttır ve bir %F\n" code.c ana/ana.? 

Her dosyanın raporu, bizim istediğimiz yeni bir satırda listeleniyor. Dosya adı, dosya boyutu ve dosya türü bizim için sağlanır.

Reklamcılık

Özel biçimler, standart stat çıktısında bulunandan çok daha fazla veri öğesine erişmenizi sağlar.

İnce Tane Kontrolü

Gördüğünüz gibi, ilginizi çeken belirli veri öğelerini çıkarmak için muazzam bir kapsam var. Muhtemelen daha uzun ve daha karmaşık büyüler için neden takma adlar kullanmayı önerdiğimizi de anlamışsınızdır.

İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar