מהו זמן יוניקס ומתי הייתה תקופת יוניקס?

מהו זמן יוניקס ומתי הייתה תקופת יוניקס?

מדוע ליוניקס יש מושג זמן משלו? מה התקופה ומה הבעיה של Y2038?





זמן יוניקס הוא אמצעי לייצוג תאריך ושעה ספציפיים, המשמשים את לינוקס, macOS ומערכות הדדיות רבות אחרות. זה כל כך נפוץ, שכנראה אתה משתמש בו מבלי להיות מודע לכך. עם זאת, לאחר שתבין את זמן יוניקס תוכל לזהות אותו בהקשרים רבים. מספר כלים יכולים לעזור לך לעבוד עם Unix time.





מה המטרה של יוניקס טיים?

זמן יוניקס הוא ספירת סך כל השניות מאז זמן ותאריך קבועים. זהו פורמט תאריך/שעה (או חותמת זמן) שנראה שונה מהתאריכים והשעות שאנו רגילים אליהם. זאת מטעמי יעילות בלבד. זה לוקח הרבה פחות מקום לאחסן מספר בודד המייצג שניות מאשר לאחסן ערכים נפרדים לשנה, חודש, שעה וכו '.





כמובן, במונחים מודרניים, ההבדל בחלל אינו כ'כ גדול. אבל קחו בחשבון שמקורו ב- Unix בסוף שנות השישים כאשר האחסון הזמין היה קטן בהרבה. גם חותמות זמן משמשות הרבה, כך שאחסון שלהן מסתכם. לדוגמה, לכל קובץ יש שלוש חותמות זמן הקשורות אליו.

הפורמט די בלתי אפשרי לתרגם בראש שלך אלא אם אתה גאון מתמטי. אך עדיין יש לו כמה יתרונות על פני חלופות קריאות יותר כגון רביעי, 21 באוקטובר 2015 07:28:00 GMT . אתה יכול להזמין שני חותמות זמן של Unix בקלות רבה, במבט חטוף. בדרך כלל גם מהר יותר להבין את ההבדל בין שתי חותמות זמן. הדבר נכון במיוחד לגבי תאריכים קרובים זה לזה, כמו בימים סמוכים.



על התקופה

אז, זמן יוניקס הוא ספירה כוללת של שניות מאז נקודת זמן מסוימת. אבל מהי נקודת הזמן הזו? שֶׁלָה 00:00:00 UTC עַל 1 בינואר 1970 . לעתים קרובות קוראים לזה תקופת יוניקס. מתכנתים בחרו את התאריך הזה לתקופה מתוך נוחות מכיוון שזה היה התאריך העגול הקרוב ביותר כשהמציאו את יוניקס טיים.

יכול להיות שראית את התאריך הזה כשמשהו השתבש. ברור שזה באג, אבל כזה שנראה מוזר מאוד כשהוא גורם לדייט מלפני הזמן שבו רבים מאיתנו נולדו! עם זאת, זה מובן לחלוטין כאשר אתה יודע על זמן יוניקס. אם מערכת כלשהי מנסה להציג חותמת זמן שאין לה ערך, היא תתרגם לעתים קרובות ל -0 ותביא לתאריך התקופה המדויק.





xbox one x לעומת xbox series x

פורמט נתוני יוניקס טיים

למען האמת, אין כזה. סוג הנתונים המקורי היה מספר שלם של 32 סיביות, ולעתים קרובות זה נשאר המצב, אפילו במערכות הרבה יותר חזקות.

סוג נתונים זה מאפשר לערך לאחסן בסך הכל 2^32 שניות, שהם קצת יותר מ -136 שנים. ערך זה בדרך כלל חתום, כלומר הוא יכול להיות שלילי או חיובי. אז, זה בדרך כלל מייצג 68 שנים משני צידי התקופה כלומר 1902-2038.





כמובן שזו עדיין תקופה מוגבלת. אך השימוש העיקרי בפורמט חותמת הזמן היה למושגים כגון שינוי קבצים. הצורך היה מאוד לייצג זמן קרוב להווה, ולא להיסטוריה עתיקה או רחוק אל העתיד. אפילו ביישומים כגון לוחות שנה, לעתים רחוקות יש צורך לייצג תאריכים יותר מעשרות שנים לעתיד.

אבל זה לא אומר שמשך הזמן המוגבל הזה הוא ללא בעיות ...

הבעיה של שנת 2038

באג Y2K (אחת מטעויות התכנות הגרועות ביותר בהיסטוריה) השפיע על מערכות מחשב ששמרו שנים כערכים דו ספרתיים. כאשר הגיעה שנת 2000, מערכות כאלה התייחסו אליה כאילו הייתה בשנת 1900. במקרה זה לא היה קטסטרופלי כפי שחששו, בעיקר בגלל שאנשים רבים השקיעו זמן ומאמץ רב מראש, בהכנות לכך.

אם היית שם לב בחלק הקודם, ייתכן שזיהית בעיה דומה שעלולה להשפיע על זמן יוניקס. ובכן, ל- Unix time יש בעיית נתונים משלו: בעיית Y2k38. (זה מכונה לעתים קרובות בעיה, לא באג, אולי הפכנו לאופטימיים יותר משנת 2000!) כאשר זמן יוניקס ייגמר ממש בשנת 2038, המערכות יתייחסו לתאריכים חדשים או כ- 1902 או 1970. או שאולי הם ' פשוט נכשל לגמרי.

לפחות הבעיה הזו לא תפגע בנו בחצות הלילה בערב השנה החדשה. השנייה האחרונה של זמן ה- Unix של 32 סיביות תיפול ב -19 במרץ. בסופו של דבר, סביר להניח שנשדרג את רוב המערכות עד שנת 2038, או שבכל זאת הן כבר יהיו מיושנות.

כמה משאבים שימושיים בחותמת זמן

ה ממיר עידן האתר הוא אולי ממיר חותמת הזמן המקיף ביותר שיש. הוא מתחיל בהצגת זמן יוניקס הנוכחי-בזמן אמת-ומוסיף כמעט כל תכונה שאפשר להעלות על הדעת. השימוש העיקרי בו הוא המרה בין חותמות זמן לתאריכים קריאים לאדם, לשני הכיוונים.

Dan's Tools הוא אוסף עצום של אפליקציות אינטרנט שימושיות, אחת מהן היא ממיר חותמת זמן . זה בסיסי יותר, אך בעל מצגת נקייה מאוד וקל לשימוש.

זמן הוא מציג מראה נוסף, מינימליסטי עוד יותר. הוא מציג זמן במספר פורמטים, כולל זמן יוניקס. הוא כולל את הזמן הנוכחי בכותרת העמוד שלו וזה שימושי.

שימוש ב- Unix Time עם כלי שורת הפקודה

ב- Linux וב- macOS, תַאֲרִיך התוכנית היא כלי הליבה להתמודדות עם תאריך/שעה, כולל חותמות זמן של יוניקס. הוא נקרא ללא טיעונים והוא מחזיר את התאריך/שעה הנוכחיים בפורמט קריא לאדם:

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

אם אתה צריך את התאריך/שעה הנוכחיים בזמן יוניקס, השתמש ב +%s טַעֲנָה:

$ date +%s
1612960114

אתה יכול להמיר מתאריך קריא אדם לחותמת זמן באמצעות -d לסמן אם הגרסה שלך של תַאֲרִיך תומך בזה. רוב גרסאות לינוקס צריכות, כברירת מחדל:

$ 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 פורמט להתמודדות עם זמן יוניקס. לדוגמה, אם ברצונך להציג את תאריך השינוי של קובץ בזמן יוניקס, עם גרסת לינוקס של ls , אתה יכול להשתמש בדברים הבאים:

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

כיצד להשתמש ב- Unix Time בשפות תכנות

ל- PHP יש את זְמַן() הפונקציה שמחזירה את חותמת הזמן הנוכחית של יוניקס. שֶׁלָה תַאֲרִיך() פונקציה לוקחת חותמת זמן כטיעון השני שלה:

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

JavaScript מתייחס לדברים בצורה מעניינת. יש לזה Date.now () שיטה לקבל את מספר האלפיות השנייה מאז עידן יוניקס. כמובן שאתה יכול לחלק את זה ב -1,000 ולעגל את התוצאה כדי לתת את זמן ה- Unix המקביל בשניות:

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

הבנת זמן יוניקס

זמן יוניקס הוא מושג פשוט שצומח במקומות רבים. ברגע שתבין את זה, אתה עשוי למצוא את זה שימושי למדי, למשל בחישוב הפרשי זמן. אתה יכול גם לזהות מתי זה יכול להיות הגורם לבאגים מסוימים.

מושגים כמו התקופה וחותמות הזמן הם חלק חשוב בתחילת העבודה עם לינוקס. למידע נוסף אודות דברים חיוניים כגון ls , עיין במדריך שלנו לפקודות לינוקס בסיסיות.

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל 9 פקודות בסיסיות כדי להתחיל עם לינוקס

רוצה להכיר היכרות עם לינוקס? התחל עם פקודות לינוקס בסיסיות אלה כדי ללמוד משימות מחשוב סטנדרטיות.

קרא הבא
נושאים קשורים על הסופר בובי ג'ק(58 מאמרים פורסמו)

בובי הוא חובב טכנולוגיה שעבד כמפתח תוכנה במשך רוב שני העשורים. הוא נלהב משחקים, עובד כעורך ביקורות במגזין Switch Player, והוא שקוע בכל ההיבטים של פרסום מקוון ופיתוח אתרים.

עוד מאת בובי ג'ק

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה