Por que o mtime e o ctime estão mudando para um diretório quando um arquivo é modificado?

5

Estou aprendendo sobre atime, ctime, mtime em relação a arquivos e diretórios. Parece-me que, se eu modificar um arquivo dentro de um diretório, eu não mudei o "arquivo de diretório" em si no seu inode ou conteúdo do arquivo, e, portanto, ctime e mtime devem permanecer inalterados.

Mas no teste a seguir, o horário de alteração e a hora da modificação mudaram quando eu editei o arquivo. Por que eles mudaram?

$ ls    

blah.txt  test.txt  test.txt~

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:33 2015
    Modify: Tue Aug 11 08:01:49 2015
    Change: Tue Aug 11 08:01:49 2015

$ cd Write

$ ls
    blah.txt  test.txt  test.txt~

$ emacs test.txt

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:48 2015
    Modify: Tue Aug 11 08:20:48 2015
    Change: Tue Aug 11 08:20:48 2015
    
por MathStudent 11.08.2015 / 14:30

1 resposta

7

Quando você executa emacs , cria um arquivo de backup, neste caso, test.txt~ . Se já existia um arquivo com esse nome, suspeito que ele o exclua e crie um novo. Essa nova criação de arquivos está modificando o diretório e, portanto, atualizando seus horários modificados e alterados.

Se você estivesse, em vez disso, dizendo echo new line >> blah.txt , não criaria nenhum arquivo extra e, portanto, não atualizaria essas entradas no diretório. Neste caso, o shell apenas abre o arquivo (para acrescentar).

    
por 11.08.2015 / 14:50