# 18 年后，我们还将再次遭遇「千年虫」

- 作者：李浩然
- 发布时间：2020-02-11 10:37
- 分类：硬件
- 原文：https://www.ifanr.com/1307316

90 后或许从来没听说过「千年虫」，但 80 后们对这个词或许有所了解。所谓「千年虫」，是指人类在 2000 年 1 月 1 日将遭遇由于时间错误而大面积计算机故障的 BUG 。在 32 位的 Unix 系统上，这个 BUG 还会再出现一次，具体时间将在 2038 年。

![](https://s3.ifanr.com/wp-content/uploads/2020/02/Cvmo8l4W-WaATDy0AABPWhm-TlM985.jpg)

这是因为早期计算机都是以 6 位数来存储时间信息，即年、月、日各两位。到了二十世纪末，人们发现这种日期方法将导致计算机错误的将 2000 年识别为 1900 年，导致大面积计算机故障。

这个问题在当时得到了足够的重视，但在一些以 Unix 为系统的服务器、包括以 Unix 为底层的系统上，还有一些小小的缺陷。

1970 年初，第一批互联网设备开始出现，人们急需一种统一时间，同步互联网的中的每一个设备。当时电气和电子工程师协会（ IEEE ）成立了一个委员会，从 1970 年 1 月 1 日（ UTC/GMT的午夜 ）开始，用秒数计量时间，如果在 Mac 中打开终端，输入 date +%s ，就可查看到一串时间，这就是 1970 年 1 月 1 日 0:00 到当前时间的秒数。

![](https://s3.ifanr.com/wp-content/uploads/2020/02/Snipaste_2020-02-10_21-31-01.png)

▲ 红框内为时间戳



在 32 位系统中，这是数字最大为 2147483483647 ，对应的时间为 2038 年 1 月 19 日凌晨 3 点 14 分。一旦超过了这个时间，在 32 位的 Unix 系统中，时间就会回到 1970 年。

![](https://s3.ifanr.com/wp-content/uploads/2020/02/unix2038.png)

幸运的是，这个问题只在 32 位系统中才会出现，如果换成 64 位系统，最大时间将延长到 9,223,372,036,854,775,807 ，相当于 2923 亿年，对人类来说几乎相当于无限时间了。

虽然目前主流的电脑和智能手机都已经迈向了 64 位操作系统，但在此之外还有其他设备底层采用了 Unix 系统，例如某些洗衣机、智能台灯、智能空调、或者一些电视。这些设备同样会遇到这些 BUG 。

好在这些家具很可能没有那么长的寿命，在遭遇 Y2K38 这一 BUG 之前，它们可能就已经寿终正寝了。
