Por que o gato não está alterando o tempo de acesso?

22

A segunda chamada para catar um arquivo não atualiza o tempo de acesso. Eu esperava que o tempo de acesso fosse atualizado sempre que um conteúdo de arquivo fosse exibido.

Eu vejo o mesmo comportamento se eu abrir o arquivo no navegador da web. Seu tempo de acesso não é atualizado de forma consistente.

Estou entendendo mal o tempo de acesso? O que é diferente entre as duas chamadas de gato?

$ touch test
$ stat test
  File: 'test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 152694      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1001/   aaron)   Gid: ( 1001/   aaron)
Access: 2012-08-21 11:05:40.586020996 +0200
Modify: 2012-08-21 11:05:40.586020996 +0200
Change: 2012-08-21 11:05:40.586020996 +0200
 Birth: -

$ vim test
$ stat test
  File: 'test'
  Size: 5           Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 152694      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1001/   aaron)   Gid: ( 1001/   aaron)
Access: 2012-08-21 11:05:52.890021630 +0200
Modify: 2012-08-21 11:06:31.606023626 +0200
Change: 2012-08-21 11:06:31.638023629 +0200
 Birth: -

$ cat test
test

$ stat test
  File: 'test'
  Size: 5           Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 152694      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1001/   aaron)   Gid: ( 1001/   aaron)
Access: 2012-08-21 11:06:44.662024298 +0200
Modify: 2012-08-21 11:06:31.606023626 +0200
Change: 2012-08-21 11:06:31.638023629 +0200
 Birth: -

$ cat test
test

$ stat test
  File: 'test'
  Size: 5           Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 152694      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1001/   aaron)   Gid: ( 1001/   aaron)
Access: 2012-08-21 11:06:44.662024298 +0200
Modify: 2012-08-21 11:06:31.606023626 +0200
Change: 2012-08-21 11:06:31.638023629 +0200
 Birth: -
    
por nelaaro 21.08.2012 / 11:22

1 resposta

41

link

Crítica ao atime

Escrever em um arquivo altera seu mtime e ctime, enquanto a leitura de um arquivo muda seu tempo. Como resultado, em um sistema compatível com POSIX, a leitura de um arquivo causa uma gravação, que foi criticada. Esse comportamento geralmente pode ser desativado adicionando uma opção de montagem em / etc / fstab.

No entanto, desativar a atualização atime interrompe a conformidade com POSIX e alguns aplicativos, especialmente o leitor de e-mail mutt (em algumas configurações) e alguns utilitários de observação de uso de arquivos, notavelmente tmpwatch. No pior dos casos, não atualizar o atime pode fazer com que alguns programas de backup não façam backup de um arquivo.

O desenvolvedor do kernel do Linux, Ingo Molnár, chamou a atime de "talvez a mais estúpida idéia de design Unix de todos os tempos", acrescentando: "Pense um pouco sobre isso:" Para cada arquivo lido do disco, faça um. .. escreva no disco! E, para cada arquivo que já está em cache e que lemos do cache ... faça uma gravação no disco! '"Ele enfatizou ainda mais o impacto no desempenho:

As atualizações Atime são de longe a maior deficiência de desempenho de IO que o Linux tem hoje. Livrar-se das atualizações do atime nos daria um desempenho mais cotidiano do Linux do que todas as acelerações do pagecache dos últimos 10 anos, combinados .

como saber se noatime ou relatime é a opção de montagem padrão no kernel?

man mount
....
   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear‐
          lier than the current modify or change time. (Similar  to  noat‐
          ime,  but  doesn't break mutt or other applications that need to
          know if a file has been read since the last time  it  was  modi‐
          fied.)

          Since Linux 2.6.30, the kernel defaults to the behavior provided
          by this option (unless noatime was  specified), and the stricta‐
          time  option  is  required  to  obtain traditional semantics. In
          addition, since Linux 2.6.30, the file's  last  access  time  is
          always  updated  if  it  is more than 1 day old.
....

Qual é a forma como essa partição específica foi montada e por que o cat não atualiza o tempo de acesso como eu esperava.

    
por 22.08.2012 / 10:19