ما هو وقت يونكس ومتى كانت حقبة يونكس؟

ما هو وقت يونكس ومتى كانت حقبة يونكس؟

لماذا لدى يونكس مفهومه الخاص عن الوقت؟ ما هي المرحلة وما هي مشكلة Y2038؟





وقت Unix هو وسيلة لتمثيل تاريخ ووقت محددين ، يستخدمه Linux و macOS والعديد من الأنظمة الأخرى القابلة للتشغيل البيني. إنه واسع الانتشار لدرجة أنك ربما تستخدمه دون أن تكون على دراية به. بمجرد أن تفهم وقت Unix ، ستكتشفه في العديد من السياقات. يمكن أن تساعدك العديد من الأدوات في العمل باستخدام وقت Unix.





ما هو الغرض من Unix Time؟

وقت Unix هو عدد الثواني الإجمالية منذ وقت وتاريخ محددين. إنه تنسيق التاريخ / الوقت (أو الطابع الزمني) الذي يبدو مختلفًا عن التواريخ والأوقات التي يمكن للبشر قراءتها. هذا محض لأسباب الكفاءة. يستغرق تخزين رقم واحد يمثل الثواني مساحة أقل بكثير مما يتطلبه تخزين قيم منفصلة للسنة والشهر والساعة وما إلى ذلك.





بالطبع ، بالمصطلحات الحديثة ، فإن الاختلاف في الفضاء ليس كثيرًا على الإطلاق. لكن ضع في اعتبارك أن نظام Unix نشأ في أواخر الستينيات عندما كان التخزين المتاح أصغر بكثير. تُستخدم الطوابع الزمنية أيضًا كثيرًا ، لذا تضيف مساحة التخزين الخاصة بهم. على سبيل المثال ، يحتوي كل ملف على ثلاثة طوابع زمنية مرتبطة به.

من المستحيل إلى حد كبير ترجمة التنسيق في رأسك إلا إذا كنت عبقريًا في الرياضيات. ولكن لا يزال لديها بعض المزايا مقارنة بالبدائل الأكثر قابلية للقراءة مثل الأربعاء ، 21 أكتوبر 2015 07:28:00 بتوقيت جرينتش . يمكنك طلب اثنين من الطوابع الزمنية لنظام التشغيل Unix بسهولة شديدة وبنظرة واحدة. عادةً ما يكون من الأسرع أيضًا تحديد الفرق بين طابعين زمنيين. هذا صحيح بشكل خاص للتواريخ القريبة من بعضها البعض ، مثل الأيام المجاورة.



عن العصر

لذا ، فإن وقت Unix هو إجمالي عدد الثواني منذ نقطة زمنية محددة. ولكن ما هي تلك النقطة الزمنية؟ إنه 00:00:00 بالتوقيت العالمي تشغيل 1 يناير 1970 . غالبًا ما يشار إلى هذا باسم عصر Unix. اختار المبرمجون هذا التاريخ للعصر بدافع الملاءمة لأنه كان أقرب موعد جولة عندما اخترعوا وقت Unix.

ربما تكون قد رأيت هذا التاريخ عندما حدث خطأ ما. من الواضح أنه خطأ ، لكنه يبدو غريبًا جدًا عندما ينتج عنه تاريخ من قبل وقت ميلاد الكثير منا! إنه مفهوم تمامًا ، مع ذلك ، عندما تعرف وقت Unix. إذا كان أي نظام يحاول عرض طابع زمني ليس له أي قيمة ، فسيتم ترجمته غالبًا إلى 0 وينتج عنه تاريخ الحقبة بالضبط.





الكمبيوتر لا يرى القرص الصلب الخارجي

تنسيق بيانات وقت يونكس

بالمعنى الدقيق للكلمة ، لا يوجد أحد. كان نوع البيانات الأصلي عددًا صحيحًا 32 بت ، وغالبًا ما يظل هذا هو الحال ، حتى في الأنظمة الأكثر قوة.

يسمح هذا النوع من البيانات للقيمة بتخزين إجمالي 2 ^ 32 ثانية ، وهو ما يزيد قليلاً عن 136 عامًا. يتم عادةً توقيع هذه القيمة ، مما يعني أنها يمكن أن تكون سالبة أو موجبة. لذلك ، عادة ما يمثل 68 عامًا على جانبي العصر ، أي 1902-2038.





لا تزال هذه فترة محدودة بالطبع. لكن الاستخدام الأساسي لتنسيق الطابع الزمني كان لمفاهيم مثل تعديل الملف. كانت هناك حاجة إلى حد كبير لتمثيل الوقت القريب من الحاضر ، بدلاً من التاريخ القديم أو بعيدًا في المستقبل. حتى بالنسبة للتطبيقات مثل التقويمات ، نادرًا ما تكون هناك حاجة لتمثيل التواريخ بعد مرور أكثر من بضعة عقود على المستقبل.

لكن هذا لا يعني أن هذه الفترة الزمنية المحدودة خالية من المشاكل ...

مشكلة عام 2038

أثر خطأ Y2K Bug (أحد أسوأ أخطاء البرمجة في التاريخ) على أنظمة الكمبيوتر التي كانت تخزن السنوات كقيم مكونة من رقمين. عندما جاء عام 2000 ، تعاملت هذه الأنظمة مع الأمر كما لو كان عام 1900. في هذه الحالة ، لم يكن هذا كارثيًا كما كان يُخشى ، ويرجع ذلك أساسًا إلى أن العديد من الأشخاص قضوا الكثير من الوقت والجهد مقدمًا في الاستعداد لها.

إذا كنت منتبهًا في القسم السابق ، فربما تكون قد اكتشفت مشكلة مماثلة قد تؤثر على وقت Unix. حسنًا ، وقت Unix به مشكلة بيانات خاصة به: مشكلة Y2k38. (غالبًا ما يشار إليها على أنها مشكلة وليست خطأ ؛ ربما أصبحنا أكثر تفاؤلاً منذ عام 2000!) عندما ينفد وقت Unix حرفيًا في عام 2038 ، ستتعامل الأنظمة مع التواريخ الجديدة إما على أنها 1902 أو 1970. أو ربما تكون كذلك. سوف تفشل تماما.

على الأقل لن تصيبنا هذه المشكلة في منتصف الليل عشية رأس السنة الجديدة. ستصادف الثانية الأخيرة من نظام Unix 32 بت يوم 19 مارس. في حالة الاحتمال ، سنقوم على الأرجح بترقية معظم الأنظمة بحلول عام 2038 أو ستصبح قديمة بحلول ذلك الوقت على أي حال.

بعض موارد الطوابع الزمنية المفيدة

ال محول العصر ربما يكون الموقع هو أشمل محول للطوابع الزمنية متاح. يبدأ بعرض وقت Unix الحالي - في الوقت الفعلي - ويضيف تقريبًا كل ميزة يمكن تخيلها فوق ذلك. استخدامه الرئيسي هو التحويل بين الطوابع الزمنية والتواريخ التي يمكن للبشر قراءتها ، في كلا الاتجاهين.

Dan’s Tools عبارة عن مجموعة ضخمة من تطبيقات الويب المفيدة ، أحدها عبارة عن محول الطابع الزمني . إنه أساسي بشكل أكبر ، ولكنه يحتوي على عرض تقديمي نظيف للغاية وسهل الاستخدام.

الوقت هو يقدم نظرة أخرى أكثر بساطة. يعرض الوقت في عدد من التنسيقات ، بما في ذلك وقت Unix. يتضمن الوقت الحالي في عنوان صفحته وهو أمر مفيد.

استخدام Unix Time مع أدوات سطر الأوامر

في نظامي Linux و macOS ، فإن ملف تاريخ البرنامج هو الأداة الأساسية للتعامل مع التاريخ / الوقت ، بما في ذلك الطوابع الزمنية لنظام التشغيل Unix. يتم استدعاؤه بدون أي وسيطات ، ويعيد التاريخ / الوقت الحالي بتنسيق يمكن للبشر قراءته:

$ date
Wed Feb 10 12:28:30 GMT 2021

إذا كنت بحاجة إلى التاريخ / الوقت الحالي في وقت Unix ، فاستخدم ملف +٪ s جدال:

$ date +%s
1612960114

يمكنك التحويل من تاريخ يمكن للبشر قراءته إلى طابع زمني باستخدام ملف وضع علامة إذا كان الإصدار الخاص بك من تاريخ يدعمها. يجب أن تقوم معظم إصدارات Linux بشكل افتراضي بما يلي:

$ date -d 'Jan 2 1970' +%s
82800

على macOS ، تاريخ هو برنامج مختلف يتطلب مجموعة مختلفة من العلامات:

$ date -j -f '%b %d %Y %T' 'Jan 02 1970 00:00:00' '+%s'
82800

الذهاب في الاتجاه الآخر ، يمكنك التحويل من طابع زمني Unix باستخدام ملف -r علم:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

تستخدم بعض البرامج الأخرى ملحق ٪س تنسيق للتعامل مع وقت Unix. على سبيل المثال ، إذا كنت تريد إظهار تاريخ تعديل ملف في وقت Unix ، باستخدام امتداد إصدار Linux من ls ، يمكنك استخدام ما يلي:

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

كيفية استخدام Unix Time في لغات البرمجة

PHP لديها امتداد زمن() الوظيفة التي تُرجع الطابع الزمني الحالي لنظام التشغيل Unix. إنه تاريخ() تأخذ الدالة طابعًا زمنيًا كوسيطة ثانية لها:

$ php -r 'echo date('Y-m-d', time());'
2021-02-11

يتعامل JavaScript مع الأشياء بطريقة مثيرة للاهتمام. لديها Date.now () طريقة للحصول على عدد المللي ثانية منذ عهد يونكس. بالطبع ، يمكنك تقسيم هذا على 1000 وتقريب النتيجة لمنح وقت Unix المكافئ بالثواني:

> Math.floor(Date.now() / 1000)
1613083012

فهم وقت يونكس

وقت Unix هو مفهوم بسيط يظهر في العديد من الأماكن. بمجرد أن تفهمها ، قد تجدها مفيدة جدًا ، عند حساب الفروق الزمنية ، على سبيل المثال. يمكنك أيضًا معرفة متى قد يكون سببًا لبعض الأخطاء.

تعد المفاهيم مثل العصر والطوابع الزمنية جزءًا مهمًا من بدء استخدام Linux. لمعرفة المزيد حول الأساسيات مثل ls ، راجع دليلنا لأوامر Linux الأساسية.

يشارك يشارك سقسقة بريد الالكتروني 9 أوامر أساسية لتبدأ مع Linux

هل تريد التعرف على نظام Linux؟ ابدأ بأوامر Linux الأساسية هذه لتتعلم مهام الحوسبة القياسية.

اقرأ التالي
مواضيع ذات صلة نبذة عن الكاتب بوبي جاك(تم نشر 58 مقالة)

بوبي متحمس للتكنولوجيا وعمل كمطور برمجيات لأكثر من عقدين من الزمن. إنه شغوف بالألعاب ، ويعمل كمحرر المراجعات في مجلة Switch Player ، وهو منغمس في جميع جوانب النشر عبر الإنترنت وتطوير الويب.

المزيد من Bobby Jack

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك