Erişim zamanına göre dosyaları sıralama neden çalışmıyor?


12

Komutu kullanmaya çalıştım ls --time=atime

bir dizinde çalışıyordu, ancak başka bir dizinde çalışmıyordu. Bazı dosyaları vim, evince ve diğer uygulamalarda açtım, ancak komut dosyasından sonra erişim süreleri değişmedi.

Yazdığımda touch file.txterişim süresi değişiyor, ancak yazdığımda vim file.txterişim süresi değişmiyor.

Burada yanlış olan ne?


Hangi işletim sistemini kullanıyorsunuz? Birçok modern Linux dağıtımı zamanla kapanıyor; son Linux çekirdeğinde varsayılan olarak kapalıdır.
Gilles 'SO- kötü olmayı kes

Ubuntu 10.04 kullanıyorum.
xralf

Koştuktan sonra ne yaparsın vim file.txt? Vim'i :qveya ile mi bıraktın :wq? Yazmıyorsun ise vimdosyanın erişim zamanını değiştirmez - Bu tasarım gereğidir.
rozcietrzewiacz

Şimdi dizinde daha az dosyam var ve vim ile erişim süreleri değişiyor ve dosyayı düzenlemem gerekmiyor, ancak .jpguzantılı bir dosyayı açtığımda değişmiyor. Resim görüntüleyicide açtığımda da değişmedi. Dosya her uygulama tarafından okunduğunda erişim zamanının değiştirilmesi gerekir.
xralf

Yanıtlar:


14

Varsayılan bağlama seçenekleriyle, erişim süreleri linux'da özel bir şekilde işlenir:

relatime- Bu seçeneğe sahip bir dosya sistemi bağlantısı, değişiklik süresinden (güncelleme gerçekleşmeden önce) erişim süresinin güncellenmesine neden olur. Bu, atime güncellemelerinin neden olduğu yazmaları önemli ölçüde azaltır.

relatimeMontaj seçeneği varsayılan seçeneği yapıldığı beri Linux çekirdeği 2.6.30. ls --time=atimeBeklediğiniz şeyleri listelememenizin nedeni budur.

Çözüm: Atime için katı (eski) davranış kullanmak içinstrictatimebağlama seçeneğini kullanın (örn/etc/fstab.İçinde).

Not: Atime güncellemelerini tamamen devre dışı bırakmak için kullanılabilir noatime.


Bu yardımcı oldu. Teşekkür ederim. Sistem ne kadar yavaş olacak strictatime?
xralf

atime uptades oldukça pahalıdır (dosya içeriğine her erişildiğinde inode'ları güncellemek için bir zamanlanmış disk erişimi). Özellikle, çok sayıda küçük dosya varsa, atime güncellemeleri disk yükünü iki katına çıkarabilir. Çoğu zaman, erişim sürelerine dayanan programlar sadece atime> mtime olup olmadığını kontrol etmek ister . Bu nedenle, yeni varsayılan seçenek relatimebu programlarla uyumluluğu korur. Aslında, çok az program buna güvenmektedir ve kullanımı genellikle güvenlidir noatime.
Stéphane Gimenez

Bu strictatimeözelliği bugün denediğim gibi seviyorum, ancak sistemi yavaşlatacaksa strictatime, mümkünse sadece belirli dizinlerde ayarlamak istiyorum .
xralf

1
Uygulamada, yüksek disk yükü olan bir sunucuda en fazla% 1 veya% 2 daha yavaş, belki% 5'e kadar. Performansı gerçekten önemsiyorsanız, strictatimebu dizini bağlama noktası olarak kullanacak olan özel bir fs kullanarak atime güncellemelerini belirli bir dizine kısıtlamak mümkündür .
Stéphane Gimenez

2

Sen (için göz erişim süresi bazı dosya sistemleri için kayıt kapatabilirsiniz noatimeiçinde /etc/fstab). Bunu test etmek için touch -a file; ls -l --time=atime file, deneyebilir , sonra touch -a file; ls -l --time=atime filedeğişip değişmediğini görmek için tekrarlayabilirsiniz .

lsDavranış ile açıklanabilir man ls: ls -l --time=atimegösterileri tarih / saat sütununa zaman erişin. Bu tuşa göre sıralamak için de kullanmanız gerekir --sort=time.

"Zaman değişmez" ifadesi aynı sonucu gösterdiğini belirtirse, dosya sistemi için atime devre dışı bırakıldığından (bkz. /etc/fstab) Veya erişim süresinin gerçekten de değişiklik süresiyle aynı olduğundan (oldukça yaygın) anlamına gelir.

Not listeleme dosyaları yok değil onların erişim saatini değiştirmek - dosyalar tarafından erişilebilir değildir ls, sadece inode önbelleği .


Ben yazarken ls -l --time=atime(ı zamanla sütun atime olduğunu varsayalım) saat değiştirilmez ve sıralama sırası değişmez geçen erişilen olsaydı, son atime ile dosyaları (başında veya listenin sonuna olmalıdır ).
xralf

@xralf tekrarlayabilir mi hem touch ve ls? Cevabı daha belirgin hale getirmek için düzenledim.
rozcietrzewiacz

Touch file.txt yazdığımda erişim zamanı değişti, ancak vim file.txt yazdığımda erişim zamanı değişmedi.
xralf

1

Bu tür testleri test ederken, --full-timebayrağı eklemek için lssaniye ve alt saniyeleri görebilmeniz de yararlı olabilir , böylece dakika sınırlarıyla kısıtlanmadan efekti görebilirsiniz.

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.