Dlaczego sortowanie plików według czasu dostępu nie działa?

12

Próbowałem użyć polecenia ls --time=atime

działał w jednym katalogu, ale nie działał w innym katalogu. Otworzyłem niektóre pliki w vimie, evince i innych aplikacjach, ale czasy dostępu do plików poleceń nie uległy zmianie.

Podczas pisania touch file.txtczas dostępu jest zmieniany, ale podczas pisania vim file.txtczas dostępu nie ulega zmianie.

Co tu jest nie tak?

xralf
źródło
Z jakiego systemu operacyjnego korzystasz? Wiele współczesnych dystrybucji Linuksa wyłącza się jednocześnie; jest domyślnie wyłączony w najnowszych jądrach Linuksa.
Gilles „SO- przestań być zły”
Używam Ubuntu 10.04.
xralf
Co robisz po uruchomieniu vim file.txt? Czy rezygnujesz z vima przez :qczy :wq? Jeśli nie piszesz, vimnie modyfikuje czasu dostępu do pliku - jest to zgodne z projektem.
rozcietrzewiacz
Teraz mam mniej plików w katalogu, a czasy dostępu są zmieniane za pomocą vima i nie muszę edytować pliku, ale kiedy otwieram plik z .jpgrozszerzeniem, nie ulega to zmianie. Kiedy otwieram go w przeglądarce zdjęć, to też się nie zmienia. Potrzebuję zmienić czas dostępu za każdym razem, gdy jakiś plik został odczytany przez jakąś aplikację.
xralf

Odpowiedzi:

14

Przy domyślnych opcjach montowania czasy dostępu są obsługiwane w sposób szczególny w systemie Linux:

relatime- Podłączenie systemu plików z tą opcją powoduje, że czas dostępu jest aktualizowany, jeśli są (przed aktualizacją) wcześniej niż czas modyfikacji. To znacznie ogranicza zapisy spowodowane aktualizacjami atime.

Opcja relatimemontowania stała się opcją domyślną od jądra Linuksa 2.6.30. To jest powód, dla którego ls --time=atimenie wymieniono tego, czego oczekujesz.

Rozwiązanie: Aby użyć ścisłego (starszego) zachowania na raz, skorzystaj zstrictatimeopcji montowania (np/etc/fstab.In).

Uwaga: Aby całkowicie wyłączyć aktualizacje atime, można użyć noatime.

Stéphane Gimenez
źródło
To pomogło. Dziękuję Ci. O ile wolniej będzie działał system strictatime?
xralf
uaktualnienia w tym czasie są dość kosztowne (jeden zaplanowany dostęp do dysku w celu aktualizacji i-węzłów przy każdym dostępie do zawartości pliku). W szczególności, jeśli w grę wchodzi wiele małych plików, aktualizacje w czasie mogą podwoić ładowanie dysku. W większości przypadków programy polegające na czasach dostępu chcą tylko sprawdzić, czy atime> mtime, czy nie. Nowa opcja domyślna relatimezachowuje zgodność tych programów. W rzeczywistości bardzo niewiele programów polega na tym i często jest to bezpieczne noatime.
Stéphane Gimenez
Podoba mi się ta strictatimefunkcja, gdy próbuję ją dzisiaj, ale jeśli spowolni system, chciałbym ustawić strictatimetylko w niektórych katalogach, jeśli będzie to możliwe.
xralf
1
W praktyce jest to najwyżej 1% lub 2% wolniej, może nawet 5% na serwerze z dużym obciążeniem dysku. Cóż, jeśli naprawdę zależy Ci na wydajności, możesz ograniczyć aktualizacje atime do określonego katalogu, używając dedykowanego fs zamontowanego z strictatimetym, który użyłby tego katalogu jako punktu podłączenia.
Stéphane Gimenez,
2

Możesz wyłączyć rejestrowanie czasu dostępu dla niektórych systemów plików (poszukaj noatimew /etc/fstab). Aby to przetestować, możesz spróbować touch -a file; ls -l --time=atime file, a następnie powtórzyć, touch -a file; ls -l --time=atime fileaby zobaczyć, czy to się zmieni.

lsZachowanie tłumaczy się man ls: ls -l --time=atimepokazy dostęp czas w kolumnie czasu / daty. Aby posortować według tego klucza, musisz również użyć --sort=time.

Jeśli przez „czas się nie zmienia”, oznacza to, że pokazuje ten sam wynik, to dlatego, że atime jest wyłączony dla systemu plików (patrz /etc/fstab) lub ponieważ czas dostępu jest naprawdę taki sam jak czas modyfikacji (dość powszechny).

Pamiętaj, że lista plików nie zmienia czasu dostępu - do plików nie ma dostępu ls, tylko pamięć podręczna i-węzła .

l0b0
źródło
Kiedy wpisuję, ls -l --time=atimeczas nie jest zmieniany (zakładam, że kolumna z czasem to atime) i kolejność sortowania nie ulega zmianie, pliki z ostatnim atime powinny znajdować się na początku lub na końcu listy (jeśli były ostatnio otwierane) ).
xralf,
@xralf Czy powtórzyłeś oba touch i ls? Zredagowałem odpowiedź, aby była bardziej widoczna.
rozcietrzewiacz
Kiedy piszę touch file.txt, czas dostępu jest zmieniany, ale kiedy piszę vim file.txt, czas dostępu nie ulega zmianie.
xralf
1

Przydaje się również podczas takiego testowania, aby dodać --full-timeflagę ls, aby zobaczyć sekundy i sekundy podrzędne, dzięki czemu można zobaczyć efekt bez ograniczania się do minutowych granic.

ssb
źródło