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

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

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

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

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

وقت 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 الأساسية.


كيفية تعطيل Ubuntu Dock على Ubuntu 20.04

كيفية تعطيل Ubuntu Dock على Ubuntu 20.04

أحيانًا يكون من الأفضل مغادرة الرصيف والإبحار بعيدًا!

كيفية استخدام CD Command في Linux

كيفية استخدام CD Command في Linux

طريقة سهلة لتغيير الدلائل في Linux من المحطة

كيفية إضافة مفاتيح SSH على أوبونتو 20.04

كيفية إضافة مفاتيح SSH على أوبونتو 20.04

تشرح لك هذه المقالة عملية إضافة مصادقة مفاتيح SSH على خادم Ubuntu 20.04 وتعطيل المصادقة المستندة إلى كلمة المرور.

كيفية تحديث Firefox من Terminal على أجهزة كمبيوتر Ubuntu Linux

كيفية تحديث Firefox من Terminal على أجهزة كمبيوتر Ubuntu Linux

تعرف على كيفية تحديث Firefox من Terminal على كمبيوتر Ubuntu Linux

كيفية تمكين SSH على Ubuntu 20.04

كيفية تمكين SSH على Ubuntu 20.04

الوصول بأمان إلى جهاز Ubuntu الخاص بك من أي مكان

كيفية التحقق مما إذا كان الملف أو الدليل موجودًا في برنامج Bash Shell

كيفية التحقق مما إذا كان الملف أو الدليل موجودًا في برنامج Bash Shell

التحقق من وجود ملف أو دليل من نص برمجي Bash

كيفية تثبيت Google Chrome على Ubuntu 20.04

كيفية تثبيت Google Chrome على Ubuntu 20.04

دليل سريع لتثبيت Google Chrome من سطر الأوامر على Ubuntu 20.04

كيفية إجراء اختبارات السرعة من سطر أوامر Linux باستخدام Speedtest-cli

كيفية إجراء اختبارات السرعة من سطر أوامر Linux باستخدام Speedtest-cli

Speedtest.net هي خدمة لاختبار سرعة اتصالك بالإنترنت. يستخدم خادم speedtest.net قريب للتنزيل

كيفية إنشاء مستخدم Sudo على Ubuntu 20.04 LTS

كيفية إنشاء مستخدم Sudo على Ubuntu 20.04 LTS

امنح امتيازات الجذر لأي مستخدم لديه sudo على Ubuntu 20.04 LTS

كيفية تحديث NodeJS إلى أحدث إصدار في أوبونتو

كيفية تحديث NodeJS إلى أحدث إصدار في أوبونتو

تحديث NodeJS باستخدام APT و NVM.