108.1 Bài 1
Chứng chỉ: |
LPIC-1 |
---|---|
Phiên bản: |
5.0 |
Chủ đề: |
108 Dịch vụ Hệ thống thiết yếu |
Mục tiêu: |
108.1 Duy trì Thời gian Hệ thống |
Bài: |
1 trên 2 |
Giới thiệu
Giờ hiện hành là một yếu tố vô cùng quan trọng đối với tin học hiện đại. Tuy nhiên, việc triển khai căn chỉnh thời gian lại phức tạp một cách đáng kinh ngạc. Việc căn chỉnh thời gian có vẻ không quá quan trọng đối với người dùng cuối nhưng các hệ thống cần có khả năng xử lý một cách hiệu quả các tính năng riêng biệt và các trường hợp phức tạp. Múi giờ không mang tính tĩnh nhưng lại có thể bị thay đổi bởi một quyết định hành chính hoặc chính trị (ví dụ như một quốc gia cũng có thể chọn ngừng thực hiện Quy ước giờ mùa hè). Bất kỳ chương trình nào cũng phải có khả năng xử lý những thay đổi đó một cách hợp lý. Rất may mắn cho các quản trị viên hệ thống là các giải pháp căn chỉnh thời gian trên hệ điều hành Linux rất mạnh mẽ, hoàn thiện và thường có thể hoạt động mà không cần có sự can thiệp của con người.
Khi một máy tính Linux khởi động, nó sẽ bắt đầu căn chỉnh thời gian. Chúng ta sẽ gọi nó là đồng hồ hệ thống vì nó sẽ được hệ điều hành cập nhật. Ngoài ra, các máy tính hiện đại cũng sẽ có một đồng hồ phần cứng hoặc một đồng hồ thời gian thực. Đồng hồ phần cứng này thường là một tính năng của bo mạch chủ và sẽ căn chỉnh thời gian bất kể máy tính có đang chạy hay không. Trong quá trình khởi động, thời gian hệ thống sẽ được đặt từ đồng hồ phần cứng, nhưng đa phần hai đồng hồ này sẽ chạy độc lập với nhau. Trong bài học này, chúng ta sẽ thảo luận về các phương thức tương tác với cả đồng hồ hệ thống và đồng hồ phần cứng.
Trên hầu hết các hệ thống Linux hiện đại, thời gian hệ thống và thời gian phần cứng đều sẽ được đồng bộ hóa với thời gian mạng được triển khai bởi Giao thức thời gian mạng (NTP). Trong phần lớn các trường hợp, cấu hình duy nhất mà người dùng phổ thông sẽ phải thực hiện là đặt múi giờ của họ và NTP sẽ lo phần còn lại. Tuy nhiên, chúng ta sẽ tìm hiểu về một số phương thức làm việc với thời gian theo cách thủ công tại đây và các chi tiết cụ thể về cách định cấu hình thời gian mạng sẽ được đề cập tới trong bài học tiếp theo.
Giờ Địa phương và Giờ Quốc tế
Đồng hồ hệ thống sẽ được đặt thành Giờ phối hợp quốc tế (UTC) - tức giờ địa phương tại Greenwich, Vương quốc Anh. Thông thường thì người dùng nào cũng sẽ muốn biết giờ địa phương của họ. Giờ địa phương sẽ được tính bằng cách áp dụng một phần bù dựa trên múi giờ cùng với Quy ước giờ mùa hè lên UTC. Chúng ta có thể tránh được rất nhiều vấn đề phức tạp bằng cách sử dụng phương thức này.
Đồng hồ hệ thống có thể được đặt thành giờ UTC hoặc giờ địa phương, nhưng người dùng thường được khuyến khích đặt thành giờ UTC.
Ngày
date
(ngày) là một tiện ích cốt lõi được sử dụng chỉ đơn giản là để in giờ địa phương:
$ date Sun Nov 17 12:55:06 EST 2019
Việc sửa đổi các tùy chọn của lệnh date
sẽ thay đổi định dạng của đầu ra.
Ví dụ: người dùng có thể sử dụng date -u
để xem thời gian UTC hiện tại.
$ date -u Sun Nov 17 18:02:51 UTC 2019
Một số tùy chọn thường được sử dụng khác sẽ trả về giờ địa phương tuân thủ theo một định dạng RFC được chấp nhận:
-I
-
Ngày/giờ ở định dạng ISO 8601. Việc thêm
date
(-Idate
) sẽ chỉ giới hạn đầu ra cho ngày. Các định dạng khác làhours
(giờ),minutes
(ngày),seconds
(giây) vàns
cho nanoseconds (nano giây). -R
-
Trả về ngày và giờ ở định dạng RFC 5322.
--rfc-3339
-
Trả về ngày và giờ ở định dạng RFC 3339.
Người dùng có thể tùy chỉnh định dạng của date
bằng các chuỗi được chỉ định trong trang hướng dẫn. Ví dụ: thời gian hiện tại có thể được định dạng theo thời gian Unix:
$ date +%s 1574014515
Từ trang hướng dẫn của date
, chúng ta có thể thấy rằng %s
được dùng để nói đến thời gian Unix.
Thời gian Unix được sử dụng nội bộ trên hầu hết các hệ thống giống Unix. Nó sẽ lưu trữ thời gian UTC dưới dạng số giây kể từ Kỷ nguyên (Epoch - được xác định là ngày 1 tháng 1 năm 1970).
Note
|
Số bit cần thiết để lưu trữ thời gian Unix ở thời điểm hiện tại là 32 bit. Điều này sẽ gây ra một vấn đề trong tương lai khi 32 bit không còn đủ để chứa thời gian hiện tại ở định dạng Unix. Điều này sẽ gây ra các sự cố nghiêm trọng cho mọi hệ thống Linux 32 bit. May mắn thay, điều này sẽ không xảy ra cho đến ngày 19 tháng 1 năm 2038. |
Bằng cách sử dụng các chuỗi này, chúng ta có thể định dạng ngày và giờ ở hầu hết mọi định dạng mà bất kỳ ứng dụng nào yêu cầu. Tất nhiên, trong hầu hết các trường hợp, tốt hơn hết là người dùng nên tuân theo một tiêu chuẩn được chấp nhận.
Ngoài ra, date --date
có thể được sử dụng để định dạng một khung thời gian không phải là thời gian hiện tại. Ví dụ như trong trường hợp này, người dùng có thể chỉ định ngày áp dụng cho hệ thống bằng thời gian Unix:
$ date --date='@1564013011' Wed Jul 24 20:03:31 EDT 2019
Việc sử dụng tùy chọn --debug
có thể sẽ rất hữu ích trong việc đảm bảo ngày sẽ được phân tích cú pháp thành công. Hãy quan sát điều gì sẽ xảy ra khi ta truyền một ngày hợp lệ vào lệnh:
$ date --debug --date="Fri, 03 Jan 2020 14:00:17 -0500" date: parsed day part: Fri (day ordinal=0 number=5) date: parsed date part: (Y-M-D) 2020-01-03 date: parsed time part: 14:00:17 UTC-05 date: input timezone: parsed date/time string (-05) date: using specified time as starting value: '14:00:17' date: warning: day (Fri) ignored when explicit dates are given date: starting date/time: '(Y-M-D) 2020-01-03 14:00:17 TZ=-05' date: '(Y-M-D) 2020-01-03 14:00:17 TZ=-05' = 1578078017 epoch-seconds date: timezone: system default date: final: 1578078017.000000000 (epoch-seconds) date: final: (Y-M-D) 2020-01-03 19:00:17 (UTC) date: final: (Y-M-D) 2020-01-03 14:00:17 (UTC-05)
Đây có thể là một công cụ hữu ích trong việc khắc phục sự cố cho một ứng dụng tạo ngày.
Đồng hồ Phần cứng
Người dùng có thể chạy lệnh hwclock
để xem thời gian được duy trì trên đồng hồ thời gian thực. Lệnh này sẽ yêu cầu đặc quyền nâng cao, vì vậy nên chúng ta sẽ sử dụng sudo
để gọi lệnh trong trường hợp này:
$ sudo hwclock 2019-11-20 11:31:29.217627-05:00
Tùy chọn --verbose
sẽ trả về đầu ra kết quả chi tiết hơn và có thể sẽ hữu ích trong việc khắc phục sự cố:
$ sudo hwclock --verbose hwclock from util-linux 2.34 System Time: 1578079387.976029 Trying to open: /dev/rtc0 Using the rtc interface to the clock. Assuming hardware clock is kept in UTC time. Waiting for clock tick... ...got clock tick Time read from Hardware Clock: 2020/01/03 19:23:08 Hw clock time : 2020/01/03 19:23:08 = 1578079388 seconds since 1969 Time since last adjustment is 1578079388 seconds Calculated Hardware Clock drift is 0.000000 seconds 2020-01-03 14:23:07.948436-05:00
Hãy lưu ý về Calculated Hardware Clock drift
(Phần trôi được tính của Đồng hồ Phần cứng). Đầu ra này có thể cho chúng ta biết liệu thời gian hệ thống và thời gian phần cứng có lệch nhau hay không.
timedatectl
timedatectl
là một lệnh có thể được sử dụng để kiểm tra trạng thái chung về ngày và giờ bao gồm cả thời gian mạng đã được đồng bộ hóa hay chưa (Giao thức thời gian mạng sẽ được đề cập tới trong bài học tiếp theo).
Theo mặc định, timedatectl
sẽ trả về thông tin tương tự như date
nhưng có thêm thời gian RTC (phần cứng) cũng như trạng thái của dịch vụ NTP:
$ timedatectl Local time: Thu 2019-12-05 11:08:05 EST Universal time: Thu 2019-12-05 16:08:05 UTC RTC time: Thu 2019-12-05 16:08:05 Time zone: America/Toronto (EST, -0500) System clock synchronized: yes NTP service: active RTC in local TZ: no
Cài đặt thời gian bằng cách sử dụng timedatectl
Nếu NTP không có sẵn, chúng ta nên sử dụng timedatectl
thay vì date
hoặc hwclock
để đặt thời gian:
# timedatectl set-time '2011-11-25 14:00:00'
Quy trình này cũng tương tự như của date
. Người dùng cũng có thể đặt thời gian độc lập với ngày bằng định dạng HH:MM:SS.
Đặt múi giờ bằng timedatectl
timedatectl
là cách ưa thích để đặt múi giờ địa phương trên các hệ thống Linux dựa trên systemd
khi không có GUI tồn tại. timedatectl
sẽ liệt kê các múi giờ có thể có và sau đó chúng ta có thể đặt bằng cách sử dụng một trong các múi giờ đó làm đối số.
Đầu tiên, chúng ta sẽ liệt kê các múi giờ có thể có:
$ timedatectl list-timezones Africa/Abidjan Africa/Accra Africa/Algiers Africa/Bissau Africa/Cairo ...
Danh sách các múi giờ có thể có sẽ rất dài; do đó, chúng ta nên sử dụng lệnh grep
trong trường hợp này.
Tiếp theo, chúng ta có thể đặt múi giờ bằng cách sử dụng một trong các kết quả được trả về:
$ timedatectl set-timezone Africa/Cairo $ timedatectl Local time: Thu 2019-12-05 18:18:10 EET Universal time: Thu 2019-12-05 16:18:10 UTC RTC time: Thu 2019-12-05 16:18:10 Time zone: Africa/Cairo (EET, +0200) System clock synchronized: yes NTP service: active RTC in local TZ: no
Hãy nhớ rằng tên của múi giờ phải chính xác. Ví dụ: Africa/Cairo
sẽ thay đổi được múi giờ, nhưng cairo
hoặc africa/cairo
thì không.
Vô hiệu hóa NTP bằng cách sử dụng timedatectl
Trong một số trường hợp, người dùng có thể sẽ phải tắt NTP. Việc này có thể được thực hiện bằng cách sử dụng systemctl
nhưng chúng ta sẽ minh hoạ bằng timedatectl
:
# timedatectl set-ntp no $ timedatectl Local time: Thu 2019-12-05 18:19:04 EET Universal time: Thu 2019-12-05 16:19:04 UTC RTC time: Thu 2019-12-05 16:19:04 Time zone: Africa/Cairo (EET, +0200) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a
Đặt múi giờ không sử dụng timedatectl
Đặt thông tin múi giờ là bước tiêu chuẩn trong cài đặt Linux trên máy mới. Nếu có quá trình cài đặt đồ họa, rất có thể việc này sẽ được tự động xử lý mà không cần người dùng can thiệp.
Thư mục /usr/share/zoneinfo
sẽ chứa các thông tin có thể có về các múi giờ khác nhau. Trong thư mục zoneinfo
có các thư mục con có chứa tên các châu lục cũng như các liên kết tượng trưng khác. Chúng ta nên tìm zoneinfo
của khu vực bắt đầu từ lục địa.
Các tệp zoneinfo
có chứa các quy tắc bắt buộc để tính toán chênh lệch thời gian địa phương liên quan đến UTC và chúng cũng rất quan trọng nếu khu vực của người dùng tuân theo Quy ước giờ mùa hè. Nội dung của /etc/localtime
sẽ được đọc khi Linux cần xác định múi giờ địa phương. Để đặt múi giờ mà không cần sử dụng GUI, người dùng nên tạo một liên kết tượng trưng cho vị trí của họ từ /usr/share/zoneinfo
đến /etc/localtime
. Ví dụ:
$ ln -s /usr/share/zoneinfo/Canada/Eastern /etc/localtime
Sau khi đặt múi giờ chính xác, người dùng được khuyến nghị chạy:
# hwclock --systohc
Lệnh này sẽ đặt đồng hồ phần cứng từ đồng hồ hệ thống (nghĩa là đồng hồ thời gian thực sẽ được đặt cùng thời gian với date
). Hãy lưu ý rằng lệnh này phải được chạy với quyền gốc, trong trường hợp này người dùng đang đăng nhập bằng quyền gốc.
/etc/timezone
cũng tương tự như /etc/localtime
. Nó là biểu diễn bằng dữ liệu của múi giờ địa phương và do đó có thể được đọc bằng cách sử dụng cat
:
$ cat /etc/timezone America/Toronto
Hãy lưu ý rằng tệp này không được sử dụng bởi tất cả các bản phân phối Linux.
Cài đặt ngày giờ không sử dụng timedatectl
Note
|
Hầu hết các hệ thống Linux hiện đại đều sử dụng |
Sử dụng ngày
date
có tùy chọn để đặt thời gian hệ thống là --set
hoặc -s
để đặt ngày và giờ. Chúng ta cũng có thể chọn sử dụng --debug
để xác minh việc phân tích cú pháp chính xác của lệnh:
# date --set="11 Nov 2011 11:11:11"
Hãy lưu ý rằng người dùng cần có quyền gốc để đặt ngày ở đây. Chúng ta cũng có thể chọn thay đổi thời gian hoặc ngày một cách độc lập:
# date +%Y%m%d -s "20111125"
Ở đây chúng ta phải chỉ định các trình tự để chuỗi được phân tích cú pháp một cách chính xác. Ví dụ: %Y
đề cập đến năm và do đó bốn chữ số đầu tiên 2011
sẽ được hiểu là năm 2011. Tương tự, %T
là chuỗi thời gian và nó được thể hiện ở đây bằng cách đặt thời gian:
# date +%T -s "13:11:00"
Sau khi thay đổi thời gian hệ thống, chúng ta cũng nên đặt đồng hồ phần cứng để cả đồng hồ hệ thống và phần cứng đều được đồng bộ hóa:
# hwclock --systohc
systohc
(system clock to hardware clock) có nghĩa là “đồng hồ hệ thống đến đồng hồ phần cứng” .
Sử dụng hwclock
Thay vì đặt đồng hồ hệ thống và cập nhật đồng hồ phần cứng, chúng ta có thể đảo ngược tiến trình và bắt đầu bằng cách đặt đồng hồ phần cứng:
# hwclock --set --date "4/12/2019 11:15:19" # hwclock Fri 12 Apr 2019 6:15:19 AM EST -0.562862 seconds
Hãy lưu ý rằng theo mặc định, hwclock
sẽ giả định thời gian UTC nhưng vẫn trả về giờ địa phương theo mặc định.
Sau khi cài đặt đồng hồ phần cứng, chúng ta sẽ cần cập nhật đồng hồ hệ thống từ nó. hctosys
(hardware clock to system clock) có thể hiểu là “đồng hồ phần cứng đến đồng hồ hệ thống”.
# hwclock --hctosys
Bài tập Hướng dẫn
-
Hãy cho biết các lệnh sau đây đang hiển thị hoặc sửa đổi thời gian hệ thống hay thời gian phần cứng:
Lệnh Hệ thống Phần cứng Cả hai date -u
hwclock --set --date "12:00:00"
timedatectl
timedatectl | grep RTC
hwclock --hctosys
date +%T -s "08:00:00"
timedatectl set-time 1980-01-10
-
Hãy quan sát kết quả đầu ra sau và sửa định dạng của đối số để lệnh thành công:
$ date --debug --date "20/20/12 0:10 -3" date: warning: value 20 has less than 4 digits. Assuming MM/DD/YY[YY] date: parsed date part: (Y-M-D) 0002-20-20 date: parsed time part: 00:10:00 UTC-03 date: input timezone: parsed date/time string (-03) date: using specified time as starting value: '00:10:00' date: error: invalid date/time value: date: user provided time: '(Y-M-D) 0002-20-20 00:10:00 TZ=-03' date: normalized time: '(Y-M-D) 0003-08-20 00:10:00 TZ=-03' date: ---- -- date: possible reasons: date: numeric values overflow; date: incorrect timezone date: invalid date ‘20/20/2 0:10 -3’
-
Bằng cách sử dụng lệnh
date
và các chuỗi, hãy viết lệnh để tháng của hệ thống được đặt thành Tháng Hai và giữ nguyên phần còn lại của ngày và giờ. -
Giả sử lệnh trên thành công, hãy sử dụng
hwclock
để đặt đồng hồ phần cứng từ đồng hồ hệ thống. -
Có một địa điểm được gọi là
eucla
. Nó là một phần của lục địa nào? Hãy sử dụng lệnhgrep
để tìm hiểu. -
Hãy đặt múi giờ hiện tại của bạn thành múi giờ
eucla
.
Bài tập Mở rộng
-
Phương pháp cài đặt thời gian nào là tối ưu? Trong trường hợp nào phương pháp thức này có thể sẽ không thể thực hiện được?
-
Tại sao có rất nhiều phương pháp để thực hiện cùng một việc (cài đặt thời gian hệ thống)?
-
Sau ngày 19 tháng 1 năm 2038, Giờ hệ thống Linux sẽ yêu cầu một số 64 bit để lưu trữ. Tuy nhiên, có thể chúng ta chỉ cần chọn đặt một “Kỷ nguyên mới”. Ví dụ: lúc nửa đêm ngày 1 tháng 1 năm 2038 có thể được đặt thành Thời gian kỷ nguyên mới là
0
. Tại sao điều này lại không trở thành một giải pháp tối ưu?
Tóm tắt
Trong bài học này, chúng ta đã học về:
-
Cách hiển thị thời gian ở các định dạng khác nhau từ dòng lệnh.
-
Sự khác biệt giữa đồng hồ hệ thống và đồng hồ phần cứng trong Linux.
-
Cách đặt đồng hồ hệ thống theo cách thủ công.
-
Cách đặt đồng hồ phần cứng theo cách thủ công.
-
Cách thay đổi múi giờ của hệ thống.
Các lệnh được sử dụng trong bài học này:
date
-
Hiển thị hoặc thay đổi đồng hồ hệ thống. Các tuỳ chọn:
-u
-
Hiển thị thời gian UTC.
+%s
-
Sử dụng một chuỗi để hiển thị thời gian Epoch.
--date=
-
Chỉ định thời gian cụ thể để hiển thị chứ không phải thời gian hiện tại.
--debug
-
Hiển thị thông báo gỡ lỗi khi phân tích ngày do người dùng nhập.
-s
-
Đặt đồng hồ hệ thống theo cách thủ công.
hwclock
-
Hiển thị hoặc thay đổi đồng hồ phần cứng.
--systohc
-
Sử dụng đồng hồ hệ thống để đặt đồng hồ phần cứng.
--hctosys
-
Sử dụng đồng hồ phần cứng để đặt đồng hồ hệ thống.
--set --date
-
Đặt đồng hồ phần cứng theo cách thủ công.
timedatectl
-
Hiển thị đồng hồ hệ thống và đồng hồ phần cứng cũng như cấu hình NTP trên hệ thống Linux dựa trên systemd.
set-time
-
Đặt thời gian theo cách thủ công.
list-timezones
-
Liệt kê các múi giờ có thể có.
set-timezone
-
Đặt múi giờ theo cách thủ công.
set-ntp
-
Kích hoạt/vô hiệu hoá NTP.
Đáp án Bài tập Hướng dẫn
-
Hãy cho biết các lệnh sau đây đang hiển thị hoặc sửa đổi thời gian hệ thống hay thời gian phần cứng:
Lệnh Hệ thống Phần cứng Cả hai date -u
X
hwclock --set --date "12:00:00"
X
timedatectl
X
timedatectl | grep RTC
X
hwclock --hctosys
X
date +%T -s "08:00:00"
X
timedatectl set-time 1980-01-10
X
-
Hãy quan sát kết quả đầu ra sau và sửa định dạng của đối số để lệnh thành công:
$ date --debug --date "20/20/12 0:10 -3" date: warning: value 20 has less than 4 digits. Assuming MM/DD/YY[YY] date: parsed date part: (Y-M-D) 0002-20-20 date: parsed time part: 00:10:00 UTC-03 date: input timezone: parsed date/time string (-03) date: using specified time as starting value: '00:10:00' date: error: invalid date/time value: date: user provided time: '(Y-M-D) 0002-20-20 00:10:00 TZ=-03' date: normalized time: '(Y-M-D) 0003-08-20 00:10:00 TZ=-03' date: ---- -- date: possible reasons: date: numeric values overflow; date: incorrect timezone date: invalid date ‘20/20/2 0:10 -3’
date --debug --set "12/20/20 0:10 -3"
-
Bằng cách sử dụng lệnh
date
và các chuỗi, hãy viết lệnh để tháng của hệ thống được đặt thành Tháng Hai và giữ nguyên phần còn lại của ngày và giờ.date +%m -s "2"
-
Giả sử lệnh trên thành công, hãy sử dụng
hwclock
để đặt đồng hồ phần cứng từ đồng hồ hệ thống.hwclock -systohc
-
Có một địa điểm được gọi là
eucla
. Nó là một phần của lục địa nào? Hãy sử dụng lệnhgrep
để tìm hiểu.timedatectl list-timezones \| grep -i eucla
HOẶC
grep -ri eucla /usr/share/zoneinfo
-
Hãy đặt múi giờ hiện tại của bạn thành múi giờ
eucla
.timedatectl set-timezone 'Australia/Eucla'
hoặc
ln -s /usr/share/zoneinfo/Australia/Eucla /etc/localtime
Đáp án Bài tập Mở rộng
-
Phương pháp cài đặt thời gian nào là tối ưu? Trong trường hợp nào phương pháp thức này có thể sẽ không thể thực hiện được?
Trong hầu hết các bản phân phối Linux, NTP sẽ được kích hoạt theo mặc định và nên được dùng để đặt thời gian hệ thống mà không có sự can thiệp của người dùng. Tuy nhiên, nếu có hệ thống Linux không được kết nối với internet, NTP sẽ không thể truy cập được (ví dụ như hệ thống nhúng Linux chạy trên thiết bị công nghiệp có thể sẽ không có kết nối mạng).
-
Tại sao có rất nhiều phương pháp để thực hiện cùng một việc (cài đặt thời gian hệ thống)?
Vì cài đặt thời gian là yêu cầu của tất cả các hệ thống *nix trong nhiều thập kỷ nên có nhiều phương pháp cũ để cài đặt thời gian vẫn được duy trì.
-
Sau ngày 19 tháng 1 năm 2038, Giờ hệ thống Linux sẽ yêu cầu số 64 bit để lưu trữ. Tuy nhiên, có thể chúng ta chỉ cần chọn đặt một “Kỷ nguyên mới”. Ví dụ: lúc nửa đêm ngày 1 tháng 1 năm 2038 có thể được đặt thành Thời gian kỷ nguyên mới là
0
. Tại sao điều này lại không trở thành một giải pháp tối ưu?Đến năm 2038, phần lớn máy tính sẽ chạy CPU 64 bit và việc sử dụng số 64 bit sẽ không làm giảm hiệu suất theo bất kỳ một cách đáng kể nào. Tuy nhiên, chúng ta không thể ước tính rủi ro của việc “đặt lại” thời gian Kỷ nguyên theo cách như vậy. Có rất nhiều phần mềm cũ có thể bị ảnh hưởng. Ví dụ: các ngân hàng và doanh nghiệp lớn thường có một lượng lớn các chương trình cũ mà họ sử dụng nội bộ. Vì vậy, cũng giống như nhiều kịch bản khác, kịch bản này là một thí nghiệm về sự đánh đổi. Bất kỳ hệ thống 32 bit nào vẫn chạy vào năm 2038 cũng sẽ bị ảnh hưởng do tràn Thời gian Kỷ nguyên, nhưng các phần mềm cũ cũng sẽ bị ảnh hưởng khi giá trị của Epoch bị thay đổi.