Mengapa menyortir file berdasarkan waktu akses tidak berfungsi?

12

Saya mencoba menggunakan perintah ls --time=atime

itu berfungsi di satu direktori tetapi tidak bekerja di direktori lain. Saya membuka file tertentu dalam vim, evince dan aplikasi lain tetapi setelah waktu akses file perintah tidak berubah.

Ketika saya mengetik touch file.txtwaktu akses berubah, tetapi ketika saya mengetik vim file.txtwaktu akses tidak berubah.

Apa yang salah di sini?

xralf
sumber
OS apa yang Anda jalankan? Banyak distribusi Linux modern mematikan atime; tidak aktif secara default di kernel Linux terbaru.
Gilles 'SO- stop being evil'
Saya menjalankan Ubuntu 10.04.
xralf
Apa yang kamu lakukan setelah berlari vim file.txt? Apakah Anda berhenti vim oleh :qatau :wq? Jika Anda tidak menulis, vimjangan modifikasi waktu akses file - ini adalah desain.
rozcietrzewiacz
Sekarang saya memiliki lebih sedikit file di direktori dan waktu akses diubah dengan vim dan saya tidak perlu mengedit file, tetapi ketika saya membuka file dengan .jpgekstensi itu tidak berubah. Ketika saya membukanya di penampil gambar itu tidak berubah juga. Saya perlu waktu akses diubah setiap kali file dibaca oleh beberapa aplikasi.
xralf

Jawaban:

14

Dengan opsi pemasangan standar, waktu akses ditangani dengan cara khusus di linux:

relatime- Sistem file yang dipasang dengan opsi ini menyebabkan waktu akses diperbarui jika mereka (sebelum pembaruan terjadi) lebih awal dari waktu modifikasi. Ini secara signifikan mengurangi penulisan yang disebabkan oleh pembaruan atime.

The relatimemount option dibuat pilihan default sejak linux kernel 2.6.30. Itulah alasan untuk ls --time=atimetidak mencantumkan apa yang Anda harapkan.

Solusi: Untuk menggunakan perilaku ketat (warisan) untuk atime gunakanstrictatimeopsi mount (misalnya di/etc/fstab).

Catatan: Untuk sepenuhnya menonaktifkan pembaruan atime, seseorang dapat menggunakan noatime.

Stéphane Gimenez
sumber
Ini membantu. Terima kasih. Berapa banyak sistem akan lebih lambat strictatime?
xralf
uptades atime cukup mahal (satu akses disk terjadwal untuk memperbarui inode setiap kali konten file mereka diakses). Secara khusus, jika banyak file kecil yang terlibat, pembaruan atime mungkin menggandakan beban disk. Sebagian besar waktu, program bergantung pada waktu akses hanya ingin memeriksa apakah atime> mtime atau tidak. Jadi, opsi default baru relatimemenjaga kompatibilitas untuk program-program tersebut. Faktanya, sangat sedikit program yang masih mengandalkan ini, dan sering kali aman digunakan noatime.
Stéphane Gimenez
Saya suka strictatimefitur yang saya coba hari ini, tetapi jika itu akan membuat sistem lambat, saya hanya ingin mengatur strictatimedi direktori tertentu, jika mungkin.
xralf
1
Dalam prakteknya paling lambat 1% atau 2% lebih lambat, mungkin hingga 5% pada server dengan beban disk yang tinggi. Nah, jika Anda benar-benar peduli dengan kinerja, dimungkinkan untuk membatasi pembaruan atime ke direktori tertentu menggunakan fs khusus yang terpasang dengan strictatimeyang akan menggunakan direktori ini sebagai mount point.
Stéphane Gimenez
2

Anda dapat mematikan rekaman waktu akses untuk beberapa sistem file (lihat noatimedi /etc/fstab). Untuk menguji ini, Anda bisa mencoba touch -a file; ls -l --time=atime file, lalu ulangi touch -a file; ls -l --time=atime fileuntuk melihat apakah itu berubah.

The lsperilaku dijelaskan oleh man ls: ls -l --time=atimemenunjukkan mengakses waktu di tanggal / waktu kolom. Untuk mengurutkan berdasarkan kunci ini, Anda perlu menggunakan --sort=timejuga.

Jika Anda dengan "waktu tidak berubah" berarti itu menunjukkan hasil yang sama, itu baik karena atime dinonaktifkan untuk sistem file (lihat /etc/fstab) atau karena waktu akses benar-benar sama dengan waktu modifikasi (sangat umum).

Perhatikan bahwa daftar file tidak mengubah waktu aksesnya - File tidak diakses oleh ls, hanya inode cache .

l0b0
sumber
Ketika saya mengetik ls -l --time=atimewaktu tidak berubah (saya berasumsi bahwa kolom dengan waktu adalah atime) dan urutan penyortiran tidak berubah, file dengan atime terakhir harus di awal atau di akhir daftar (jika mereka terakhir diakses ).
xralf
@xralf Apakah Anda mengulang keduanya touch dan ls? Saya mengedit jawaban untuk membuatnya lebih jelas.
rozcietrzewiacz
Ketika saya mengetik file touch.txt waktu akses berubah, tetapi ketika saya mengetik vim file.txt waktu akses tidak berubah.
xralf
1

Mungkin juga berguna saat menguji seperti ini untuk menambahkan --full-timebendera lssehingga Anda dapat melihat detik dan sub-detik sehingga Anda dapat melihat efeknya tanpa dibatasi oleh batas menit.

ssb
sumber