【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间

文章目录

  • 前言
  • 正文
    • 1. 查看文件状态
    • 2.只更新Access Time
    • 2.只更新Modify Time
    • 3. 修改Acess Time 与Modify Time为指定时间
    • 4. 修改Change时间
    • 5. 恢复系统时间
  • 总结

前言

本篇主要讲解touch与时间相关的操作,关于touch创建文件,就不再赘述。

正文

1. 查看文件状态

stat 【文件】

比如我创建了一个:test.c文件,使用此命令查看此文件属性。

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第1张图片

与时间相关的信息:

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第2张图片
其余信息(了解即可):

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第3张图片

  • 总结时间分为四类:
  1. 文件最近一次被访问的时间
  2. 文件最近一次被修改的时间
  3. 文件最近一次被改变的时间
  4. 文件的创建时间

 我最开始的时候还疑惑,文件的创建信息为啥不给出呢?

在网上找到这样一条解释的通的评论:

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第4张图片

大意为:有些版本支持(新),有些版本不支持(老),但是由于系统调用接口不明确的问题,Linux系统就没有明确的指出Birth Time,反而用了一个 - 来表示一个未知的时间,即使系统内部放有birth time。

  • 补充: 文件创建时间也可用crtime/otime(不同的文件系统)

 既然stat无法表示出文件的创建时间,那有没有指令能表示出系统的创建时间呢?
——是有的。

在支持ext4的情况下,我们可以这样查找。

  1. 首先先看当前操作系统是否支持ext4。
df -T

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第5张图片
2. 查看文件的索引结点

 可以直接用stat查看也可以用:

ls -i 【文件名】

在这里插入图片描述

  1. 用索引结点查看crtime(需要root权限/切换到root用户)
sudo debugfs -R 'stat <索引结点编号>' /dev/vda1
  • 补充普通用户获取root权限:基本开发工具开头。

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第6张图片

OK,基本的时间状态已经掌握,那么我们来继续修改文件的时间状态吧!

2.只更新Access Time

touch -a 【文件】

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第7张图片

  • 说明:只要修改了test.c的内容,Change时间就会更新到当前时间。

2.只更新Modify Time

touch -m 【文件】

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第8张图片

3. 修改Acess Time 与Modify Time为指定时间

时间有两种格式:

  1. 标准的时间格式——“2023-09-14 08:55:42”
  2. 较为粗略的时间格式 —— “20230914 08:55:42”
  3. 粗略的时间格式——202309140855.42

修改atime与mtime有两种方法:

touch -d 【标准的时间格式】 【文件】

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第9张图片

touch -t 【粗略的时间格式】 【文件】

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第10张图片

4. 修改Change时间

说明:一般情况下是修改不了Change时间的,因为Change时间是随着系统时间的改变而改变的,因此我们需要修改系统时间,再对原文件进行一次操作即可。

  1. 修改系统时间
sudo date -s 【粗略的时间】

在这里插入图片描述

  1. 对原文件用touch指令再次操作

这里我就接着上面的date -t之后的结果继续操作了,其实这里要看实际需要。

touch -t 【粗略的时间格式】 【文件】

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第11张图片

5. 恢复系统时间

时间分为:
1 . 硬件时间
2. 系统时间(date查看就是)

从硬件时间恢复系统时间。

sudo hwclock --hctosys

注意:可能系统时间与硬件时间不同,修改系统时间应查看一下。

sudo hwclock --show && date +"%F %H:%M:%S"

【Linux指令】Centos7 touch修改Access/Modify/Change 时间与恢复系统时间_第12张图片

  • 说明:touch + 【文件】可更新文件时间为当前时间。这里我看了一下是没错的。

啥?硬件时间都修改了。没事只要有网,那就还有办法。

从网络中恢复系统时间。

  1. 安装包 ntpdate
sudo yum -y install ntp ntpdate
  1. 停止相关服务
service ntp stop
  1. 设置网络时间
ntpdate cn.pool.ntp.org
  1. date查看时间
date +"%F %H:%M:%S"

总结

 最近在复习touch指令的时候,选项搞懵逼了,不同的选项,时间格式可能并不并不相同,因此一直会出现无效时间格式的提示,特意写了一篇博客总结一下,希望对大家有所帮助!

你可能感兴趣的:(Linux指令,linux,指令,touch)