记录一次在 Linux(Ubuntu)中 date 命令无效的情况

环境背景

系统环境

本地 Ubuntu 16.04 的虚拟机

需求

在项目开发中,功能开发完成后需要修改项目内时间来完成自测,而项目内的时间通常是通过读取系统时间获得

实操过程

第一次尝试

Linux 环境下修改系统时间,第一时间想到的就是 date 命令,在以前的项目开发中也经常用(但是原来的项目 Linux 环境并不需要起本地虚拟机),然后我就通过 sudo date -s '2019-11-1 11:21:45' 尝试修改时间,但是之后再调用 sudo date 命令,发现修改并没有生效(重复 N 次)

第二次尝试

发现 date 不能用了,首先是咨询了一下测试人员(毕竟测试相对开发调时间的次数更多些),然后测试人员告诉我,他的也不生效,每次修改都是在图形界面下完成的。。。但这种方式对于我来说没有办法忍受,一是图形化界面更加吃内存资源(除了起虚拟机,还要用 IDE 的,能省则省),二是图形界面操作不舒服(比不上常用的 XShell)。

于是开始上网搜索解决方案,发现多是先 sudo date -s '2018-11-11 11:11:11',然后sudo hwclock --systohc,中间可能穿插着sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改时区的操作,我将信将疑地试了几次,也修改过自己物理机的本地时间,发现并没有啥用,唯一的效果可能就是增加了我对这几个命令的熟悉程度。

第三次尝试(最后一次)

多次设置都失败,开始考虑是否是系统中的哪些东西禁止了我的修改时间操作,或者暗中修改了我的时间。通过这个思路查询资料,最终找到了问题的根源:我并不是没有修改成功,而是系统的 NTP 服务在我修改成功后又将时间同步回去了,而我需要做的,其实是先关闭 NTP 的同步机制,然后再进行时间修改就能成功。

解决方案

  1. timedatectl set-ntp false
  2. sudo date -s '2019-11-1 11:21:45'

此时通过命令查看时间的话,就可以发现日期修改成功了,而如果需要将时间同步回去,直接执行 timedatectl set-ntp true 即可

总结思考

这次解决问题在没有正确的思路前花了很多的时间,这是由于一些知识盲区导致的(并不知道有 timedatectl 命令的存在,除了 date 命令,对于其他的也知之甚少,所以绕了很多弯路)。知识盲区是难以避免的,只能做到努力去学习、积累;但是并不代表没有办法更快地解决问题,下次再出了类似的问题,如果先凭借自己的积累和经验去触类旁通的定位可疑点,然后再查阅相关资料,相信无论是对于解决问题速度还是解决问题能力的提升都是有帮助的。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值