Perché l'ordinamento dei file in base al tempo di accesso non funziona?


12

Ho provato ad usare il comando ls --time=atime

funzionava in una directory ma non funzionava in un'altra directory. Ho aperto alcuni file in vim, evince e altre applicazioni ma dopo che i tempi di accesso ai file di comando non sono stati modificati.

Quando digito touch file.txtil tempo di accesso viene modificato, ma quando digito vim file.txtil tempo di accesso non viene modificato.

Cosa c'è che non va qui?


Quale sistema operativo stai eseguendo? Molte moderne distribuzioni Linux disattivano atime; è disattivato di default nei recenti kernel Linux.
Gilles 'SO- smetti di essere malvagio'

Sto eseguendo Ubuntu 10.04.
Xralf,

Cosa fai dopo aver corso vim file.txt? Hai lasciato Vim di :qo :wq? Se non scrivi, vimnon modifica il tempo di accesso del file - questo è di progettazione.
rozcietrzewiacz,

Ora ho meno file nella directory e i tempi di accesso sono cambiati con vim e non ho bisogno di modificare il file, ma quando apro il file con .jpgestensione non è cambiato. Quando lo apro nel visualizzatore di immagini non cambia anche. Ho bisogno di cambiare il tempo di accesso ogni volta che il file viene letto da qualche applicazione.
Xralf,

Risposte:


14

Con le opzioni di montaggio predefinite, i tempi di accesso sono gestiti in modo speciale su Linux:

relatime- Un mount del filesystem con questa opzione provoca l'aggiornamento del tempo di accesso se sono (prima che si sia verificato l'aggiornamento) prima del tempo di modifica. Questo riduce significativamente le scritture causate dagli aggiornamenti atime.

L' relatimeopzione mount è stata resa l'opzione predefinita dal kernel Linux 2.6.30. Questo è il motivo per ls --time=atimenon elencare ciò che ti aspetti.

Soluzione: per utilizzare un comportamento rigoroso (legacy) per atime, utilizzare l'strictatimeopzione mount (ad es/etc/fstab. In).

Nota: per disabilitare completamente gli aggiornamenti atime, è possibile utilizzare noatime.


Questo ha aiutato. Grazie. Quanto sarà più lento il sistema strictatime?
Xralf,

gli uptades atime sono piuttosto costosi (un accesso al disco programmato per aggiornare gli inode ogni volta che si accede al loro contenuto). In particolare, se sono coinvolti molti file di piccole dimensioni, gli aggiornamenti atime potrebbero raddoppiare il caricamento del disco. Il più delle volte, i programmi che fanno affidamento sui tempi di accesso vogliono solo verificare se atime> mtime o meno. Pertanto, la nuova opzione predefinita relatimemantiene la compatibilità per quei programmi. In effetti, pochissimi programmi fanno ancora affidamento su questo, ed è spesso sicuro da usare noatime.
Stéphane Gimenez,

Mi piace la strictatimefunzionalità come la provo oggi, ma se rallenterà il sistema, mi piacerebbe impostare strictatimesolo in determinate directory, se sarà possibile.
Xralf,

1
In pratica è più lento dell'1% o del 2%, forse fino al 5% su un server con un carico del disco elevato. Bene, se ti preoccupi davvero delle prestazioni, è possibile limitare gli aggiornamenti atime a una directory specifica usando un fs dedicato montato strictatimeche userebbe questa directory come mount point.
Stéphane Gimenez,

2

È possibile disattivare la registrazione del tempo di accesso per alcuni file system (cercare noatimein /etc/fstab). Per verificarlo, puoi provare a touch -a file; ls -l --time=atime file, quindi ripetere touch -a file; ls -l --time=atime fileper vedere se cambia.

Il lscomportamento è spiegato da man ls: ls -l --time=atimemostra l'ora di accesso nella colonna data / ora. Per ordinare con questa chiave è necessario utilizzare --sort=timeanche.

Se per "il tempo non è cambiato" significa che mostra lo stesso risultato, ciò è dovuto al fatto che atime è disabilitato per il file system (vedi /etc/fstab) o perché il tempo di accesso è davvero lo stesso del tempo di modifica (abbastanza comune).

Si noti che l' elenco dei file non modifica il loro tempo di accesso - I file non sono accessibili lssolo dalla cache dell'inode .


Quando digito ls -l --time=atimel'ora non viene modificata (suppongo che la colonna con l'ora sia atime) e l'ordine di ordinamento non venga modificato, i file con last atime dovrebbero essere all'inizio o alla fine dell'elenco (se sono stati consultati l'ultima volta ).
Xralf,

@xralf Hai ripetuto entrambi touch e ls? Ho modificato la risposta per renderla più evidente.
rozcietrzewiacz,

Quando digito touch file.txt il tempo di accesso viene modificato, ma quando digito vim file.txt il tempo di accesso non viene modificato.
Xralf,

1

Potrebbe anche essere utile quando si esegue il test in questo modo per aggiungere il --full-timeflag in lsmodo da poter vedere i secondi e i sub-secondi in modo da poter vedere l'effetto senza essere vincolati dai confini dei minuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.