Bagaimana perubahan waktu?

8

Saya mencoba memahami dengan tepat kapan cap waktu waktu file diubah. Di banyak tempat (misalnya, dalam jawaban yang diterima di sini ) disarankan bahwa setiap perubahan atribut file juga akan mengubah waktu. Namun, ini sepertinya tidak benar, setidaknya di Ubuntu 12.04 saya (ya, saya tahu, agak tua ...):

cat file.txt > /dev/null

mengubah atime, sehingga mengubah atribut file (dalam inode file), tetapi tidak mengubah waktu.

Sumber lain (misalnya, di sini dan di sini ) menyarankan bahwa hanya beberapa operasi pada atribut file yang benar-benar mengubah waktu, tetapi daftar yang tepat tidak disediakan.

Di mana saya dapat menemukan referensi yang tepat untuk operasi mana yang mengubah waktu?

VeryHardCoder
sumber
Mungkin masalahnya terkait cat, apakah Anda memeriksanya touch?
Mahdi

Jawaban:

8

Ada tiga prangko waktu pada sistem Unix:

  • atime: Waktu akses

    Cap waktu ini memberi tahu Anda kapan file diakses terakhir kali, termasuk hanya akses membaca.

  • ctime: Ubah waktu

    Cap waktu ini memberi tahu Anda ketika atribut file (informasi inode) berubah terakhir kali. Itu termasuk misalnya kepemilikan dan izin, tetapi perubahan konten juga memicu pembaruan cap waktu ini.

    Perhatikan bahwa perubahan pada atime tampaknya merupakan pengecualian karena tidak memicu pembaruan waktu. Ini mungkin karena akses baca sederhana yang cukup untuk memicu pembaruan atime tidak membuat perubahan yang relevan dengan atribut file. Dan salah satu tujuan utama ctime adalah untuk membantu alat cadangan untuk menentukan apakah suatu file telah berubah. Atime adalah informasi yang tidak relevan untuk alat-alat tersebut dan memperbarui cadangan hanya untuk memperbarui atime yang diubah karena seseorang telah membaca file tersebut akan sia-sia.

    Saya tidak yakin, tetapi beberapa orang berpikir perilaku ini (perubahan atime tidak memperbarui waktu) hanya karena opsi pemasangan (seperti relatime) dari sistem file yang mendasarinya yang menyimpan dan menunda pembaruan atime di inode karena alasan kinerja di memori dan hanya menerapkannya pada inode nyata pada disk (memicu pembaruan waktu) dalam kondisi tertentu.
    @kos mencobanya dan tampaknya bahkan ketika memasang FS dengan opsi `strictatime``, ctime tampaknya tidak pernah diperbarui jika atime berubah.

  • mtime: Waktu modifikasi

    Cap waktu ini memberi tahu Anda saat konten file diubah terakhir kali.


Jadi akses baca sederhana cat FILENAMEhanya menggunakan perubahan atime , tetapi bukan ctime karena tidak ada atribut file yang dimodifikasi. Jumlah atime yang diubah tidak masuk hitungan.

Komandan Byte
sumber
Itulah intinya: mengapa atime yang diubah tidak masuk hitungan? Bukankah itu atribut file?
VeryHardCoder
@ VeryHardCoder Saya mencoba menguraikan jawaban saya di titik itu dan menambahkan beberapa penjelasan.
Byte Commander