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

الكاتب: سامي -
ما هو Unix Time ومتى كانت حقبة يونكس؟
ما هو Unix Time ومتى كانت حقبة يونكس؟

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

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

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

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

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

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

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

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

عصر يونكس

لذا ، فإن وقت Unix هو إجمالي عدد الثواني منذ نقطة زمنية محددة. ولكن ما هي تلك النقطة الزمنية؟ انها 00:00:00 UTC في 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 عبارة عن مجموعة ضخمة من تطبيقات الويب المفيدة ، أحدها عبارة عن محول طابع زمني . إنه أكثر أساسية ، ولكن لديه عرض تقديمي نظيف للغاية وسهل الاستخدام.

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

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

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

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

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

$ date +%s
1612960114

يمكنك التحويل من تاريخ يمكن للبشر قراءته إلى طابع زمني باستخدام العلامة -d إذا كان إصدار التاريخ لديك يدعمه. يجب أن تقوم معظم إصدارات 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

تستخدم بعض البرامج الأخرى تنسيق ٪s للتعامل مع وقت 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 لها  وظيفة time () التي ترجع الطابع الزمني الحالي لـ 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 الأساسية.

شارك المقالة:
1584 مشاهدة
هل أعجبك المقال
0
0

مواضيع ذات محتوي مطابق

التصنيفات تصفح المواضيع
youtubbe twitter linkden facebook