Linux中的各类时间 与 find命令的常用参数

       之前研究wal日志清理的副产物,wal日志名被修改后文件的哪个时间会变?应该如何删除?由此整理一下Linux中atime、mtime、ctime的区别,以及find的常见用法。

一、 Linux中的各类时间

1. 各类时间的定义

Linux中有三种用于文件时间戳的概念:

  • atime(访问时间):表示文件最后一次被读取的时间。每次对文件的读取都会更新atime。这意味着即使只是查看文件的内容,atime也会被更新。在许多情况下,特别是对于大量读取操作的文件系统,会关闭或限制atime更新以提高性能。

  • mtime(修改时间):表示文件内容最后一次被修改的时间。当文件的内容发生变化时,mtime会被更新。这包括文件的写入、追加、截断等操作。

  • ctime(更改时间):表示文件元数据(比如权限、所有者、链接数等)最后一次被修改的时间。当文件的元数据发生变化时,ctime会被更新。这包括文件的文件名、权限、链接数、所有者变更等操作。

2. 如何查看这些时间

① stat命令
-bash-4.2$ stat tmp.html File: ‘tmp.html’Size: 31284     	Blocks: 64         IO Block: 4096   regular file
Device: f900h/63744d	Inode: 67752138    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  501/postgres)   Gid: (  502/     dba)
Access: 2023-04-05 14:25:13.759000000 +0800
Modify: 2023-04-05 14:24:52.767000000 +0800
Change: 2023-04-05 14:24:52.767000000 +0800

       通常来说,mtime变化ctime都会跟着变,因为修改文件内容后,其大小等元数据都会变化。如果直接echo修改文件,atime不会变;如果通过vi等方式直接访问文件修改,则atime会变。

-bash-4.2$ echo "111" >> tmp.html
-bash-4.2$ 
-bash-4.2$ stat tmp.html File: ‘tmp.html’Size: 31288     	Blocks: 64         IO Block: 4096   regular file
Device: f900h/63744d	Inode: 67752138    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  501/postgres)   Gid: (  502/     dba)
Access: 2023-04-05 14:25:13.759000000 +0800
Modify: 2024-02-22 15:39:44.592000000 +0800
Change: 2024-02-22 15:39:44.592000000 +0800
-bash-4.2$ vi tmp.html 
-bash-4.2$ 
-bash-4.2$ stat tmp.html File: ‘tmp.html’Size: 31284     	Blocks: 64         IO Block: 4096   regular file
Device: f900h/63744d	Inode: 69354682    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  501/postgres)   Gid: (  502/     dba)
Access: 2024-02-22 15:40:22.778000000 +0800
Modify: 2024-02-22 15:40:22.778000000 +0800
Change: 2024-02-22 15:40:22.780000000 +0800Birth: -

       修改元数据,例如文件名,ctime会变mtime不变。

-bash-4.2$ mv tmp.html tmp_02.html
-bash-4.2$ 
-bash-4.2$ stat tmp_02.html File: ‘tmp_02.html’Size: 31284     	Blocks: 64         IO Block: 4096   regular file
Device: f900h/63744d	Inode: 69354682    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  501/postgres)   Gid: (  502/     dba)
Access: 2024-02-22 15:40:22.778000000 +0800
Modify: 2024-02-22 15:40:22.778000000 +0800
Change: 2024-02-22 15:49:19.370000000 +0800Birth: -

      访问一下文件,只有atime会变

-bash-4.2$ less tmp_02.html
-bash-4.2$ 
-bash-4.2$ stat tmp_02.html File: ‘tmp_02.html’Size: 31284     	Blocks: 64         IO Block: 4096   regular file
Device: f900h/63744d	Inode: 69354682    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  501/postgres)   Gid: (  502/     dba)
Access: 2024-02-22 15:52:46.589000000 +0800
Modify: 2024-02-22 15:40:22.778000000 +0800
Change: 2024-02-22 15:49:19.370000000 +0800Birth: -

② ls命令

ls命令利用不同的参数可以看到不同的时间

  • mtime:ls -l filename
  • atime:ls -lu filename
  • ctime:ls -lc filename
-bash-4.2$ ls -l tmp_02.html 
-rw-r--r-- 1 postgres dba 31284 Feb 22 15:40 tmp_02.html
-bash-4.2$ 
-bash-4.2$ ls -lu tmp_02.html 
-rw-r--r-- 1 postgres dba 31284 Feb 22 15:52 tmp_02.html
-bash-4.2$ 
-bash-4.2$ ls -lc tmp_02.html 
-rw-r--r-- 1 postgres dba 31284 Feb 22 15:49 tmp_02.html

这里默认只到分钟,更详细的可以用time-style参数调整显示格式

-bash-4.2$ ls -l tmp_02.html --time-style=+"%Y-%m-%d %H:%M:%S"
-rw-r--r-- 1 postgres dba 31284 2024-02-22 15:40:22 tmp_02.html
-bash-4.2$ 
-bash-4.2$ ls -lu tmp_02.html --time-style=+"%Y-%m-%d %H:%M:%S"
-rw-r--r-- 1 postgres dba 31284 2024-02-22 15:52:46 tmp_02.html
-bash-4.2$ 
-bash-4.2$ ls -lc tmp_02.html --time-style=+"%Y-%m-%d %H:%M:%S"
-rw-r--r-- 1 postgres dba 31284 2024-02-22 15:49:19 tmp_02.html

3. wal日志应该用哪个时间判断删除

       以实际的wal日志为例,可以看到被重命名后仅ctime会改变。一段时间后其文件内容也被修改,mtime和ctime同时变化。因此,为了避免误删除,用ctime来作为条件相对而言是最安全的,也可以mtime和ctime两个条件都加上。

二、 find命令的常用参数

1. 按时间查找

就是前面提到过的3个时间

  • -atime n:查找在 n*24小时(前/内/时)被访问过的文件
  • -ctime n:查找在 n*24小时(前/内/时)元数据被修改的文件
  • -mtime n:查找在 n*24小时(前/内/时)内容被修改过的文件

还可以按分钟

  • -amin n:查找在 n分钟(前/内/时)被访问过的文件
  • -cmin n:查找在 n分钟(前/内/时)元数据被修改的文件
  • -mmin n:查找在 n分钟(前/内/时)内容被修改过的文件

这个 n 前面可以带 + - 或者不带符号,例如:

  • -mtime -5:[5*24小时前时间点,当前时间点)
  • -mtime 5:[6*24小时前时间点,5*24小时前时间点]
  • -mtime +5: (−∞,5*24小时前时间点),特别注意这里是开区间

之所以特地强调24小时,因为它不是从0:00算起,而是按执行命令那刻的时间计算。

测试验证

[root@SAKURA_VPS test]# touch -t 05130700 2018-0513-0700 
[root@SAKURA_VPS test]# touch -t 05120700 2018-0512-0700 
[root@SAKURA_VPS test]# touch -t 05110700 2018-0511-0700 
[root@SAKURA_VPS test]# touch -t 05100700 2018-0510-0700 
[root@SAKURA_VPS test]# touch -t 05090700 2018-0509-0700 
[root@SAKURA_VPS test]# touch -t 05080700 2018-0508-0700 
[root@SAKURA_VPS test]# touch -t 05070700 2018-0507-0700 
[root@SAKURA_VPS test]# touch -t 05060700 2018-0506-0700 
[root@SAKURA_VPS test]# ls -l 
合計 0 
-rw-r--r-- 1 root root 0  5月  6 07:00 2018-0506-0700 
-rw-r--r-- 1 root root 0  5月  7 07:00 2018-0507-0700 
-rw-r--r-- 1 root root 0  5月  8 07:00 2018-0508-0700 
-rw-r--r-- 1 root root 0  5月  9 07:00 2018-0509-0700 
-rw-r--r-- 1 root root 0  5月 10 07:00 2018-0510-0700 
-rw-r--r-- 1 root root 0  5月 11 07:00 2018-0511-0700 
-rw-r--r-- 1 root root 0  5月 12 07:00 2018-0512-0700 
-rw-r--r-- 1 root root 0  5月 13 07:00 2018-0513-0700 
[root@SAKURA_VPS test]#
[root@SAKURA_VPS test]# date
2018年 5月 13日 日曜日 22:29:42 JST[root@SAKURA_VPS test]# find . -mtime -5 
. 
./2018-0513-0700 
./2018-0512-0700 
./2018-0511-0700 
./2018-0510-0700 
./2018-0509-0700 
[root@SAKURA_VPS test]# find . -mtime 5 
./2018-0508-0700 
[root@SAKURA_VPS test]# find . -mtime +5 
./2018-0507-0700 
./2018-0506-0700

未完待续~

参考:

ctime、mtime、atime-阿里云开发者社区

Linux find 命令 | 菜鸟教程

【Linux】find コマンド【図解】 | 100%レンタルサーバーを使いこなすサイト

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错

报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…

2024最佳住宅代理IP服务商推荐

跨境出海已成为了近几年的最热趋势,大批量的企业开始开拓海外市场,而海外电商领域则是最受欢迎的切入口。新兴的tiktok、Temu,老牌的Amazon、Ebay,热门的Etsy、Mecari等等都是蓝海一片。跨境入门并不难,前期的准备中不…

UE4 C++联网RPC教程笔记(三)(第8~9集)完结

UE4 C联网RPC教程笔记(三)(第8~9集)完结 8. exe 后缀实现监听服务器9. C 实现监听服务器 8. exe 后缀实现监听服务器 前面我们通过蓝图节点实现了局域网连接的功能,实际上我们还可以给项目打包后生成的 .exe 文件创建…

LeetCode 0106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看)

【LetMeFly】106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看) 力扣题目链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-an…

FSQ: FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE

Paper name FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE Paper Reading Note Paper URL: https://arxiv.org/abs/2309.15505 Code URL: (官方 jax 实现) https://github.com/google-research/google-research/tree/master/fsq(pytorch 实现) https://github.com/luci…

OSPF综合实验详解

一、实验要求 1,R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用公有IP; 2,R3-R5/6/7为MGRE环境,R3为中心站点; 3,整个OSPF环境IP基于172.16..8/16划分; 4…

外观设计专利的特征和特点

许多人往往将商品包装与外观设计混同起来,其实两者的区别很大,外观设计由专利法予以保护,简单说,外观设计是指工业品的外观设计,也就是工业品的式样,包括形状、图案、色彩等。下面介绍外观设计专利的特征和…

OpenWRT部署web站点并结合内网穿透实现无公网ip远程访问

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和…

uniapp微信小程序-项目实战修改密码

图标是使用uview里面的图标&#xff0c;icfont也可以 以下是所有代码 <template><view><!-- 密码三个 --><view class"password" v-for"(item,index) in userList"><view class"contentuser"><view class&qu…

几个常见的C/C++语言冷知识

当涉及到C/C语言时&#xff0c;有一些冷知识可能并不为人所熟知&#xff0c;但却可以让你更深入地理解这门古老而强大的编程语言。以下是一些有趣的C/C语言冷知识。 1. 数组的下标可以是负数 在我们日常的C语言编程中&#xff0c;数组是一个非常常见的数据结构。我们习惯性地使…

DIY赴美生子必看~

现在选择赴美生子的宝妈越来越多&#xff0c;很多开始选择半DIY的形式&#xff0c;那么有哪些细节需要注意呢? 说中文的医生更方便? 这条对于DIY赴美生子者来说很关键&#xff0c;不要认为你的日常英文沟通没问题&#xff0c;涉及一些医学术语时&#xff0c;能否顺畅地与医生…

ai写作软件手机版哪个好用?

ai写作软件手机版哪个好用&#xff1f;随着技术的发展&#xff0c;越来越多的ai写作软件出现在互联网上&#xff0c;当然&#xff0c;这取决于人们对它的需求很大&#xff0c;ai写作软件可以帮助大家完成文章自动写作&#xff0c;也可以帮助大家生成优质的文案&#xff0c;同时…

提升网络质量:UDPspeeder 实现网络优化与提速

提升网络质量&#xff1a;UDPspeeder 实现网络优化与提速 背景与意义原理与功能使用方法未来展望相关链接服务 在当今高度互联的网络环境下&#xff0c;网络质量的优化和提速对于用户体验至关重要。针对高延迟和丢包率较高的网络链路&#xff0c;UDPspeeder 提供了一种前向纠错…

Shopee平台文具选品策略大揭秘:打造畅销产品,提升市场竞争力

在Shopee平台上销售文具类商品&#xff0c;是许多卖家追求的目标。然而&#xff0c;要在激烈的市场竞争中脱颖而出&#xff0c;并取得可观的销售业绩&#xff0c;需要制定一系列有效的选品策略。以下是一些在Shopee平台上进行文具选品时的关键策略&#xff0c;帮助卖家提高产品…

【杭州游戏业:创业热土,政策先行】

在前面的文章中&#xff0c;我们探讨了上海、北京、广州、深圳等城市的游戏产业现状。现在&#xff0c;我们切换视角&#xff0c;来看看另一个游戏创业热土——杭州的发展情况 最近第19届亚运会在杭州举办&#xff0c;本次亚运会上&#xff0c;电子竞技首次获准列为正式比赛项…

人脸美型SDK解决方案,包括瘦脸、大眼、瘦鼻等功能

为了满足市场不断升级的美颜需求&#xff0c;美摄科技凭借其在人脸识别与图像处理领域的深厚积累&#xff0c;推出了一款高效且易集成的人脸美型SDK解决方案。该方案旨在通过先进的算法和丰富的调节功能&#xff0c;帮助企业客户快速实现用户脸部形状的精准美化&#xff0c;进而…

一文看懂FAN73893MX 三相半桥门极驱动集成电路的选择

FAN73893MX产品概述&#xff1a; 是一款单片三相半桥栅极驱动 IC&#xff0c;设计用于高压、高速驱动 MOSFET 和 IGBT&#xff0c;工作电压高达 600 V。Fairchild 的高压工艺和共模噪声消除技术可以保证高端驱动器在高 dv/dt 噪声环境下稳定工作。先进的电平转换电路使高端栅极…

国产嵌入式教学实验箱操作教程:2-13 定时器控制实验

一、实验目的 熟悉定时器的基本结构&#xff0c;学习定时器的功能和控制方法&#xff0c;并实现基于定时器中断方式控制程序。 二、实验原理 定时器 TMS320CC6748有4个定时器/计数器&#xff0c;均可配置为64位计数器、两个独立32位计数器及自动重装32位计数器&#xff0c;…

C++笔记:OOP三大特性之继承

文章目录 一、继承的概念和定义1.1 概念1.2 定义格式1.3 继承关系和访问限定符 二、基类和派生类对象赋值兼容转换2.1 类型转换存在临时对象的意义2.2 赋值兼容转换不会产生临时变量 三、继承中的作用域四、派生类中的默认成员函数4.1 构造4.2 拷贝构造4.3 赋值重载4.4 析构 五…

C++如何避免float误差?

C如何避免float误差&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; …