文章目录
- 前言
- 正文
- 1. 查看文件状态
- 2.只更新Access Time
- 2.只更新Modify Time
- 3. 修改Acess Time 与Modify Time为指定时间
- 4. 修改Change时间
- 5. 恢复系统时间
- 总结
前言
本篇主要讲解touch与时间相关的操作,关于touch创建文件,就不再赘述。
正文
1. 查看文件状态
stat 【文件】
比如我创建了一个:test.c文件,使用此命令查看此文件属性。
与时间相关的信息:
其余信息(了解即可):
- 总结时间分为四类:
- 文件最近一次被访问的时间
- 文件最近一次被修改的时间
- 文件最近一次被改变的时间
- 文件的创建时间
我最开始的时候还疑惑,文件的创建信息为啥不给出呢?
在网上找到这样一条解释的通的评论:
大意为:有些版本支持(新),有些版本不支持(老),但是由于系统调用接口不明确的问题,Linux系统就没有明确的指出Birth Time,反而用了一个 - 来表示一个未知的时间,即使系统内部放有birth time。
- 补充: 文件创建时间也可用crtime/otime(不同的文件系统)
既然stat无法表示出文件的创建时间,那有没有指令能表示出系统的创建时间呢?
——是有的。
在支持ext4的情况下,我们可以这样查找。
- 首先先看当前操作系统是否支持ext4。
df -T
2. 查看文件的索引结点
可以直接用stat查看也可以用:
ls -i 【文件名】
- 用索引结点查看crtime(需要root权限/切换到root用户)
sudo debugfs -R 'stat <索引结点编号>' /dev/vda1
- 补充普通用户获取root权限:基本开发工具开头。
OK,基本的时间状态已经掌握,那么我们来继续修改文件的时间状态吧!
2.只更新Access Time
touch -a 【文件】
- 说明:只要修改了test.c的内容,Change时间就会更新到当前时间。
2.只更新Modify Time
touch -m 【文件】
3. 修改Acess Time 与Modify Time为指定时间
时间有两种格式:
- 标准的时间格式——“2023-09-14 08:55:42”
- 较为粗略的时间格式 —— “20230914 08:55:42”
- 粗略的时间格式——202309140855.42
修改atime与mtime有两种方法:
touch -d 【标准的时间格式】 【文件】
touch -t 【粗略的时间格式】 【文件】
4. 修改Change时间
说明:一般情况下是修改不了Change时间的,因为Change时间是随着系统时间的改变而改变的,因此我们需要修改系统时间,再对原文件进行一次操作即可。
- 修改系统时间
sudo date -s 【粗略的时间】
- 对原文件用touch指令再次操作
这里我就接着上面的date -t之后的结果继续操作了,其实这里要看实际需要。
touch -t 【粗略的时间格式】 【文件】
5. 恢复系统时间
时间分为:
1 . 硬件时间
2. 系统时间(date查看就是)
从硬件时间恢复系统时间。
sudo hwclock --hctosys
注意:可能系统时间与硬件时间不同,修改系统时间应查看一下。
sudo hwclock --show && date +"%F %H:%M:%S"
- 说明:touch + 【文件】可更新文件时间为当前时间。这里我看了一下是没错的。
啥?硬件时间都修改了。没事只要有网,那就还有办法。
从网络中恢复系统时间。
- 安装包 ntpdate
sudo yum -y install ntp ntpdate
- 停止相关服务
service ntp stop
- 设置网络时间
ntpdate cn.pool.ntp.org
- date查看时间
date +"%F %H:%M:%S"
总结
最近在复习touch指令的时候,选项搞懵逼了,不同的选项,时间格式可能并不并不相同,因此一直会出现无效时间格式的提示,特意写了一篇博客总结一下,希望对大家有所帮助!