Linux文件有3个修改时间,很多朋友都喜欢弄混淆,也包括我在内,现在列出来供参考。
1)modification time (mtime,修改时间):这个时间指的是文件内容修改的时间,而不是文件属性的修改,当数据内容修改时,这个时间就会改变,用命令ls -l默认显示的就是这个时间:
2)status time (ctime,状态时间):当一个文件的状态改变时,这个时间就会改变,例如更改了文件的权限与属性等,它就会改变。
3)access time (atime,访问时间):当读取文件内容时,就会更改这个时间,例如使用cat 去读取/etc/man.config,那么该文件的atime就会改变。
例如:
# ls -l --full-time /etc/man.config
-rw-r--r-- 1 root root 4522 2007-11-17 18:47:54.000000000 +0800 /etc/man.config
# ls -l --time=atime --full-time /etc/man.config
-rw-r--r-- 1 root root 4522 2010-03-15 14:20:20.000000000 +0800 /etc/man.config
# ls -l --time=ctime --full-time /etc/man.config
-rw-r--r-- 1 root root 4522 2008-07-11 16:21:55.000000000 +0800 /etc/man.config
-----------------------------------------------------------------------------------
#cat /etc/man.config执行之后再查看atime,该时间已经更改
# ls -l --time=atime --full-time /etc/man.config
-rw-r--r-- 1 root root 4522 2010-03-15 14:24:30.000000000 +0800 /etc/man.config
更改文件权限:# chmod o-r /etc/man.config
查看ctime,已经更改。
# ls -l --time=ctime --full-time /etc/man.config
-rw-r----- 1 root root 4522 2010-03-15 14:28:34.000000000 +0800 /etc/man.config
如果对文件内容进行编辑,那么mtime就会改变了。
如果要一起查看文件的三个时间情况,可以用命令stat进行查看
# stat /etc/man.config
File: `/etc/man.config'
Size: 4522 Blocks: 24 IO Block: 4096 regular file
Device: 807h/2055d Inode: 1049307 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-03-15 14:24:30.000000000 +0800
Modify: 2007-11-17 18:47:54.000000000 +0800
Change: 2010-03-15 14:28:34.000000000 +0800
时间与上面的时间完全吻合。
文件的时间很重要,因为如果误判文件时间,可能会造成某些程序无法正常运行,万一我们发现一个文件的时间是未来的时间(很多时候会有这个问题,我们在安装的时候提到的GMT时间就是那个意思),那么怎样才能让次时间变成现在的时间呢?我们只需要一个touch命令即可。
touch的用法为:
touch [-actmd] 文件
参数:
-a:仅修改access time
-c:仅修改时间而不建立文件
-t:后面可以接时间,格式为:[YYMMDDhhmm]
-m:仅修改mtime
-d:后面可以接日期,也可以使用--date="日期或时间"
例如:将man.config的日期调整为两天前,则:
#touch -d "2 days ago" /etc/man.config
结果atime和mtime将会改变而ctime不会改变。
通过touch命令,可以轻松的修改文件文件的日期与时间,并且也可以建立一个空文件,不过要注意的是,即使复制一个文件并复制所有属性页没有办法复制ctime属性。
touch命令常用的情况是
1)建立一个空文件
2)将某个文件日期修改为当前日期(mtime和atime)
转自 浦华众城 linux学习网
相关文章
- Linux系统date命令无法修改或同步时间的解决办法
- Linux使用find查找最后修改时间超过三天的文件并移动到指定目录(附:find找出文件并清空)...
- word文件的创建时间和修改时间可以更改吗?答案是肯定的 文件属性修改的方法
- Linux学习第十篇--修改文件的时间
- CVE-2024-3094:Linux生态供应链攻击-CVE-2024-3094:供应链攻击? 一个潜伏3年只为通杀的漏洞,今天更新了一个CVE漏洞,XZ-utils5.6.0/5.6.1版本后门风险(CVE-2024-3094)这个后门并非作者无意加入的,也不是引入存在后门的库文件导致的问题,而是有人经过三年的潜伏,积极参与该项目的维护,在获得了直接commit代码的权限以后将后门代码注入其中。 这个代码一共存活了不到2个月的时间,发现者是PostgreSQL 开发人员兼软件工程师 Andres Freund 意外发现的,在观察到 liblzma(xz 包的一部分)Debian sid(使用 ssh 登录占用了大量 CPU,valgrind 错误,然后找见了上游 xz 存储库和 xz tarball 已被后门。 幸运的是,xz 5.6.0 和 5.6.1 尚未被 Linux 发行版广泛集成,而且大部分是在预发行版本中。 但是kali linux如果每周更新或者最近3月26到29号之间更新了,不好意思。 根据kali官方说法希望更新, 首先我们apt-cache policy liblzma5 更新命令 sudo apt update && sudo apt install -y --only-upgrade liblzma5 更新 难的追一回滚动更新就这样玩吗?看来以后也不要追最新的。 当然我们还可以cat /var/log/apt/history.log 查看更新时间和都更新了哪些内容! 附: 各大linux系统可以查看自己对应的系统,查看官网说明 比如我的kali可以直接在https://www.kali.org/blog/about-the-xz-backdoor/看到 当然了这个供应链后门只能说差一点就完美成功,因为他写的有bug在sshd运行的时候直接cpu飙升,引起了研究员的注意,否则如果在发行版中大规模集成,估计可以造成linux的一个通杀,现在只是在预发行版中,但是更新快的比如kali linux中如果滚动更新那么就会被影响到。 参考链接:
- ubuntu linux修改文件所属用户(owner属主)和组(groud属组、用户组) 使用chown命令可以修改文件或目录所属的用户:
- Fedora 服务器之 FTP 配置 Fedora 服务器之 FTP 配置 (我遇到的问题:root无法登陆--500 OOPS: cannot change directory:/root和500 OOPS:priv_sock_get_cmd的错误 解决办法:其他的网上搜, 主要注意点:修改/etc/sysconfig/selinux文件:#SELINUX=enforcingSELINUX=disabled重启生效,如果不想重启,用命令(要重启--搞了半天坑
- 【linux】linux命令如何查看文件、文件夹的属性,包括大小、修改时间、谁修改的
- linux下文件的访问时间,修改时间和改变时间
- linux下date命令设置时间的输出格式和修改时间