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

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

מה מטרת זמן יוניקס?

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

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

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

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

על התקופה

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

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

פורמט נתוני הזמן של יוניקס

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

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

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

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

בעיית שנת 2038

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

10 טעויות התכנות הגרועות בהיסטוריה

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

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

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

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

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

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

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

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

תאריך $
רביעי 10 בפברואר 12:28:30 GMT 2021

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

$ date +% s
1612960114

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

$ date -d "2 בינואר 1970" +% s
82800

ב- macOS, תַאֲרִיך היא תוכנית אחרת, הדורשת סט דגלים אחר:

$ date -j -f "% b% d% Y% T" "02 בינואר 1970 00:00:00" "+% s"
82800

אם אתה הולך בכיוון השני, אתה יכול להמיר מחותמת זמן של יוניקס באמצעות ה- -r דֶגֶל:

תאריך $ -r 1600000000
א '13 בספטמבר 2020 13:26:40 שעון החוף

כמה תוכניות אחרות משתמשות ב- % 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 'תאריך הד ("Y-m-d", זמן ());'
2021-02-11

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

> רצפה במתמטיקה (Date.now () / 1000)
1613083012

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

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

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

אימייל
9 פקודות בסיסיות כדי להתחיל עם לינוקס

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

נושאים קשורים
  • לא צוין
על הסופר
בובי ג'ק (27 מאמרים פורסמו)

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

עוד מבובי ג'ק

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

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

צעד אחד נוסף !!!

אנא אשר את כתובת הדוא"ל שלך בדוא"ל ששלחנו לך זה עתה.

.