计算机date时间和‘千年虫事件’

文章详细阐述了千年虫事件的原理及其对各行各业可能造成的影响,以及解决此问题的方法。接着介绍了Linux系统中的2038问题,涉及到时间戳、UTC时间、本地时间和硬件时间,并提出了避免错误的措施。文章强调了2038问题可能带来的更深层次的系统破坏,并指出64位系统可能是解决方案之一。
摘要由CSDN通过智能技术生成

目录

一、千年虫事件

        1、‘千年虫事件’名词解析。

2、应对2000年计算机问题的解决方法。

二、Unix/Linux 2038问题

Linux系统的几种时间:

1、时间戳:(date)

2、UTC时间和本地时间。(timedatectl)

3、避免因时间问题而造成错误。

4、clock或hwclock  查看硬件时间。



一、千年虫事件

        1、‘千年虫事件’名词解析。

        千年虫事件,又叫做“计算机2000年问题” “千年危机”。别名:Y2K bug。

        首先,要明确一点:‘千年虫事件’是一种程序处理日期上的bug(计算机程序故障),而非病毒。
        千年虫问题产生的原因是:使用计算机程序的智能系统,它的年份使用两位十进制数来表示,因此,当日期从1999年12月31日进入2000年1月1日后,系统将无法正常识别“00”表示的2000年还是1900年,从而在跨世纪的年份、日期处理时产生计算错误,引发各种各样的计算机业务处理系统和控制系统的功能紊乱。

        如果’千年虫‘问题没有得到及时的解决,那么我们的生活将出现意想不到的混乱……

可能波及的行业及产生影响举例:
供电系统:
        漂亮国 夏威夷电力公司 曾经做了一项实际的实验,在电厂设备输入00年,结果设备自动停止操作。
银行系统:
        到了2000年,银行微电脑会将2000年解释为1900年,引起利息计算上的错误,甚至自动清空所有记录;自动取款机会拒收“00”年的卡片。
保险公司:
        会将每份保险的年限算错。
通讯公司:
        会出现在1999年12月31日23:59分打了三分钟的电话,结果账单却显示为(-100年+3分钟);
税务系统:
        税局的电脑会认为你拖欠了100年的税款,从而寄来天文数字般的补税通知。^_^..emo
医药系统:
        医疗仪器如救生系统或监视系统可能会死机,从而导致血库管理、医嘱系统与病历、器材管理系统无法正常运作。
交通系统:
        由于控制雷达的电脑失灵,空中管制完全瘫痪,班机停飞。

怎么样,看过这些例子,即使你还没有买电脑,也不会觉得千年虫与你一点关系没有吧?……

2、应对2000年计算机问题的解决方法。

        1.改进软件编程技术,提高软件的可靠性和可维护性;

        2.改进硬件设计,提高硬件的可靠性和可维护性;

        3.改进网络技术,提高网络的可靠性和可维护性;

        4.改进安全技术,提高系统的安全性;

        5.改进数据库技术,提高数据库的可靠性和可维护性;

        6.改进用户界面技术,提高用户体验;

        7.改进系统管理技术,提高系统的可靠性和可维护性。


此时,有的小伙伴可能会说“ 怕个锤子”,我用的是Linux系统。

^_^,别着急,您往下看:👇👇


二、Unix/Linux 2038问题

        如同Windows的‘千年虫事件’,Linux也将遇到同类问题:2038问题。

        ‘2038问题’ 即 32位的Unix/Linux操作系统时间溢出问题。我们知道Unix系统的‘生日’是1970年1月1日,该bug隐患也是由此产生。因为当时用来写Unix/Linux的是C语言,C语言中用 time_t 来代表时间和日期,time_t 是整数int 型的,它用来记载从1970年1月1日开始所经历的秒数。

        这个数据是以32位存储的,第一位是符号位,其余的31位用来存数字,所以它的最大值为:2^32-1 = 2147483647。也就是说,从Unix系统的 生日 算起,最多可以用到2038年01月19日03时14分07秒。

        到时数字不会自动增加,而是会变为-2147483648,而这串数字代表的时间是1901年12月13日20时45分52秒,这会导致很多的程序出现问题,甚至崩溃。

Linux系统的几种时间:

1、时间戳:(date)

date +%s  # 获取从 1970年1月1日 00:00:00 UTC 到目前为止的秒数(时间戳)

2、UTC时间和本地时间。(timedatectl)

        Linux UTC时间是指格林威治标准时间,同时是世界标准时间,不受地理位置的影响。

        本地时间是指不同地区的本地时间,它受地理位置的影响,比如中国的本地时间是东8区,而美国的本地时间是西6区。

]$ timedatectl
      Local time: Sun 2023-02-26 19:32:55 CST
  Universal time: Sun 2023-02-26 11:32:55 UTC
        RTC time: Sun 2023-02-26 11:32:55
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
-------------------------------------------------------------
]$ timedatectl set-timezone Asia/Shanghai  #更改时区

3、避免因时间问题而造成错误。

(特别是docker容器服务内,外时间/时区的同步问题。)

Linux系统:
]$ date  #查看系统当前时间
]$ cat etc/localtime  #查看时区信息
]$ cat /usr/share/zoneinfo/Asia/Shanghai  #查看时区详情信息
#共享时区:拷贝或挂载时区信息到容器服务docker中
#1.拷贝方式
]$ docker cp /usr/share/zoneinfo/Asia/Shanghai 容器名称或Id:etc/localtime
#2.挂载方式
]$ docker run --name 容器名称 -v /etc/localtime:/etc/localtime

4、clock或hwclock  查看硬件时间。

]$ hwclock --set --date ‘26/02/2023 14:00:00’  #设置硬件时间
]$ clock -s  #将硬件时间同步为系统时间
]$ clock -w  #将系统时间同步为硬件时间
具体方法如下:
]$ ntpdate time.windows.com &&hwclock -w
编辑/etc/rc.d/rc.local文件(vim /etc/rc.d/rc.local),在文件末尾添加如下内容:
* */24 * * * ntpdate time.windows.com > /dev/null 2>&1 ; /usr/sbin/hwclock -w

2038这个bug不仅比千年虫更隐蔽,而且会影响系统最底层的时间控制功能。
所以,相比会导致应用层程序出现问题的‘千年虫事件’,业界公认 ‘2038问题’ 会更具有破坏力。

相信随着科技的进步,UNIX的‘2038年问题’将会迎刃而解。
        但就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题。~
        因此,如果有意添购电脑主机,而且有预期会使用到那个时候,最好是选购64位元电脑。


关于“Windows千年危机” 和 ‘Unix2038年问题’  您还有什么大胆的想法?欢迎留言评论 ~

                                                                                                                     CSDN@隔壁de老樊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值