ls -lu não fornece o último tempo de acesso

1

A página de manual de ls diz:

   -u     with -lt: sort by, and show, access time; with -l: show access time and sort by name;
          otherwise: sort by access time

mas isso não parece funcionar:

test@debian:~$ date > file
test@debian:~$ date
Sun Jan 17 13:21:12 CET 2016
test@debian:~$ cat file 
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file 
-rw-r--r-- 1 test test 29 Jan 17 13:21 file
test@debian:~$ date
Sun Jan 17 13:22:02 CET 2016
test@debian:~$ cat file 
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file 
-rw-r--r-- 1 test test 29 Jan 17 13:21 file

Deve-se esperar em vez disso (desde o último acesso às 13:22 ou mais tarde) algo como:

-rw-r--r-- 1 test test 29 Jan 17 13:22 file

Qual é a explicação? O arquivo está armazenado em buffer?

    
por wolf-revo-cats 17.01.2016 / 13:34

1 resposta

3

Seu sistema de arquivos é montado com relatime por padrão. Os horários de acesso não serão atualizados, se já forem mais recentes ou iguais ao tempo de modificação do arquivo.

Esta é uma otimização (com violação de POSIX), para evitar que cada arquivo leia causando uma gravação no disco.

As atualizações de atime aparente não são afetadas pelo buffering. ( lazyatime armazenará em buffer por até 24 horas - mas o tempo de memória será atualizado sempre, e é isso que ls mostrará.)

    
por 17.01.2016 / 13:48