Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)

在windows下,一个文件有:创建时间、修改时间、访问时间。

而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。

两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后,
状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过、读过、其状态是否
变过,所以判断文件的建立时间基本上能为不可能。

如何查一个文件的三个时间呢?

先用下面的命令来建立一个文件

echo "new file" > file.txt  
[[email protected] wm]# stat file.txt
  File: `file.txt‘
  Size: 9            Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d   Inode: 5255731     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-08-22 17:41:15.058576627 +0800
Modify: 2014-08-22 17:41:15.058576627 +0800
Change: 2014-08-22 17:41:15.058576627 +0800

说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat *查看这个目录所有文件的状态。

ctime=change time

atime=access time

mtime=modifiy time

因为这是一个新的文件(filetime.txt),没做过内容、属性的更改,也没读过这个文件,所以三者(访问时间、修改时间、状态改动时间)的时间是一致的,这时文件的修改时间与这三个时间是一样的,是没有疑问的。

1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令(这里注意,有时候输入vi也会修改访问时间,因为也需要访问内容)。ls、stat命令都不会修改文件的访问时间。

2、修改时间,修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。


3、状态改动时间。是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。

另个除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:

ls -lc filename 列出文件的 ctime (最后更改时间)

ls -lu filename 列出文件的 atime(最后存取时间)

ls -l filename 列出文件的 mtime (最后修改时间)

Linux
stat函数中,用st_atime表示文件数据最近的存取时间(last accessed
time);用st_mtime表示文件数据最近的修改时间(last modified
time);使用st_ctime表示文件i节点数据最近的修改时间(last i-node‘s status changed time)。

字段           说明                  例子           ls(-l)

st_atime  文件数据的最后存取时间       read            -u

st_mtime  文件数据的最后修改时间       write           缺省

st_ctime  文件数据的最后更改时间       chown,chmod     -c

linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。

另外,可以格式化输出文件的三种时间,如:

find . -name file -printf "%AY-%Am-%Ad %AH:%AM:%AS"

find . -name file -printf "%TY-%Tm-%Td %TH:%TM:%TS"

find . -name file -printf "%CY-%Cm-%Cd %CH:%CM:%CS"

linux的ctime代表的是文件修改时间,如果文件被修改过就很难知道文件的创建时间,在某些特殊情况下,需要查看文件的创建时间,正常情况下查看文件的ctime是无法实现的。可以使用一个变通的方法来实现保留文件创建时间,但是同时也会牺牲一些其它特性。

可以在mount文件的时候使用参数-o noatime,来把系统更新atime的特性关闭。使用了noatime参数挂载后,在文件被修改后文件的atime是不会被改变的,使用stat查看到的atime就是文件的创建时间。

如:

[[email protected] wm]# stat file.txt
  File: `file.txt‘
  Size: 9             Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d    Inode: 5255731     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-08-22 17:41:15.058576627 +0800
Modify: 2014-08-22 17:41:15.058576627 +0800
Change: 2014-08-22 17:41:15.058576627 +0800
[[email protected] wm]# cat file.txt
new file
[[email protected] wm]# stat file.txt
  File: `file.txt‘
  Size: 9             Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d    Inode: 5255731     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-08-22 17:44:31.512576521 +0800
Modify: 2014-08-22 17:41:15.058576627 +0800
Change: 2014-08-22 17:41:15.058576627 +0800
[[email protected] wm]# 

获取文件名,文件大小,生成日期

[[email protected] wm]# ls -ltr --full-time | grep -v total
-rw-r--r-- 1 root root  1394 2014-08-18 20:38:31.548634852 +0800 epollserver.c
-rw-r--r-- 1 root root  4651 2014-08-18 21:54:20.000000000 +0800 a.cc
-rw-r--r-- 1 root root   123 2014-08-18 22:00:12.734631459 +0800 utils.h
-rw-r--r-- 1 root root  1699 2014-08-18 22:00:47.147630750 +0800 local.h
-rw-r--r-- 1 root root 24678 2014-08-18 22:01:12.171631554 +0800 server.cpp
-rw-r--r-- 1 root root  1399 2014-08-18 22:01:27.522631532 +0800 tester.cpp
-rw-r--r-- 1 root root 43637 2014-08-18 22:07:43.033631333 +0800 client.cpp
-rw-r--r-- 1 root root     9 2014-08-22 17:41:15.058576627 +0800 file.txt
[[email protected] wm]# ls -ltr --full-time | grep -v total | awk -F " " ‘{printf "%-40s %-10d %-10s %-20s\n",$9,$5,$6,$7}‘
epollserver.c                            1394       2014-08-18 20:38:31.548634852
a.cc                                     4651       2014-08-18 21:54:20.000000000
utils.h                                  123        2014-08-18 22:00:12.734631459
local.h                                  1699       2014-08-18 22:00:47.147630750
server.cpp                               24678      2014-08-18 22:01:12.171631554
tester.cpp                               1399       2014-08-18 22:01:27.522631532
client.cpp                               43637      2014-08-18 22:07:43.033631333
file.txt                                 9          2014-08-22 17:41:15.058576627
[[email protected] wm]# 

转自:

http://blog.csdn.net/wmengbeyond/article/details/38759953

时间: 2024-12-27 13:46:46

Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)的相关文章

linux中文件的三种时间

Linux 中文件的三种时间 文件的三种时间: 1.        mtime 文件的修改时间 文件的内容发生改变.包括文件中空格数目.字符的变动再复原等这些看上去并不影响有效数据内容的操作. 有意的改变时间戳.Eg:使用touch –m –t 2016666666666fileName这样的命令故意改变mtime. 2.        ctime 文件的改变时间 文件的"属性"改变.Eg:文件的权限.属主.属组等. mtime发生改变和人为的改变atime的情况,Eg:touch –

Linux下文件的三个时间意义及用法

Linux下文件的三个时间参数: (1)modification time(mtime):内容修改时间        这里的修改时间指的是文件的内容发生变化,而更新的时间. (2)change time(ctime):状态修改时间        这里的修改时间指的是文件的属性或者权限发生变化,而更新的时间. (3)access time(atime):最后访问时间        这里的访问时间是指文件被读取,而更新的时间. 在Linux下操作命令分别为: ls -l    获取文件最后一次内容修

linux中文件的三种time(atime,mtime,ctime)

linux下文件有3个时间的,分别是atime,mtime,ctime.有些博友对这3个时间还是比较迷茫和困惑的,我整理了下,写下来希望对博友们有所帮助. 1 这三个time的含义 简名 全名 中文名 含义 atime access time 访问时间 文件中的数据库最后被访问的时间 mtime modify time 修改时间 文件内容被修改的最后时间 ctime change time 变化时间 文件的元数据发生变化.比如权限,所有者等 2 如何查看这3个time [[email prote

Linux下文件的三个时间:ctime、mtime、atime的区别

Linux下,文件的三个时间参数 (1)modification time(mtime):内容修改时间 这里的修改时间指的是文件的内容发生变化,而更新的时间. Eg:vi后保存文件. (2)status time(ctime):状态修改时间 这里的修改时间指的是文件的属性或者权限发生变化,而更新的时间. Eg:通过chmod.chown命令修改一次文件属性,这个时间就会更新. (3)access time(atime):最后访问时间 这里的访问时间是指文件被读取,而更新的时间. Eg:对这个文件

[转] Linux下SVN的三种备份方式

(本文例子基于FreeBSD/Linux实现,windows环境请自己做出相应修改)   配置管理的一个重要使命是保证数据的安全性,防止服务器应硬盘损坏.误操作造成数据无法恢复的灾难性后果.因此制定一个完整的备份策略非常重要. 一般来说,备份策略应规定如下几部分内容:备份频度.备份方式.备份存放地点.备份责任人.灾难恢复检查措施及规定. 备份频度.存放地点等内容可以根据自己的实际情况自行制定:本文重点描述备份方式. svn备份一般采用三种方式:1)svnadmin dump 2)svnadmin

Linux 下系统调用的三种方法

系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU.磁盘.打印机等)进行交互提供的一组接口.当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数.下面介绍Linux 下三种发生系统调用的方法: 通过 glibc 提供的库函数 glibc 是 Linux 下使用的开源的标准 C 库,它是 GNU 发布的 libc 库,即运行时库.glibc 为程序员提供丰富的 API(Application Programming Interfac

linux 下处理器的三种状态

在Linux中,任何时候,处理器都处于以下三种状态之一: 1)在用户空间,在某个进程中执行用户代码 2)在内核空间,处于进程上下文中,执行某个特定的进程 3)在内核空间,处于中断上下文中(与进程无关),进行中断处理 应用程序.内核与硬件的关系图如下:

Linux下文件重命名、创建、删除、修改及保存文件

一.重命名(更名) linux 给文件改名的命令是mv命令 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. 格式mv [options] 源文件或目录 目标文件或目录.主要参数[options]-i:交互方式操作.如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件. -f:禁止交互操作.mv操作要覆盖某个已有的目标文件时不给任何指示,指定

linux下find命令和文件的三种时间

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 1.命令参数:     pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.   -print: find命令将匹配的文件输出到标准输出