zoukankan      html  css  js  c++  java
  • Linux的文件时间

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

    1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

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

    3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令 文件名。

    通过stat filename.txt来查,如:
    # stat filetime.txt
    File: `filetime.txt'
    Size: 39              Blocks: 8          IO Block: 4096   Regular File
    Device: 802h/2050d      Inode: 17          Links: 1   
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2009-08-04 15:13:44.000000000 +0800
    Modify: 2009-08-04 15:13:44.000000000 +0800
    Change: 2009-08-04 15:13:44.000000000 +0800
    说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat *查看这个目录所有文件的状态。
    ctime=change time
    atime=access time
    mtime=modifiy time

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

    1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。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 (最后修改时间)

    字段           说明                   例子           ls(-l)
    st_atime  文件数据的最后存取时间       read            -u
    st_mtime  文件数据的最后修改时间       write           缺省
    st_ctime  文件数据的最后更改时间       chown,chmod     -c
    在linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。

    可以使用touch命令来改变文件的时间

    无法修改文件的change时间

    touch命令选项说明
    a 改变档案的读取时间记录。  
    m 改变档案的修改时间记录。
    c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。  
    f 不使用,是为了与其他 unix 系统的相容性而保留。  
    r 使用参考档的时间记录,与 --file 的效果一样。  
    d 设定时间与日期,可以使用各种不同的格式。
    t 设定档案的时间记录,格式与 date 指令相同。 等于参数 a m


    [[CC]YY]MMDDhhmm[.SS],
    CC为年数中的前两位,即”世纪数”;
    YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则linux中touch命令参数将把年数CCYY限定在1969--2068之内.
    MM为月数,
    DD为天数,
    hh 为小时数(几点),
    mm为分钟数,
    SS为秒数.
    此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统的限制,早于1970年1月1日的时间是错误的.
      --no-create 不会建立新档案。   --help 列出指令格式。   --version 列出版本讯息。

    例一:更新file1.txt的存取和修改时间。   touch file1.txt
    例二:如果file1.txt不存在,不创建文件   touch -c file1.txt
    例三:更新file1.txt的时间戳和ref+file相同   touch -r ref+file file1.txt
    例四:设置文件的时间戳为2011年5月18日9点45分10秒   ls -l file1.txt
      touch -t 1105190945.10 file1.txt

  • 相关阅读:
    SpringMVC,3种不同的URL路由配置方法(这根本不是一个小问题)
    PHP在Windows下安装配置第一步
    跟我一起学extjs5(18--模块的新增、改动、删除操作)
    html image -- data:image/png;base64
    oc66--代理模式应用2
    oc65--协议应用1,接口.做数据类型限定
    oc64--协议2@protocol
    oc63--协议@protocol1
    oc62--block1
    oc61--block
  • 原文地址:https://www.cnblogs.com/coder-gui/p/6068173.html
Copyright © 2011-2022 走看看