Existe-t-il une commande sous Linux pour vérifier tous les timestamps d'un fichier ?
J'essaie de voir les dernières dates de modification, de création et de toucher du fichier.
Existe-t-il une commande sous Linux pour vérifier tous les timestamps d'un fichier ?
J'essaie de voir les dernières dates de modification, de création et de toucher du fichier.
La commande est appelée 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
Si vous souhaitez ajuster le format, reportez-vous aux pages de manuel, car la sortie est spécifique au système d'exploitation et varie sous Linux/Unix.
En général, vous pouvez également obtenir ces temps par le biais d'une inscription normale dans un annuaire :
ls -l
sorties la dernière fois que le contenu du fichier a été modifié, les mtime
ls -lc
le dernier moment de la modification de l'état du fichier, le ctime
( Quelle est la différence ? )ls -lu
Le dernier temps d'accès aux sorties, le atime
(bien que l'utilité de ce concept soit sujet à discussion )Et bien sûr, ctime
n'enregistre pas la date de "création" d'un fichier. La spécification POSIX ne définit que trois timestamps, mais certains systèmes de fichiers Linux stocker l'heure de naissance/l'heure de création. Comment trouver la date de création d'un fichier ? Sur une telle configuration supportée, on pourrait utiliser
stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'
Il n'y a que THREE des valeurs de temps distinctes stockées pour chacun de vos fichiers, comme défini par le Norme POSIX : http://pubs.opengroup.org/onlinepubs/9699919799/ (voir Définitions de base section -> 4. Concepts généraux -> 4.8 Fichier Mise à jour des temps)
Chaque fichier a trois horodatages distincts associés : l'heure du dernier accès aux données l'heure de la dernière modification des données et le moment où le dernier changement d'état du fichier . Ces valeurs sont renvoyées dans la structure de caractéristiques de fichier struct stat, comme décrit dans _<sys/stat.h>_ .
Et de <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.
Les exemples suivants montrent la différence entre les atime , mtime y ctime Ces exemples sont dans GNU/Linux BASH. Vous pouvez utiliser stat -x
sous Mac OS X ou autre BSD Dist. pour voir le format de sortie similaire.
$ 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
Lorsque le fichier vient d'être créé, trois horodatages sont les mêmes.
D'abord. accès les données du fichier en le lisant ( less
o vim
), l'imprimer ( cat
) ou le copier dans un autre fichier ( 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
Maintenant. changement le statut du fichier, en modifiant la permission ( chmod
) ou le renommer ( 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!
Notez que jusqu'à présent, le contenu ( données ) du fichier est toujours le même que lors de sa création.
Enfin, il faut modifier le contenu du fichier en l'éditant.
$ 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!
Notez également que la nouvelle version de stat
(par exemple stat --version 8.13
dans Ubuntu 12.04) dispose d'une 4ème information d'horodatage - les Heure de naissance (heure de création du fichier). Bien qu'il puisse ne pas afficher l'heure correcte pour le moment :
$ 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: -
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.