Soru linux procfs dosya saatleri


Bir "uzun" dizin listesini incelerken /proc/<pid>/ Linux altındaki dizin, dizin içindeki sözde dosya girişlerinin bazen onlarla ilişkili farklı zamanlar olduğunu fark ettim.

İçsellerin nasıl çalıştığını bildiğimden, yapıda herhangi bir “keyfi” veya “öngörülemez” özellik yoktur, her şey deterministiktir, her şey (dosya zamanları dahil) belirlenmelidir. bir yerde bazı kriterlere göre; Bu kriterin faydalı olup olmadığı önemli soru.

Örneğin, dizinin kendisindeki zaman damgası (/proc/<pid>/) ilgili işlemin başlangıç ​​zamanını yansıtıyor gibi görünüyor (işlem kimliği, en azından - bir çağrı tarafından güncellenmez exec) gibi çeşitli girdiler proc/<pid>/fd/ veya /proc/<pid>/cwd farklı bir değer olabilir. En iyi tahminim, bu önbelleklerin çoğunun, bilginin ilk alındığı zaman olduğu, ancak anlatması zor olduğu.

Burada kazanılacak herhangi bir yararlı bilgi var mı?


5
2018-01-03 04:58


Menşei




Cevaplar:


Bildiğiniz gibi, altındaki dosyalar /proc bellek içi dosyalar, yani sabit diskte bulunmadıkları anlamına gelir. Ancak, başka bir dosya gibi ele alınabilirler. Bu dosyaların değişiklik zamanının özel bir anlamını göremiyorum. Onlar dosya sisteminizin altındaki herhangi bir dosya gibi.

Bir dosyanın saatini kontrol etmeyi deneyebilir ve daha sonra touch o. Beklendiği gibi, dosya değişiklik zamanı güncellenecektir.


2
2018-01-03 08:10





/proc sadece başka bir dosya sistemidir, içindeki son girişler diğer dosya sistemlerinde olduğu gibi oluşturulur. Bir süreç oluşturursanız, o zaman /proc/<pid>/ işlemin verilerini tutmak için giriş oluşturulur. Bu işlem bir dosya tanıtıcıyı açtığında, içinde bir giriş oluşturulur. /proc/<pid>/fd/.

Yararlı bilgiler gelince, içerik kullanma fırsatım olmadı /proc/<pid>/ her şey için, ama bir gün bekleyebilirim. Sizin için yararlı olan çok şey var. Sysadmin bir güvenlik uzmanından farklı bir şeyi db yöneticisinden daha ilginç bulacaktır. Yine de, bu türden bir verinin mevcut olduğunu bilmek güzel. Bir gün işe yarayabilir, fakat bu sorunun somun ve civatalarını öğrenmeye çok fazla zaman harcamam. Bunun nedeni, kişisel olarak benim için bu, zaman açısından zayıf bir yatırım olacaktır. Yolculuğunuz değişebilir :).

Düzenle: Bir yorumda tylerl'in yorumuna verdiğim yanıtı yerine getiremedim, bu yüzden buraya giriyor.

tylerl, aynı zamanda problemin nasıl göründüğüne bağlı olarak doğru ve yanlışsınız (düşün: ışığın dalga / parçacık ikiliği). Bunu söylediğinde kesinlikle haklısın procfs "gerçek" bir dosya sistemi değildir. Dizin veya dosya oluşturamaz veya veriyi burada depolayamazsınız. Evet, bazı çekirdek yapılarına erişime izin veren bir API'dır, kesinlikle herhangi bir disk yapısı oluşturmaz. Bellek içi yapılardan çok emin değilim (dizinlerin [cm] zamanı /proc saklanır mı?), ama cehalet kabul ediyorum ve noktayı tartışmayacağım.

Öte yandan, keşfetmek istediğinizde procfs, orada olanlara bakın ve oradaki girişlerden öğrenin, büyük ölçüde "sadece başka bir dosya sistemi" olarak değerlendirebilirsiniz. Bazı "dosyaları" okuyabilir ve bazı "dosyalar" içine (genellikle kesin olarak tanımlanmış değerler) yazabilirsiniz. Bir süreç oluşturduğunuzda, bash &), bir /proc/<pid> Giriş, süreç oluşturma süresine karşılık gelen oluşturma tarihine sahip olacaktır. Sanırım, "orada ne olduğunu gör" modeli için, yeterince iyi bir yaklaşım "bu süreç, dosya oluşturma sürecinde dosya sisteminde yaratılır". Kesinlikle, kesinlikle, yalan olabilir. Yine de, üzerlerine konan tüm gerçek dağa ihtiyacın yoksa çok faydalı bir yalan.


1
2018-01-03 08:45



Aslında - İlk paragrafın yanlış olduğunu kesin olarak söyleyebilirim. proc dosya sistemi türü gerçek bir dosya sistemi değildir ve sistem olaylarına yanıt olarak girdileri "oluşturuldu" değil, udev. Bunun yerine, OS, doğru verileri sentezleyerek ve yerinde döndürerek sorgulara (ör. Dosya ve dizin erişimi) yanıt verir. Bir API gibi bir nesne değil. Olabilir önbellek Sonuçlar, ancak hiçbir zaman gerçek bir bellek içi veya disk üstü dosya yapısı yaratmaz. - tylerl
@tylerl Yorum için teşekkürler. Bir düzenlemede buna yanıt verdim. - Paweł Brodacki