`
houkai2009
  • 浏览: 226734 次
  • 性别: 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

    Stat 命令可以显示文件的以下信息: * 文件名称和路径 * 文件大小 * 文件类型(regular file, directory, symbolic link, etc.) * 文件权限(包括所有者、组和其他用户的权限) * 文件的索引节点(inode) * 文件...

    Linux stat命令的使用

    Linux中的`stat`命令是一个非常实用的工具,它允许用户获取文件或文件系统详细的信息,这些信息...在日常的系统管理或软件开发中,合理利用`stat`命令可以帮助我们更好地理解文件系统的行为,并解决可能出现的问题。

    stat命令 显示文件状态信息

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

    crs_stat -t报错1

    Oracle CRS _STAT 命令错误解决方案 CRS_STAT 命令是 Oracle Clusterware 的一个重要组件,用于检查和诊断集群的运行状态。...通过按照解决路线图的步骤进行,可以成功解决 CRS_STAT 命令的错误,恢复集群的正常运行。

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

    每个文件或目录在Linux系统中都有一个唯一的inode号,通过`ls -i`命令可以查看文件的inode值。例如,如果`hello`和`hello.hard`的inode号相同,意味着它们指向磁盘上的同一个数据块,即`hello.hard`是一个硬链接文件...

    redis-stat 监控集成包

    `redis-stat` 是一款实用的工具,它可以帮助我们实时查看 Redis 服务器的性能指标,如命令执行频率、内存使用情况、网络流量等。这个"redis-stat 集成包"包含了所有必要的组件,使得安装和使用过程变得更加便捷,...

    redis-stat 离线安装

    5. **验证安装**:安装完成后,通过运行 `redis-stat` 命令检查是否成功安装并可以正常工作。 6. **配置与使用**:根据 `redis-stat` 的文档,配置相关参数,使其连接到你的 Redis 实例,并开始监控。 在没有网络...

    svnstat工具源码升级

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

    matlab开发-stat

    在MATLAB环境中,我们可以通过打开或运行这个`stat`文件来复用其中的代码,或者查看其内部实现以便更好地理解或修改统计分析的细节。 在实际编程中,掌握这些基础和高级统计功能并理解如何结合它们使用是至关重要的...

    Laravel开发-laravel-stat-search-analytics

    此外,开发者还可以利用Laravel的其他特性,如Eloquent ORM(对象关系映射)进行数据库操作,Artisan命令行工具生成自定义命令,以及队列和任务调度来异步处理大量数据或定期执行分析任务。 总的来说,`laravel-...

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

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

    Redis监控系统redis-stat离线安装

    首先,Redis-stat是一款基于Ruby编写的轻量级工具,它提供了一个直观的命令行界面,可以展示Redis实例的多种关键性能指标,如命中率、内存使用、命令执行频率等。由于涉及到Ruby和特定的Gem(Ruby的包管理器),因此...

    uni-stat依赖文件

    在uni-app项目中,可以通过npm或yarn进行安装,命令如下: ```bash npm install uni-stat --save # 或 yarn add uni-stat ``` 安装完成后,需要在项目的main.js文件中引入并配置uni-stat,例如设置AppID、上报环境等...

    2022年优秀-Linux终端常用命令综述.pptx

    这些命令可以显示当前系统的各种信息,例如,当前工作目录、系统信息、文件信息等等。 2.1 pwd命令 pwd命令用于从屏幕上输出当前的工作目录。 2.2 stat命令 stat命令用于显示文件指定文件的相关信息。 2.3 ...

    linux常用命令大全.md

    Linux 系统采用了一种基于角色的权限控制机制,chmod 命令可以用来修改这些权限,从而控制不同用户对文件或目录的访问权限。 **14. chown 命令** chown 命令用于改变文件或目录的所有者和所属组。这在文件权限管理...

    stat_vss.rar_stat_vss

    最后,生成的统计结果可以是文本报告,也可能是通过Web界面呈现的交互式报告,具体取决于`source`目录下的实现。 要使用这个工具,用户需要对Perl和VSS有一定的了解,包括如何运行Perl脚本,如何配置VSS数据库连接...

    kali linux系统常用命令手册

    find命令可以搜索符合特定条件的目录或文件,du命令显示目录的大小,pwd命令显示当前工作目录的路径,ls命令则列出目录内容。 3.5 切换目录 cd命令用于改变当前工作目录。 3.6 删除目录 rmdir命令用于删除空目录。 ...

    Linux系统命令top,ps,kill,free,vmstat等命令的源码

    通过分析源码,我们可以看到它是如何读取`/proc/meminfo`文件来获取内存统计数据的,以及如何计算和展示不同类型的内存(如已用、空闲、缓存等)。 4. **kill命令**:`kill`用于向进程发送信号,以便终止或改变进程...

Global site tag (gtag.js) - Google Analytics