教你在 Linux 下时光穿梭

简介: 教你在 Linux 下时光穿梭

时光穿梭?电影里的桥段吧?良许你又在唬人?


非也非也,良许在这里要给大家介绍 touch 命令,有了它你就可以改变时间戳,达到时光穿梭的目的。


touch 命令在我们的工作中使用也相当频繁,我们就由浅到深来详细讲解。


touch 命令基本用法


提起 touch 命令,大家想到的肯定是它的两个用法:


  • 改变时间戳


  • 创建新文件


这两种用法大家在工作中早已用腻了,良许就不再赘述了。


防止创建文件


如果在 touch 后面直接跟上一个文件名,该文件如果不存在的话,将创建一个相应名字的文件。那么如果我们只想改变文件的时间戳,如果文件不存在时不进行文件创建该怎么做?这里需要加上 -c 选项。


[alvin@VM_0_16_centos test]$ touch -c alvin
[alvin@VM_0_16_centos test]$ ll alvin
ls: cannot access alvin: No such file or directory


仅改变文件访问时间


我们知道,如果不带任何选项执行 touch 命令时,文件的访问时间及修改时间都是同时被改变成当前系统时间。如下所示:


[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2019-02-20 14:20:21.154819675 +0800
Modify: 2019-02-20 14:20:21.154819675 +0800
Change: 2019-02-20 14:20:21.191819649 +0800
 Birth: -
[alvin@VM_0_16_centos test]$ touch file        # 在这里使用 touch 命令
[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2019-02-20 21:51:24.848774158 +0800        # 文件的访问时间/修改时间均已改成当前系统时间
Modify: 2019-02-20 21:51:24.848774158 +0800
Change: 2019-02-20 21:51:24.848774158 +0800
 Birth: -


这里使用到 stat 命令,可以查看文件更详细的信息。



如果我们只想改变文件的访问时间,只需加上 -a 选项即可, a 即是单词 access 的缩写。


[alvin@VM_0_16_centos test]$ touch -a file
[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2019-02-20 21:56:40.858021859 +0800        # 只有访问时间的时间戳被改变了
Modify: 2019-02-20 21:51:24.848774158 +0800        # 修改时间保持不变
Change: 2019-02-20 21:56:40.858021859 +0800
 Birth: -


仅改变修改时间


如果我们只想改变文件的修改时间,只需加上 -m 选项即可, m 即是单词 modify 的

写。


[alvin@VM_0_16_centos test]$ touch -m file
[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2019-02-20 21:56:40.858021859 +0800
Modify: 2019-02-20 22:07:39.138701655 +0800
Change: 2019-02-20 22:07:39.138701655 +0800
 Birth: -


更改为自定义时间戳


不管是不带选项,还是带上 -a-m 选项,都会将文件相应的时间改为当前系统时间戳。那如果我们想改为自定义的时间戳呢?要怎么处理?否则怎么算得上时光穿梭?

我们有两种方法来更改为自定义时间戳。


1. 加上 -t 选项


比如我们将文件的时间戳改为一个将来时间:


[alvin@VM_0_16_centos test]$ touch -t 202001012020.20 file
[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2020-01-01 20:20:20.000000000 +0800
Modify: 2020-01-01 20:20:20.000000000 +0800
Change: 2019-02-20 22:13:01.526965566 +0800
 Birth: -


在这里, -t 后面所带的时间戳的格式为:


[[CC]YY]MMDDhhmm [.SS]


具体来讲,是这样的:


CC - 年份的前两位 
YY - 年份的后两位 
MM - 月份 [01-12]
DD - 日期 [01-31]
hh - 时 [00-23]
mm - 分 [00-59]
SS - 秒 [00-61]


2. 加上 -d 选项


我们再用新方法将文件的时间戳改成一个过去的时间(2008年奥运会开幕式):


[alvin@VM_0_16_centos test]$ touch -d '08-August-2008' file
[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2008-08-08 00:00:00.000000000 +0800
Modify: 2008-08-08 00:00:00.000000000 +0800
Change: 2019-02-20 22:25:47.808490725 +0800
 Birth: -


在这里,时间的格式为:日-月-年 。但是,这里的时间可以相当灵活,比如也支持 yesterday1 year ago 等等模糊时间:


[alvin@VM_0_16_centos test]$ touch -d 'yesterday 08-August-2008' file
[alvin@VM_0_16_centos test]$ stat file
  File: ‘file’
  Size: 10              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 371115      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   alvin)   Gid: ( 1000/   alvin)
Access: 2008-08-07 00:00:00.000000000 +0800
Modify: 2008-08-07 00:00:00.000000000 +0800
Change: 2019-02-20 22:31:57.564725604 +0800
 Birth: -


除了更改时间,它还可以改时区。


更改时区,只需在 -d 后面跟上对应的时区就可以:

目录
相关文章
|
19小时前
|
Shell Linux 数据安全/隐私保护
蓝易云 - Linux中的chsh命令及示例
注意:只有拥有适当权限的用户(如root用户)才能更改其他用户的登录shell。普通用户只能更改自己的登录shell。
8 3
|
1天前
|
缓存 Linux
【Linux基础】 常用 yum 命令
yum是Yellowdog Updater, Modified的简称,旨在自动化地升级、安装/移除 RPM 安装包。它通过收集rpm包的相关信息,检查依赖性,并提示用户解决依赖问题,从而简化了Linux系统中软件包的管理。
19 10
|
1天前
|
Ubuntu Linux
【Linux基础】常用 apt 命令
在 Linux 系统中,特别是基于 Debian 的发行版(如 Ubuntu),apt(Advanced Package Tool)是一个用于处理软件包的强大工具。apt 提供了对软件包的搜索、安装、升级、删除等操作的命令行界面,使得用户能够方便地管理系统中的软件包。
21 13
|
1天前
|
Linux C语言 C++
Linux 下centos 查看 -std这个编译时命令 是否支持 C17
Linux 下centos 查看 -std这个编译时命令 是否支持 C17
7 2
|
1天前
|
缓存 监控 安全
Linux top命令详解:持续监听进程运行状态
Linux top命令详解:持续监听进程运行状态
12 3
|
2天前
|
监控 Linux Shell
探索Linux命令nice:优雅地调整进程优先级
`nice`命令在Linux中用于调整进程优先级,影响资源分配。它允许设置-20到19的nice值,数值越低,优先级越高。在数据处理时,使用`nice`可控制任务优先级,避免占用全部CPU资源。例如,`nice -n 10 command`以低优先级启动`command`。注意不要过度使用,应根据系统负载和需求谨慎调整。使用`renice`可改变已运行进程的优先级,生产环境操作需谨慎。
|
2天前
|
安全 Linux 数据安全/隐私保护
探索Linux命令newuidmap:用户ID映射的利器
`newuidmap`是Linux工具,用于在用户命名空间中设定UID映射,支持容器安全。它允许限定容器内进程的主机系统权限,确保数据安全和隔离。通过映射文件或命令行参数定义UID映射,提供灵活性和安全性。例如,为Docker容器设置映射,使进程能访问特定UID的数据文件。使用时需注意映射准确性、权限控制和避免映射过多UID。与其他工具如`newgidmap`配合使用以增强用户命名空间支持。
|
2天前
|
安全 数据挖掘 Linux
深入理解Linux命令:newgrp
`newgrp`命令在Linux中用于切换用户默认组,便于访问特定组的文件。它更改当前会话的默认组,新创建的文件将属于这个新组。主要参数是目标组名,可选 `-` 参数允许从stdin输入组密码。实例中,数据分析师通过`newgrp data_analysis`切换到`data_analysis`组来访问受限文件。注意权限、密码安全和会话限制。最佳实践包括明确切换需求、记录操作和安全处理密码。
|
2天前
|
安全 Linux 数据处理
探索Linux命令newgidmap:用户命名空间与GID映射的桥梁
`newgidmap`是Linux工具,管理用户命名空间的GID映射,关键用于容器技术如Docker。它设置GID映射以确保隔离环境中进程的权限,避免ID冲突。通过映射文件或命令行参数设定主机GID到命名空间GID的对应,保证进程能安全访问文件。在Docker场景中,`newgidmap`配合映射文件调整进程PID的GID映射,确保数据处理任务有适当权限。使用时注意映射准确性、安全性和与其他工具的协同。
|
2天前
|
安全 数据挖掘 Linux
探索Linux命令newgidmap:用户命名空间与GID映射的桥梁
`newgidmap`是Linux中管理用户命名空间GID映射的工具,关键用于容器技术如Docker,保证进程在隔离环境中拥有适当权限。它设置GID映射,使容器进程能访问主机文件系统。主要特点包括灵活映射、安全性和易用性。通过指定PID和映射文件,如`newgidmap <PID> /path/to/gid_map.txt`,实现GID转换。使用时要注意映射准确性、安全性和与其他工具的配合。