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


25

A segunda chamada para classificar um arquivo não atualiza o tempo de acesso. Eu esperava que o tempo de acesso fosse atualizado sempre que um conteúdo do 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 gatos?

$ teste de toque
$ stat test
  Arquivo: `test '
  Tamanho: 0 Blocos: 0 Bloco IO: 4096 arquivo vazio regular
Equipamento: 803h / 2051d Inode: 152694 Links: 1
Acesso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acesso: 2012-08-21 11: 05: 40.586020996 +0200
Modificar: 2012-08-21 11: 05: 40.586020996 +0200
Alteração: 2012-08-21 11: 05: 40.586020996 +0200
 Nascimento: -

$ vim test
$ stat test
  Arquivo: `test '
  Tamanho: 5 blocos: 8 bloco IO: 4096 arquivo regular
Equipamento: 803h / 2051d Inode: 152694 Links: 1
Acesso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acesso: 2012-08-21 11: 05: 52.890021630 +0200
Modificar: 2012-08-21 11: 06: 31.606023626 +0200
Alteração: 2012-08-21 11: 06: 31.638023629 +0200
 Nascimento: -

$ cat test
teste

$ stat test
  Arquivo: `test '
  Tamanho: 5 blocos: 8 bloco IO: 4096 arquivo regular
Equipamento: 803h / 2051d Inode: 152694 Links: 1
Acesso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acesso: 2012-08-21 11: 06: 44.662024298 +0200
Modificar: 2012-08-21 11: 06: 31.606023626 +0200
Alteração: 2012-08-21 11: 06: 31.638023629 +0200
 Nascimento: -

$ cat test
teste

$ stat test
  Arquivo: `test '
  Tamanho: 5 blocos: 8 bloco IO: 4096 arquivo regular
Equipamento: 803h / 2051d Inode: 152694 Links: 1
Acesso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acesso: 2012-08-21 11: 06: 44.662024298 +0200
Modificar: 2012-08-21 11: 06: 31.606023626 +0200
Alteração: 2012-08-21 11: 06: 31.638023629 +0200
 Nascimento: -

Respostas:


44

http://en.wikipedia.org/wiki/Stat_(system_call)

Crítica do atime

Gravar em um arquivo altera seu mtime e ctime, enquanto a leitura de um arquivo altera seu horário. 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 desabilitado adicionando uma opção de montagem no / etc / fstab.

No entanto, desativar a atualização do atime interrompe a conformidade com o POSIX, e alguns aplicativos, principalmente o leitor de mensagens mutt (em algumas configurações), e alguns utilitários de observação de arquivos, principalmente o tmpwatch. Na pior das hipóteses, não atualizar o atime pode fazer com que alguns programas de backup falhem ao fazer backup de um arquivo.

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

As atualizações do Atime são de longe a maior deficiência de desempenho de E / S que o Linux tem hoje. Livrar-se das atualizações atime nos daria mais desempenho diário do Linux do que todas as acelerações de pagecache dos últimos 10 anos, combinadas .

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.
....

É assim que essa partição específica foi montada e por que o gato não atualiza o tempo de acesso como eu esperava.


Mais informações sobre como o ubuntu lida com o atime askubuntu.com/questions/2099/…
nela #

Aqui está uma discussão mais antiga sobre como o atime é afetado por diferentes opções de montagem. linux.koolsolutions.com/2009/01/30/…
nelaaro
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.