`
houkai2009
  • 浏览: 218442 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • 浪迹随风: 文章是挺好的,不过太杂了。。。信息量也很大。。。很难消化。。。 ...
    EJB 介绍
  • javaersu: yds3300376yd 写道学习了,只是楼主写的有点杂,现在 ...
    EJB 介绍
  • yds3300376yd: 学习了,只是楼主写的有点杂,现在还看不太懂,刚学习EJB,我觉 ...
    EJB 介绍
  • javaersu: 不错,这里也有一篇类似的EJB文章教程http://www.y ...
    EJB 介绍
  • dingding5060: brother , 你贴代码想说明什么???
    enum

可以通过stat命令如

    博客分类:
  • unix
阅读更多
在linux下可以通过stat命令如
stat <文件名>  ¦ grep Modify  ¦ awk '{print $2 $3}'  ¦ cut -d"." -f1  ¦ sed -e 's/-//g' -e 's/://g'
但是hp-unix是不支持stat的,还请各位达人指教





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

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

如何查一个文件的三个时间呢?
先用下面的命令来建立一个文件
# date && echo "this is file be used test time of file" >filetime.txt && ll --full-time filetime.txt
Tue Aug  4 15:13:44 HKT 2009
-rw-r--r--    1 root     root           39 2009-08-04 15:13:44.000000000 +0800 filetime.txt

通过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 (最后修改时间)

在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就是文件的创建时间。
如:
# / sbin/mkfs -t ext3 /dev/ram10
# mount -t ext3 -o noatime /dev/loop0 /mnt/foo
# mount
/dev/ram10 on /mnt/foo type ext3 (rw,noatime)
# cd /mnt/foo
# touch filetime1.txt
# stat filetime1.txt
  File: `filetime1.txt'
  Size: 0               Blocks: 0          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1   
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:51:32.000000000 +0800
Change: 2009-08-04 20:51:32.000000000 +0800

# echo foo.ok >> filetime1.txt
[root@logs-bak foo]# stat filetime1.txt
  File: `filetime1.txt'
  Size: 14              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1   
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800

# cat filetime1.txt
  foo.ok
#stat filetime1.txt
  File: `filetime1.txt'
  Size: 14              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1   
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800

# 通过以上实验可以看出文件的access time 是不变的。

接着向下多测试一下.
# vi filetime1.txt
# stat filetime1.txt
  File: `filetime1.txt'
  Size: 23              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 14          Links: 1   
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:55:05.000000000 +0800

# chmod 777 filetime1.txt
# stat filetime1.txt
  File: `filetime1.txt'
  Size: 23              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 14          Links: 1   
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:57:36.000000000 +0800
可见,chmod后,Ctime的变化。

#########################################################
说到这里,大概大家也对在linux下文件的时间有所了解了吧!
那么以下的操作对文件的时间有什么影响呢?

操作                        atime        mtime       ctime
----------------------------------------------------------
mv
----------------------------------------------------------
cp
----------------------------------------------------------
touch
----------------------------------------------------------
cat/more/less
----------------------------------------------------------
ls
----------------------------------------------------------
chmod/chown
----------------------------------------------------------
ln
----------------------------------------------------------
echo
----------------------------------------------------------
vi
----------------------------------------------------------
(请大家测试完成这个表吧!!!!做完测试可以给我留言啊!)
##############################################################

另外,从kernel2.6.29开,还默认集成了一个relatime的属性。可能是因为在文件读操作很频繁的系统
中,atime更新所带来的开销很大,所以很多SA都在挂装文件系统的时候使用noatime属性来停止更新atime。但是有些程序需要根据atime进行一些判断和操作,所以Linux就推出了一个relatime特性。
使用这个特性来挂装文件系统后,只有当mtime比atime更新的时候,才会更新atime。事实上,这个时候atime和mtime已经是同一个东西了。所以这个选项就是为了实现对atime的兼容才推出的。并不是一个新的时间属性。使用方法就是通过mount -o relatime /dir来挂装目录。



ctime=change time
atime=access time
mtime=modifiy time

ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime



最新修改的?

可以这样查找:

find / -mtime +3 就是3天前

find / -mtime -3 就是3天内

如果你想查找最近2小时的,可以这样操作:

1、先创建一个文件 touch a.txt

2、find / -newer a.txt





个同学问我在linux怎样按修改时间来查找文件,我Google之后才得到答案,写个笔记吧。
find /home/admin -mtime -1      #查找/home/admin目录下修改时间在1天之内的文件
find /home/admin -name *.txt -mtime -1  #查找/home/admin目录下修改时间在1天之内的文件名为.txt结尾的文件

find 按文件修改时间查找文件
---(+n)----------|----------(n)----------|----------(-n)---
      (n+1)*24H前|   (n+1)*24H~n*24H间   |n*24H内

-ctime -n    查找距现在 n*24H 内修改过的文件
-ctime n    查找距现在 n*24H 前, (n+1)*24H 内修改过的文件
-ctime +n    查找距现在 (n+1)*24H 前修改过的文件

[a|c|m]min    [最后访问|最后状态修改|最后内容修改]min
[a|c|m]time    [最后访问|最后状态修改|最后内容修改]time

linux 文件的三种时间(以 find 为例):
atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;
ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;
mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变.

注意: linux 里是不会记录文件的创建时间的, 除非这个文件自创建以来没有发生改变, 那么它的创建时间就是它的最后一次修改时间.
#ls -lt /home/admin   # 按修改时间顺序查看
#ls -lut /home/admin  # 按访问时间顺序查看
(如果想反序查看的话需要加一个选项 -r)





  linux,用find命令查找最近修改过的文件 收藏
linux的终端上,没有windows的搜索那样好用的图形界面工具,但find命令确是很强大的。

比如按名字查找一个文件,可以用 find / -name  targetfilename 。 唉,如果只知道名字,不知道地点,这样也不失为一个野蛮有效的方法。

按时间查找也有参数 -atime 访问时间 -ctime 改变状态的时间 -mtime修改的时间。但要注意,这里的时间是以24小时为单位的。查看man手册后使用,你会很迷惑: -mtime n: File<A1><AF>s data was last modified n*24 hours ago. 字面上的理解是最后一次修改发生在n个24小时以前的文件,但实际上

find ./ -mtime 0:返回最近24小时内修改过的文件。
find ./ -mtime 1 : 返回的是前48~24小时修改过的文件。而不是48小时以内修改过的文件。

那怎么返回10天内修改过的文件?find还可以支持表达式关系运算,所以可以把最近几天的数据一天天的加起来:
find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……虽然比较土,但也算是个方法了。
还有没有更好的方法,我也想知道。。。

另外, -mmin参数-cmin / - amin也是类似的。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/noizz/archive/2007/05/11/1605165.aspx
分享到:
评论

相关推荐

    Linux中的stat命令使用简介.docx

    Linux中的stat命令使用简介.docx

    Linux stat命令的使用

    主要介绍了Linux stat命令的使用,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下

    stat命令 显示文件状态信息

    stat命令用来显示文件或文件系统的详细信息 语法格式:stat [参数] 常用参数: -L 支持符号链接 -f 显示文件系统的信息 -t 以简洁的方式输出 –help 显示命令帮助信息 –version 显示命令版本信息 ...

    Linux中stat函数和stat命令使用详解

    stat函数和stat命令 linux文件里的【inode = index node】解释:要理解inode必须了解磁盘和【目录项】,inode实际是连接【目录项】和磁盘的中间物质。 图里的大圈代表硬件的磁盘,里面的小圈代表某个文件存储在磁盘...

    svnstat工具源码升级

    config指定配置文件 缺省为使用jar包中默认的properties文件 我已经配置好 可以不用改 执行完后 会在相应输出路径下生成一系列的图表 其中有个index html文件 打开该网页即可看到该目录下生成的所有图片 "&gt;分享下...

    matlab开发-stat

    matlab开发-stat。在命令窗口中获取变量统计信息的快速摘要。

    Stat Therefor(所以统计系统) 2004修改版

    在Stat Therefor(所以统计系统) 2002 Build 0210 正式版的基础之上,针对在使用时出现的问题进行了两处修改,一是在服务器register_global为off时,现在可以正常使用。二是,调整config.inc.php文件中的$config...

    Linux命令大全

     50.stat命令:显示inode内容  51.sum命令:计算文件的校验码  52.tee命令:从标准输入读取并输出到标准输出和文件  53.tmpwatch命令:删除暂存文件  54.touch命令:更新文件或目录的时间  55.tree命令:...

    ubuntu18.04版本以上系统编译君正软件包问题解决方案及相应软件包

    fakeroot软件编译报出的‘_STAT_VER’ undeclared 错误,如采用网上通用的直接宏定义_STAT_VER方法虽也可以编译通过,但最后生成的文件系统大概率为非root用户,系统随可启动,但是相关命令运行及proc文件系统挂在等...

    conv:JSON-stat命令行转换工具

    可用命令 将CSV转换为JSON-stat 将JSON-stat转换为数组数组 将JSON-stat转换为对象数组 将JSON-stat转换为CSV 将JSON-stat转换为对象 (不建议使用)-从JSON-stat创建JSON-stat jsonstatdice-从JSON-stat创建...

    Linux运维-操作系统 教程 从入门到精通101课-32-32文件系统命令-touch创建stat元数据.mp4

    Linux运维-操作系统 教程 从入门到精通101课-32-32文件系统命令-touch创建stat元数

    echarts-stat:Apache ECharts 统计工具(孵化)

    如果您使用 npm,您可以使用以下命令安装它: npm install echarts-stat 否则,从下载此工具: &lt; script src =' ./dist/ecStat.js ' &gt; &lt;/ script &gt; &lt; script &gt; var result = ecStat . ...

    ubc-stat406-labs

    您可以使用以下命令从安装当前版本: # install.packages("devtools") devtools :: install_github( " dajmcdon/ubc-stat406-labs " ) 例子 这是一个基本示例,向您展示如何运行教程: library( UBCstat406labs ) ...

    linux操作系统实验三

    请进入/proc目录,运行less stat命令,记录下系统当前发生缺页次数___________。 (二) 可以利用stat文件提供的数据在一段时间的开始时刻和结束时刻分别读取缺页中断发生的次数,然后做一个简单的减法,就可以得出...

    SquadStatsJSPRO:SquadStatJS的高级版本(跟踪小队的状态),带有高级discord命令,用于管理Discord服务器。 (很快就会通过inbuild stat网站获得)

    (一旦用户运行stat命令,这些链接将链接到用户; {prefix}profile &lt;steam64ID&gt; ) 检查统计信息用户应首先将他的steam64ID(17位长的Steam标识符)链接到他的不和谐帐户。 这很简单,就像执行{prefix}profile ...

    svm管理命令

    svm管理命令 4.常用命令: metadb 创建stat db。 metainit 创建逻辑卷,创建raid命令。 metastat 查看卷,raid信息。 metaclear 删除卷,删除raid。 metareplace:

    orcale常用命令

    使用INPUT命令可以在SQL缓冲区中增加一行或多行 SQL&gt;i SQL&gt;输入内容 e、调用外部系统编辑器 SQL&gt;edit 文件名 可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_...

    git 命令的收集以及总结分享学习

    git log -n 1 --stat ——查看修改的文件 总结一下: HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。 穿梭前,用git log可以查看提交历史,以便确定...

    探讨:如何通过stats命令分析Memcached的内部状态

    Memcached有个stats命令,通过它可以查看Memcached服务的许多状态信息。使用方法如下:先在命令行直接输入telnet 主机名端口号,连接到memcached服务器,然后再连接成功后,输入stats 命令,即可显示当前memcached...

Global site tag (gtag.js) - Google Analytics