یونکس ٹائم کیا ہے؟
یونکس وقت (جسے ایپک وقت، POSIX وقت، یا یونکس ٹائم اسٹیمپ بھی کہا جاتا ہے) ایک نظام ہے جو وقت کے ایک نقطہ کو بیان کرتا ہے۔ یہ سیکنڈز کی تعداد ہے جو گزر چکی ہے اس سے پہلے کہ یونکس ایپک شروع ہوا، جسے جمعرات، 1 جنوری 1970 کو 00:00:00 UTC کے طور پر تعریف کیا گیا ہے۔ یہ یونکس جیسی آپریٹنگ سسٹمز اور دیگر بہت سے کمپیوٹنگ سسٹمز میں وسیع پیمانے پر استعمال ہوتا ہے۔
یونکس وقت کا اہم فائدہ اس کی سادگی ہے۔ یہ وقت کو ایک واحد، عالمی سطح پر سمجھا جانے والا عدد کے طور پر ظاہر کرتا ہے جو مسلسل بڑھتا رہتا ہے۔ اس سے ٹائم اسٹیمپ کو ذخیرہ کرنا، موازنہ کرنا، اور حساب کتاب کرنا بہت آسان ہو جاتا ہے بغیر وقت کے زون، ڈے لائٹ سیونگ ٹائم، یا مختلف کیلنڈر سسٹمز کی فکر کیے۔ مثال کے طور پر، دو واقعات کے درمیان مدت معلوم کرنے کے لیے، آپ صرف ان کے یونکس ٹائم اسٹیمپ کو منفی کریں۔
جبکہ یہ خام عدد کمپیوٹرز کے لیے بہترین ہے، یہ انسانوں کے لیے زیادہ دوستانہ نہیں ہے۔ اس فرق کو کم کرنے کے لیے، ڈویلپرز اور ٹیک کے شیدائی ایک ٹول استعمال کرتے ہیں جسے ایپک کنورٹر کہا جاتا ہے۔ آپ اسے کسی بھی ٹائم اسٹیمپ کو انسانی قابل پڑھائی تاریخ میں فوراً تبدیل کرنے کے لیے استعمال کر سکتے ہیں، یا کسی مخصوص تاریخ کے لیے ٹائم اسٹیمپ تلاش کر کے اس کا الٹ بھی کر سکتے ہیں۔
2038 کا مسئلہ
یونکس وقت سے متعلق ایک معروف مسئلہ ہے جسے "2038 کا مسئلہ" کہا جاتا ہے۔ یہ Y2K مسئلے کی نوعیت سے ملتا جلتا ہے۔ بہت سے ابتدائی کمپیوٹر سسٹمز کو یونکس ٹائم کو ایک 32-بٹ دستخط شدہ عدد کے طور پر ذخیرہ کرنے کے لیے ڈیزائن کیا گیا تھا۔ ایک دستخط شدہ 32-بٹ عدد منفی 2,147,483,648 سے مثبت 2,147,483,647 تک کی قیمتیں ظاہر کر سکتا ہے۔
زیادہ سے زیادہ قیمت، 2,147,483,647، 19 جنوری 2038 کو 03:14:07 UTC پر پہنچ جائے گی۔ اگلے سیکنڈ پر، عدد اوور فلو ہو جائے گا اور اپنی سب سے منفی قیمت پر لوٹ جائے گا، جسے سسٹمز 1901 میں ایک تاریخ کے طور پر سمجھیں گے۔ یہ پرانی سافٹ ویئر میں وسیع پیمانے پر ناکامی کا سبب بن سکتا ہے جو 32-بٹ وقت کی نمائندگی پر انحصار کرتا ہے۔
حل یہ ہے کہ ایک 64-بٹ عدد استعمال کیا جائے تاکہ ٹائم اسٹیمپ کو ذخیرہ کیا جا سکے۔ ایک 64-بٹ عدد کی زیادہ سے زیادہ قیمت اتنی بڑی ہے کہ یہ تقریباً 292 ارب سال تک اوور فلو نہیں ہوگا، جو مستقبل کے لیے اس مسئلے کا مؤثر حل ہے۔ زیادہ تر جدید آپریٹنگ سسٹمز اور سافٹ ویئر پہلے ہی 64-بٹ وقت کی نمائندگی کی طرف منتقل ہو چکے ہیں۔
لیپ سیکنڈز اور یونکس ٹائم
ایک اہم تکنیکی تفصیل یہ ہے کہ یونکس وقت لیپ سیکنڈز کا حساب نہیں رکھتا۔ جب کہ UTC (متحدہ عالمی وقت) کبھی کبھار لیپ سیکنڈ شامل کرتا ہے تاکہ ہمارے گھڑیاں زمین کے گردش کے ساتھ ہم آہنگ رہیں، یونکس ٹائم انہیں نظر انداز کرتا ہے اور خطی طور پر شمار کرتا رہتا ہے۔
اس کا مطلب ہے کہ یونکس وقت UTC کی صحیح نمائندگی نہیں ہے۔ بلکہ، اسے زیادہ درست طور پر سیکنڈز کی ایک خطی گنتی کے طور پر بیان کیا جاتا ہے۔ جب لیپ سیکنڈ آتا ہے، تو یونکس وقت کبھی کبھار ایک سیکنڈ کو دہراتا ہے تاکہ ہم آہنگی برقرار رہے۔ یہ نکتہ سائنسی اور اعلیٰ درستگی والی ایپلی کیشنز کے لیے اہم ہے، لیکن زیادہ تر عمومی کمپیوٹنگ کے لیے یہ فرق معمولی ہے۔
یونکس وقت کے عام استعمالات
- فائل ٹائم اسٹیمپ: آپریٹنگ سسٹمز یونکس ٹائم اسٹیمپ کا استعمال کرتے ہیں تاکہ یہ معلوم کیا جا سکے کہ فائلیں کب بنائی گئی، ترمیم کی گئی، یا آخری بار رسائی کی گئی۔
-
ڈیٹا بیسز:
یہ ریکارڈز کے لیے تاریخ اور وقت کی معلومات کو ذخیرہ کرنے کا ایک مؤثر طریقہ ہے (مثلاً
created_at,updated_at)۔ - ایپیز اور ویب ڈیولپمنٹ: سیشن کی میعاد، کیش کنٹرول، اور API درخواستوں کے لاگ کے لیے استعمال ہوتا ہے۔
- پروگرامنگ: تقریباً ہر پروگرامنگ زبان میں موجودہ یونکس ٹائم اسٹیمپ حاصل کرنے اور اسے انسانی قابل پڑھائی تاریخ میں تبدیل کرنے کے فنکشنز فراہم کیے گئے ہیں۔