Bagaimana cara memeriksa semua cap waktu file?

52

Apakah ada perintah di Linux untuk memeriksa semua cap waktu suatu file?

Saya mencoba melihat tanggal terakhir yang dimodifikasi, dibuat, dan disentuh pada file.

Mechaflash
sumber
4
Hanya untuk menunjukkan, file Linux tidak memiliki tanggal lahir. Jadi, tidak mungkin untuk menentukan tanggal pembuatan file.
FatalError
memperhatikan bahwa = (. Terima kasih telah menunjukkannya kepada saya.
Mechaflash
4
@FatalError: Berbagai filesystem sudah mendukung cap waktu kelahiran / pembuatan; masalah sebenarnya adalah dalam mengakses informasi tambahan tersebut. ( struct statSayangnya, seseorang tidak dapat memperpanjang tanpa merusak barang-barang ...) Anda dapat mencoba debugfs -R "stat <1234>" /dev/sdXYuntuk ext4, menggantikannya 1234dengan ino.
grawity
@grawity: Rapi! Saya selalu bertanya-tanya mengapa tidak ada yang memilikinya ... tapi saya rasa mereka punya, tapi seperti yang Anda katakan, tidak bisa begitu saja memecahkan ABI untuk binari yang ada. Terima kasih atas tipnya :).
FatalError
1
@FatalError, Waktu lahir dapat ditampilkan dengan statperintah Linux , lihat Bagaimana menemukan tanggal pembuatan file? dan Sistem file apa di Linux yang menyimpan waktu pembuatan? .
Franklin Piat

Jawaban:

73

Perintah itu disebut stat.

$ stat test
234881026 41570368 -rw-r--r-- 1 werner staff 0 0 "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" 4096 0 0 test

Jika Anda ingin menyesuaikan format, lihat halaman manual, karena outputnya khusus untuk OS dan bervariasi di Linux / Unix.

Secara umum, Anda bisa mendapatkan waktu melalui daftar direktori normal juga:

  • ls -l keluaran terakhir kali konten file diubah, the mtime
  • ls -lckeluaran terakhir kali dari modifikasi status file, ctime( Apa bedanya? )
  • ls -lumenampilkan waktu akses terakhir, atime(meskipun kegunaan konsep ini dapat didiskusikan )

Dan tentu saja, ctimetidak merekam kapan file "dibuat". Spesifikasi POSIX hanya mendefinisikan tiga cap waktu, tetapi beberapa sistem file Linux menyimpan Waktu Lahir / Waktu Pembuatan. Bagaimana menemukan tanggal pembuatan file? Pada konfigurasi yang didukung seperti itu, orang dapat menggunakan

stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'
slhck
sumber
statsangat rinci. Tetapi lshanya perlu satu baris. Akan lebih baik jika bisa juga menampilkan detik. Namun, saat membuat daftar file, yang pertama sangat cocok.
neverMind9
ls-l adalah solusi cepat untuk saya
Andrew
Saya perhatikan bahwa hasil dari ls -ldapat menampilkan format tanggal yang berbeda ketika ada BusyBox diinstal (di Android). Saya pikir tanpa itu, itu seperti "2019-07-26 14:41", dan dengan itu, itu seperti "6 Mei 21:27". Kenapa tahun ini hilang? Apakah ada cara untuk memaksanya menggunakan format tanpanya?
pengembang android
@ androiddeveloper Seperti yang saya katakan, jawabannya tergantung pada OS. Saya pikir Anda harus membuka pertanyaan baru. Jika Anda berbicara tentang Android secara spesifik, mungkin Stack Overflow atau Android Enthusiasts akan lebih cocok.
slhck
@ Slhck Yah itu OS yang sama, hanya dengan BusyBox diinstal. Saya bertanya apakah mungkin (artinya: apakah ada perintah untuk digunakan) untuk mendapatkan format yang akan ditampilkan.
pengembang android
21

Hanya ada TIGA nilai waktu berbeda yang disimpan untuk masing-masing file Anda, sebagaimana didefinisikan oleh POSIX Standard : http://pubs.opengroup.org/onlinepubs/9699919799/ (lihat bagian Definisi Dasar -> 4. Konsep Umum -> 4,8 File Pembaruan Waktu)

Setiap file memiliki tiga cap waktu terkait yang berbeda: waktu akses data terakhir , waktu modifikasi data terakhir , dan waktu status file terakhir kali berubah . Nilai-nilai ini dikembalikan dalam stat struktur struktur karakteristik file, seperti yang dijelaskan dalam <sys / stat.h> .

Dan dari <sys / stat.h> :

atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.

Contoh-contoh berikut menunjukkan perbedaan antara atime , mtime dan ctime , contoh-contoh ini ada di GNU / Linux BASH. Anda dapat menggunakan stat -xdi Mac OS X atau Dist BSD lainnya. untuk melihat format output yang serupa.

$ stat --version
stat (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ touch test
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:58:28.609223953 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

Ketika file baru saja dibuat, tiga cap waktu adalah sama.


1. atime

Pertama, mari kita mengakses data file dengan membacanya ( lessatau vim), mencetaknya ( cat) atau menyalinnya ke file lain ( cp).

$ cat test #Nothing will be printed out, since the file is empty
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800  <-- atime Changed!
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

2. waktu

Sekarang mari kita ubah status file, dengan mengubah izin ( chmod) atau mengubah nama itu ( mv)

$ chmod u+x test
$ stat stet
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:04:10.178285430 +0800  <-- ctime Changed!
$    
$ mv test testing
$ stat testing
  File: `testing'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:06:33.342207679 +0800  <-- ctime Changed again!

Perhatikan bahwa sampai sekarang, isi ( data ) file masih sama dengan saat dibuat.


3. jam

Akhirnya, mari kita modifikasi konten file dengan mengedit file.

$ echo 'Modify the DATA of the file' > testing
$ echo 'Modify the DATA of the file also change the file status' > testing
$ stat testing
  File: `testing'
  Size: 56          Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 11:09:48.247345148 +0800  <-- mtime Changed!
Change: 2014-03-16 11:09:48.247345148 +0800  <-- ctime also Changed!

4. waktu kelahiran

Perhatikan juga bahwa versi yang lebih baru dari stat(misalnya stat --version 8.13di Ubuntu 12.04) memiliki informasi cap waktu 4 - Waktu Lahir (waktu pembuatan file). Meskipun mungkin tidak menunjukkan waktu yang tepat untuk saat ini:

$ stat --version
stat (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ stat birth_time
  File: `birth_time'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 4073946     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ bingyao)   Gid: ( 1000/ bingyao)
Access: 2014-03-16 10:46:48.838718970 +0800
Modify: 2014-03-16 10:46:48.838718970 +0800
Change: 2014-03-16 10:46:48.838718970 +0800
 Birth: -
YaOzI
sumber
Apa arti dari 10: 46: 48.838718970? HH: MM: SS. nanodetik?
Dzung Nguyen
2
Ya . "Sejak kernel 2.5.48, struktur stat mendukung resolusi nanosecond untuk tiga bidang cap waktu file ...."
Tom Lord
Waktu pembuatan dapat diketahui dengan akses root dan debugfs jika diperlukan: moiseevigor.github.io/software/2015/01/30/…
Mikko Rantalainen
2
Waktu kelahiran ... dengan senang hati. Karena perubahan terakhir dan perubahan terakhir hampir untuk tujuan yang sama tetapi masih berbeda. Adalah baik jika semua empat yang ada.
neverMind9