Como o @Celada disse, isso é realmente fácil de testar.
Uma nota, no entanto: ctime
é a última vez em que as informações do inode foram alteradas (o número do inode não muda).
Então:
- If a file's content is stored outside its inode, changing its content will change the mtime to the present, but will that changes its ctime and atime to the present?
Se você alterar o conteúdo, o mtime
será alterado, mas também o ctime
, porque os registros de data e hora do arquivo (e talvez seu tamanho) serão atualizados e essas informações serão armazenadas no inode.
Além disso, digamos que este é um arquivo de texto e você modifica seu conteúdo usando vi
, então o atime
também será atualizado porque obviamente vi
lerá o arquivo antes de exibi-lo.
Exemplo:
$ touch file1
$ stat file1
Access: 2015-05-06 19:11:41.887622158 +0200
Modify: 2015-05-06 19:11:41.887622158 +0200
Change: 2015-05-06 19:11:41.887622158 +0200
$ echo "hello" >> file1
$ stat file1
Access: 2015-05-06 19:11:41.887622158 +0200
Modify: 2015-05-06 19:12:27.816047883 +0200
Change: 2015-05-06 19:12:27.816047883 +0200
- If we change a file's attributes stored in its inode, that will change ctime to present, but will that change mtime and atime to present?
Se você alterar apenas o atributo do arquivo, apenas as informações armazenadas no inode serão alteradas. Portanto, sim, somente ctime
será alterado.
$ stat file2
Access: 2015-05-06 19:28:09.378880724 +0200
Modify: 2015-05-06 19:28:09.378880724 +0200
Change: 2015-05-06 19:28:09.378880724 +0200
$ chmod 700 file2
$ stat file2
Access: 2015-05-06 19:28:09.378880724 +0200
Modify: 2015-05-06 19:28:09.378880724 +0200
Change: 2015-05-06 19:30:24.679022346 +0200
- Does changing anything related to a file such as its content, attributes, or inode, also change atime?
Como eu disse para a primeira pergunta, se você não precisar ler o arquivo para alterar essas informações, não, atime
não será alterado.