unix epoch คืออะไรและการทำงานของ UNIX เวลาทำงานอย่างไร

Nov 10, 2025
Linux
Mikhail Leonov / Shutterstock

UNIX ให้เก็บเวลาเป็นจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 และนั่นหมายความว่า Linux ก็เช่นกัน เราอธิบายระบบที่แปลกประหลาดนี้ดูเหมือนว่าทำไมวันโลกาวินาศจึงถูกกำหนดไว้สำหรับปี 2038

evix แรกแรก

goethe ( 1749-1832 ) ประกาศ "ทุกวินาทีเป็นค่าที่ไม่มีที่สิ้นสุด" นั่นเป็นเรื่องจริงเราแต่ละคนมีเพียงไม่กี่วินาทีที่นี่บนโลกโลกและเราไม่รู้ว่าเมื่อวินาทีสุดท้ายของเราจะเป็น แต่เรารู้วันเกิดของเราและเมื่อการนับถอยหลังของมนุษย์ของเราเริ่มต้นขึ้น

unix -ชอบ ราชินีอังกฤษ - มีวันเกิดสองวัน หรือแม่นยำยิ่งขึ้นมีสองครั้งที่แยกจากกันซึ่งมันเริ่มนับเป็นวินาทีของการดำรงอยู่ของมัน ครั้งแรกที่ UNIX เริ่มนับจากคือเที่ยงคืน ม.ค. 1971

เราสามารถเห็นสิ่งนี้ได้ค่อนข้างชัดเจนโดยการตรวจสอบส่วนของรุ่นแรกของ คู่มือโปรแกรมเมอร์ Unix , ลงวันที่ 3 พฤศจิกายน 1971 เลื่อนลงไปที่หน้า 13 ของส่วนนั้นและคุณจะเห็นคำอธิบายของ (ตอนนี้หมดอายุ) เวลา สั่งการ. เราบอกว่า " เวลา ส่งคืนเวลาตั้งแต่ 00:00:00, 1 ม.ค. 1971 วัดในหกสิบวินาที "

ปฏิทินและระบบเวลาที่วัดเวลาเริ่มต้นที่จุดสำคัญในอดีตเช่นเหตุการณ์จักรวาลวิทยาผู้ก่อตั้งจักรวรรดิหรือความสำเร็จของการปฏิวัติ ในระบบปฏิบัติการเวลาและวันที่ตามอำเภอใจได้รับการคัดเลือกเป็นจุดที่การนับเริ่มต้น นี้เป็น ยุค สำหรับระบบปฏิบัติการนั้น

UNIX ใช้จำนวนเต็มที่ไม่ได้ลงชื่อ 32 บิตเพื่อเก็บนับ 60 วินาทีวินาทีตั้งแต่ยุคสมัย นี่เป็นตัวแปรตัวเลขที่มีความสามารถในการถือค่าในช่วง 0 ถึง 4,294,967,295 (2) 32 -1) ฟังดูเหมือนเป็นจำนวนมาก แต่เคาน์เตอร์เพิ่มขึ้น 60 เท่าต่อวินาทีและในฐานะผู้เขียนโปรแกรมโปรแกรมเมอร์ชี้ให้เห็นว่า "ผู้ใช้ที่มีความคิดตามลำดับเวลาจะทราบว่า 2 ** 32 Sixtieths ของวินาทีเพียงประมาณ 2.5 ปี"

ด้วยอัตราการบริโภค 60 จำนวนต่อวินาทีเคาน์เตอร์จะได้รับค่าสูงสุดในวันที่ 8 เมษายน 1973 น้อยกว่า 829 วันต่อมา

evix ที่สอง

ไม่จำเป็นต้องพูดเรื่องนี้ทำหน้าที่อย่างรวดเร็ว จำนวนเต็มที่ไม่ได้ลงชื่อถูกแทนที่ด้วย 32- บิต ที่ลงชื่อ จำนวนเต็ม. อาจดูเป็นตัวเลือกที่น่าแปลกใจเพราะจำนวนเต็มที่ลงชื่อสามารถถือค่าบวกจำนวนน้อย -2,147,483,647 (2) 31 ) - จำนวนเต็มที่ไม่ได้ลงชื่อ อย่างไรก็ตามความเร็วในการบริโภคก็ลดลงจาก 60 ของวินาทีเป็นวินาทีทั้งหมด

ใช้เวลานานกว่าที่จะนับจาก 0 ถึง 2,147,483,647 การนับหนึ่งหมายเลขต่อวินาทีกว่าที่จะนับตั้งแต่ 0 ถึง 4,294,967,295 ที่ 60 จำนวนต่อวินาที และโดยค่อนข้างมาถึง รูปแบบใหม่จะไม่ได้รับค่าสูงสุดเพียง 68 ปี ดูเหมือนว่าในอนาคตจะอยู่ในอนาคตที่ยุคนั้นถูกรีเซ็ตเป็นจุดก่อนหน้าในเวลา ยุคใหม่ถูกตั้งค่าเป็นเที่ยงคืนในวันที่ 1 มกราคม 1970, UTC

จุดที่ 68 ปีในอนาคตใกล้ชิดอย่างไม่น่าสนใจ ที่จะแม่นยำเราจะไปถึงที่ 03:14:07 UTC เมื่อวันที่ 19 มกราคม 2038

โครงการที่เรียบง่าย แต่มีประสิทธิภาพ

การใช้จำนวนเต็มเดียวเพื่อนับจำนวนขั้นตอนเวลาจากจุดที่กำหนดในเวลาเป็นวิธีที่มีประสิทธิภาพในการจัดเก็บเวลา คุณไม่จำเป็นต้องเก็บโครงสร้างที่ซับซ้อนของปีเดือนวันและเวลา และเป็นประเทศโลแคลและเขตเวลาที่เป็นอิสระ

การคูณตัวเลขในจำนวนเต็มตามขนาดของขั้นตอนในกรณีนี้หนึ่งวินาที - ให้เวลาคุณตั้งแต่ยุคสมัยและการแปลงจากรูปแบบเฉพาะตำแหน่งที่มีการปรับโซนเวลาค่อนข้างเล็กน้อย

มันให้ขีด จำกัด บนในตัวคุณ ไม่ช้าก็เร็วคุณจะได้รับค่าสูงสุดที่คุณสามารถเก็บไว้ในประเภทตัวแปรที่คุณเลือก ในช่วงเวลาของการเขียนบทความนี้ปี 2038 อยู่ห่างออกไปเพียง 17 ปี

มันคล้ายกัน แต่แตกต่างกันเล็กน้อยกับปัญหากับระบบคอมพิวเตอร์ในช่วงต้นของศตวรรษที่ผ่านมาโดยใช้สองหลักในการจัดเก็บปี เมื่อปฏิทินกลิ้งไปในปีใหม่และศตวรรษใหม่ของปี 2000 มูลค่าปีที่เก็บไว้เป็น "00" ถูกตีความว่าเป็น 2000 หรือ 1900?

แก้ไขสิ่งที่เรียกว่า " แมงมุม "คาดว่าจะมีค่าใช้จ่ายของสหรัฐฯคนเดียวมากกว่า $ 100 พันล้านและต้องใช้เวลาหลายพันปีในการจัดการทั่วโลก มีปัญหาบางอย่างในช่วงสองสามวันแรกของเดือนมกราคม 2000 แต่ไม่มีอะไรที่เหมือนกับภัยพิบัติที่จะเกิดขึ้นหากข้อผิดพลาดถูกเพิกเฉย

วันโลกาวินาศถูกเลื่อนออกไป

เนื่องจาก Linux และระบบปฏิบัติการ Unix-Lookalike ทั้งหมดแบ่งปันปัญหาเดียวกันปัญหาปี 2038 ได้รับการดำเนินการอย่างจริงจังในบางครั้งด้วยการแก้ไขที่ถูกเพิ่มเข้าไปในเคอร์เนลตั้งแต่ปี 2014 สิ่งนี้ยังคงดำเนินต่อไปพร้อมกับการแก้ไข ถูกเพิ่มไปยังเคอร์เนล เมื่อเร็ว ๆ นี้เป็น 2020 ม.ค. เพื่อแก้ไขปัญหาจำนวนเต็ม 32 บิต

แน่นอนว่าคอมพิวเตอร์ Linux ที่ใช้งานได้มีมากกว่าเคอร์เนล ยูทิลิตี้การดำเนินงานและแอปพลิเคชัน Userland ทั้งหมดที่ใช้เวลาระบบผ่าน API และอินเทอร์เฟซต่าง ๆ จะต้องมีการแก้ไขเพื่อคาดหวังค่า 64 บิต ระบบไฟล์เกินไป จะต้องอัปเดต เพื่อยอมรับการประทับเวลา 64- บิตสำหรับไฟล์และไดเรกทอรี

ลินุกซ์อยู่ทุกที่ . ความล้มเหลวในการเกิดภัยพิบัติใน Linux หมายถึงความล้มเหลวในทุกระบบที่ใช้คอมพิวเตอร์ทุกประเภท ลินุกซ์ทำงานส่วนใหญ่ของเว็บคลาวด์สาธารณะส่วนใหญ่และแม้แต่ยานอวกาศ มันรันบ้านสมาร์ทและรถยนต์ขับรถด้วยตนเอง สมาร์ทโฟนมีเคอร์เนลที่ได้รับจาก Unix ที่หัวใจของพวกเขา ไฟร์วอลล์เครือข่ายใดที่เหมือนกับเครือข่ายเราเตอร์และโมเด็มบรอดแบนด์ที่มีระบบปฏิบัติการที่ฝังอยู่ภายใน Linux

มันยอดเยี่ยมมากที่ Linux นั้นเป็นวิธีที่จะได้รับการแก้ไข เราจะติดตั้งการอัพเกรดและนั่นจะเป็นเช่นนั้น แต่โอกาสที่อุปกรณ์เหล่านั้นจะถูกแก้ไขและอัปเดตอะไรบ้าง พวกเขาจำนวนมากจะไม่ให้บริการด้วยเช่นนั้นดังนั้นมันจะเป็นจุดที่สงสัย แต่บางคนยังคงมีเสียบปลั๊กออกไป ซ่อนตัวอยู่ในที่มืดและฝุ่นละอองในห้องเซิร์ฟเวอร์และตู้แร็คบางที แต่พวกเขาจะอยู่ที่นั่นทำงานอย่างเงียบ ๆ ในขณะที่วินาทีติ๊กจนกระทั่งประมาณหนึ่งในสี่ในช่วงเช้าของวันที่ 19 มกราคม 2038

แต่อุปกรณ์เช่นนั้นควรเป็นชนกลุ่มน้อย ระบบส่วนใหญ่จะเห็นเวลากระทืบมาและไปโดยไม่มีเหตุการณ์ อีกครั้งเราจะสามารถผ่อนคลาย อย่างน้อยจนกระทั่งปี 2486 เข้าใกล้นำมาด้วยปัญหาที่แน่นอนสำหรับระบบที่ใช้จำนวนเต็มที่ใช้ 64 บิตเพื่อนับเวลาตั้งแต่ยุคสมัย

คำสั่งวันที่

เราทำได้ ใช้ วันที่ สั่งการ ในการตรวจสอบ Linux และอนุพันธ์ของ UNIX อื่น ๆ ยังคงใช้รูปแบบดั้งเดิมที่เรียบง่ายในการจัดเก็บค่าเวลาเป็นจำนวนวินาทีตั้งแต่ยุค

ใช้ วันที่ คำสั่งที่ไม่มีพารามิเตอร์ใด ๆ พิมพ์วันที่และเวลาปัจจุบันไปยังหน้าต่างเทอร์มินัล คุณยังแสดงโซนเวลาที่ปรับเวลาให้ EDT เป็นเวลากลางวันตะวันออกซึ่งหมายความว่าคอมพิวเตอร์ทดสอบของเราอยู่ในเขตเวลาตะวันออกและ ออมแสงตามฤดูกาล มีผลบังคับใช้ เมื่อเวลาออมแสงตามฤดูกาลไม่มีผลบังคับใช้โซนเวลาตะวันออกใช้เวลามาตรฐานตะวันออก

หากต้องการดูค่าจำนวนเต็มพื้นฐานเราสามารถใช้สตริงรูปแบบการแสดงผล สตริงรูปแบบมีเครื่องหมายบวก "+" เป็นอักขระตัวแรกของพวกเขา โทเค็นรูปแบบ "% s" หมายถึง "แสดงวินาทีตั้งแต่ยุค"

หากเราใช้เวลาวินาทีที่ส่งคืนโดย วันที่ และเลี้ยงมันกลับเข้าไปใน วันที่ คำสั่ง -NS ตัวเลือก (แสดงเวลาที่อธิบายโดยสตริง) มันจะแปลงกลับเป็นวันที่และเวลาปกติ

 วันที่ 
 วันที่ +% S 
 วันที่ -d  @ 1633183955  

เราสามารถแสดงให้เห็นว่าค่าจำนวนเต็มแสดงให้เห็นถึงเวลาโดยการแสดงจำนวนวินาทีนอนหลับเป็นเวลา 10 วินาทีและแสดงจำนวนวินาทีใหม่ ค่าจำนวนเต็มทั้งสองจะแตกต่างกันโดย 10

 วันที่ +% S & AMP; & amp; นอนหลับ 10 และแอมป์; & amp; วันที่ +% S 

เราได้เห็นว่าเราสามารถผ่านจำนวนวินาทีถึง วันที่ คำสั่งและแปลงเป็นเวลาและวันที่สำหรับเรา หากเราทำเช่นนั้นโดยใช้ศูนย์วินาทีเป็นอินพุตค่าของเรา วันที่ ควรพิมพ์วันที่และเวลาของ unix epoch

 tz = 'UTC' วันที่ -d  @ 0  + '% x% r' 

คำสั่งแบ่งตามนี้:

  • TZ = 'UTC' : EPOCH ถูกกำหนดโดยใช้เวลาสากลที่ประสานงาน (UTC ดังนั้นเราต้องบอก วันที่ เพื่อใช้ UTC โครงสร้าง "TZ =" ตั้งค่าโซนเวลาที่มีประสิทธิภาพสำหรับคำสั่งปัจจุบันเท่านั้น
  • วันที่ : NS วันที่ สั่งการ.
  • -NS @ 0 : เราบอก วันที่ ในการใช้สตริงเป็นอินพุตไม่ใช่เวลา "ตอนนี้" สตริงที่เราส่งผ่านเป็นศูนย์วินาที
  • + '% x% r' : สตริงรูปแบบเอาต์พุต โทเค็นรูปแบบ "% x" บอก วันที่ เพื่อแสดงปีเดือนและวัน โทเค็นรูปแบบ "% r" สั่งสอน วันที่ ในการใช้รูปแบบ 24 ชั่วโมงสำหรับชั่วโมงและนาที เนื่องจากมีช่องว่างในสตริงรูปแบบเราจึงห่อสตริงทั้งหมดในเครื่องหมายคำพูดเดียว " ' "ดังนั้นสตริงที่ถือว่าเป็นรายการเดียว

ตามที่คาดไว้ผลผลิตคือเที่ยงคืนในวันที่ 1 มกราคม 1970

ที่เกี่ยวข้อง: วิธีการแสดงวันที่และเวลาในเทอร์มินัล Linux (และใช้ในสคริปต์ Bash)

จนกว่าจะถึงครั้งต่อไป

ง่าย ๆ มักจะดีที่สุด การนับวินาทีจาก Datum คงที่เป็นวิธีที่ง่ายที่สุดในการทำเครื่องหมายเวลาที่ผ่านไป แต่กาลเวลานำความท้าทายใหม่มาใช้ ด้วยการแก้ไขที่วางไว้ดูเหมือนว่าเราชัดเจนถึงปี 2486

ฉันคิดว่าปลอดภัยที่จะบอกว่าเราจะกังวลเกี่ยวกับเรื่องนี้ใกล้เคียงกับเวลาเล็กน้อย


Linux - บทความยอดนิยม

วิธีใช้เบราว์เซอร์ DB สำหรับ SQLite บน Linux

Linux Dec 16, 2025

Fatmawati Achmad Zaenuri / Shutterstock เบราว์เซอร์ DB สำหรับ SQLite ให้คุณดูและแก้ไ�..


มีอะไรใหม่ใน Debian 11“เป้า”

Linux Jul 22, 2025

เดเบียน , กำเนิดของการแจกแจง Linux อื่น ๆ อีกมากมายได้ทำการเปิดตัว 11..


วิธีการปรับปรุง Ubuntu Linux

Linux Aug 27, 2025

TOMEQS / Shutterstock.com ต้องการซอฟต์แวร์ล่าสุดและยิ่งใหญ่ที่สุดใน Ubuntu ..


วิธีใช้คำสั่ง fsck บน Linux

Linux Aug 18, 2025

Pixza Studio / Shutterstock ข้อมูลสำคัญทั้งหมดของเราตั้งอยู่ในระบบไฟล์ข�..


วิธีการ Roll Back เคอร์เนลในลินุกซ์

Linux Sep 30, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com ถ้าลินุกซ์พีซีของคุณก็มีปัญหาหลังจากก�..


วิธีการล้าง DNS ใน Linux

Linux Nov 14, 2025

ประสบการณ์การท่องอินเทอร์เน็ตของคุณช้าบนอุปกรณ์ Linux ของคุณหรือเป็นเ..


วิธีเพิ่มผู้ใช้ในไฟล์ sudoers ใน Linux

Linux Oct 30, 2025

ถ้า Sudo คำสั่งบน Linux ทำให้คุณได้รับข้อความว่าผู้ใช้“ ไม่ได้อยู่ในไฟ..


วิธีตั้งค่าที่อยู่ IP แบบคงที่ใน Ubuntu

Linux Oct 17, 2025

เครือข่ายที่บ้านของคุณอาศัยที่อยู่ IP เพื่อกำหนดเส้นทางข้อมูลระหว่า..


หมวดหมู่