touch

Touch

touch这个命令,对于一个技术而言,应该是十分熟悉的.
像uwsgi这种就可以使用监听一个文件的方式来触发服务更新的部署方式,我们这时候就会用到touch reload的命令来完成.
更重要的是,我习惯性地打ls -al的命令来查看文件的最后修改时间,来查看是否有小朋友乱动了线上的文件.

直到有一天……..
有同事告诉我,touch有个神奇的功能.
于是乎,我touch --help

-a            只更改访问时间
-c, --no-create 不创建任何文件
-d, --date=字符串 使用指定字符串表示时间而非当前时间
-f          (忽略)
-h, --no-dereference      会影响符号链接本身,而非符号链接所指示的目的地
    (当系统支持更改符号链接的所有者时,此选项才有用)
-m            只更改修改时间
-r, --reference=FILE   use this file's times instead of current time
-t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD        change the specified time:
    WORD is access, atime, or use: equivalent to -a
    WORD is modify or mtime: equivalent to -m
--help      显示此帮助信息并退出
--version     显示版本信息并退出

惊!

touch是可以指定最后修改时间的!也就是说,touch --date="2017-05-25 12:00:00" reload",这个命令可以将reload的最后修改时间改回去!
人与人之间最基本的信任呢.

Stat

放心,stat reload这个命令还是可以看出问题来的.

文件:"reload"
大小:0             块:0          IO 块:4096   普通空文件
    设备:808h/2056d    Inode:25039211    硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ catchen)   Gid:( 1000/ catchen)
    最近访问:2017-05-25 12:00:00.000000000 +0800
    最近更改:2017-05-25 12:00:00.000000000 +0800
    最近改动:2017-05-26 15:38:02.693909554 +0800
    创建时间:-

后记

这感觉,就像ls无法告诉我真实大小一样,现在连最后修改时间都不行了.