Τι είναι η ώρα του Unix και πότε ήταν η εποχή του Unix;

Τι είναι η ώρα του Unix και πότε ήταν η εποχή του Unix;

Γιατί το Unix έχει τη δική του αντίληψη για το χρόνο; Ποια είναι η εποχή και ποιο είναι το πρόβλημα Y2038;





Ο χρόνος Unix είναι ένα μέσο αναπαράστασης μιας συγκεκριμένης ημερομηνίας και ώρας, που χρησιμοποιείται από το Linux, το macOS και πολλά άλλα διαλειτουργικά συστήματα. Είναι τόσο διαδεδομένο, που πιθανότατα το χρησιμοποιείτε χωρίς να το γνωρίζετε. Μόλις κατανοήσετε το χρόνο Unix, ωστόσο, θα τον εντοπίσετε σε πολλά πλαίσια. Αρκετά εργαλεία μπορούν να σας βοηθήσουν να εργαστείτε με το χρόνο Unix.





Ποιος είναι ο σκοπός του χρόνου Unix;

Ο χρόνος Unix είναι ένας αριθμός συνολικών δευτερολέπτων από μια καθορισμένη ώρα και ημερομηνία. Είναι μια μορφή ημερομηνίας/ώρας (ή χρονικής σήμανσης) που μοιάζει διαφορετική από τις αναγνώσιμες από τον άνθρωπο ημερομηνίες και ώρες που έχουμε συνηθίσει. Αυτό είναι καθαρά για λόγους αποτελεσματικότητας. Χρειάζεται πολύ λιγότερος χώρος για να αποθηκεύσετε έναν αριθμό που αντιπροσωπεύει δευτερόλεπτα από ό, τι για να αποθηκεύσετε ξεχωριστές τιμές για το έτος, το μήνα, την ώρα κ.





Φυσικά, με σύγχρονους όρους, η διαφορά χώρου δεν είναι καθόλου. Αλλά σκεφτείτε ότι το Unix δημιουργήθηκε στα τέλη της δεκαετίας του 1960 όταν ο διαθέσιμος χώρος αποθήκευσης ήταν πολύ μικρότερος. Οι χρονικές σημάνσεις χρησιμοποιούνται επίσης πολύ, οπότε ο αποθηκευτικός χώρος τους αθροίζεται. Για παράδειγμα, κάθε αρχείο έχει τρεις χρονικές σημάνσεις που σχετίζονται με αυτό.

Η μορφή είναι σχεδόν αδύνατο να μεταφραστεί στο μυαλό σας, εκτός εάν είστε μαθηματική ιδιοφυΐα. Αλλά εξακολουθεί να έχει ορισμένα πλεονεκτήματα έναντι πιο ευανάγνωστων εναλλακτικών όπως π.χ. Τετ, 21 Οκτωβρίου 2015 07:28:00 GMT Το Μπορείτε να παραγγείλετε δύο χρονικές σφραγίδες Unix πολύ εύκολα, με μια ματιά. Είναι επίσης συνήθως πιο γρήγορο να διαπιστώσετε τη διαφορά μεταξύ δύο χρονικών σημάνσεων. Αυτό ισχύει ιδιαίτερα για ημερομηνίες που βρίσκονται κοντά, όπως σε παρακείμενες ημέρες.



Σχετικά με την Εποχή

Έτσι, ο χρόνος Unix είναι ένας συνολικός αριθμός δευτερολέπτων από ένα συγκεκριμένο χρονικό σημείο. Ποιο είναι όμως αυτό το χρονικό σημείο; Του 00:00:00 UTC επί 1η Ιανουαρίου 1970 Το Αυτό αναφέρεται συχνά ως Unix Epoch. Οι προγραμματιστές επέλεξαν αυτήν την ημερομηνία για την εποχή λόγω ευκολίας, καθώς ήταν η πλησιέστερη ημερομηνία γύρου όταν εφηύραν την ώρα του Unix.

Μπορεί κάλλιστα να έχετε δει αυτήν την ημερομηνία όταν κάτι έχει πάει στραβά. Είναι σαφώς ένα σφάλμα, αλλά αυτό που φαίνεται πολύ περίεργο όταν καταλήγει σε ένα ραντεβού πριν από την εποχή που γεννηθήκαμε πολλοί από εμάς! Είναι απολύτως κατανοητό, όμως, όταν γνωρίζετε την ώρα του Unix. Εάν οποιοδήποτε σύστημα προσπαθεί να εμφανίσει μια χρονική σήμανση που δεν έχει καμία τιμή, συχνά μεταφράζεται σε 0 και οδηγεί στην ακριβή ημερομηνία εποχής.





χρησιμοποιήστε φορητό υπολογιστή ως οθόνη

Μορφή δεδομένων δεδομένων Unix

Για την ακρίβεια, δεν υπάρχει. Ο αρχικός τύπος δεδομένων ήταν ένας ακέραιος 32-bit και αυτό παραμένει συχνά, ακόμη και σε πολύ πιο ισχυρά συστήματα.

Αυτός ο τύπος δεδομένων επιτρέπει στην τιμή να αποθηκεύσει συνολικά 2^32 δευτερόλεπτα, δηλαδή λίγο περισσότερο από 136 χρόνια. Αυτή η τιμή είναι συνήθως υπογεγραμμένη, πράγμα που σημαίνει ότι μπορεί να είναι αρνητική ή θετική. Έτσι, συνήθως αντιπροσωπεύει 68 χρόνια εκατέρωθεν της εποχής, δηλαδή το 1902-2038.





Αυτή είναι ακόμα μια περιορισμένη περίοδος, φυσικά. Αλλά η κύρια χρήση της μορφής χρονικής σήμανσης ήταν για έννοιες όπως η τροποποίηση αρχείου. Η ανάγκη ήταν πολύ να αναπαρασταθεί ο χρόνος κοντά στο παρόν, παρά η αρχαία ιστορία ή πολύ στο μέλλον. Ακόμη και για εφαρμογές όπως τα ημερολόγια, σπάνια υπάρχει ανάγκη αναπαράστασης ημερομηνιών για περισσότερες από μερικές δεκαετίες στο μέλλον.

Αλλά αυτό δεν σημαίνει ότι αυτό το περιορισμένο χρονικό διάστημα είναι χωρίς προβλήματα…

Πρόβλημα Έτους 2038

Το σφάλμα Y2K (ένα από τα χειρότερα λάθη προγραμματισμού στην ιστορία) επηρέασε τα συστήματα υπολογιστών που αποθηκεύουν χρόνια ως διψήφιες τιμές. Όταν ήρθε το έτος 2000, τέτοια συστήματα το αντιμετώπισαν σαν να ήταν το 1900. Στην πραγματικότητα, αυτό δεν ήταν τόσο καταστροφικό όσο φοβόταν, κυρίως επειδή πολλοί άνθρωποι ξόδεψαν πολύ χρόνο και προσπάθεια εκ των προτέρων, προετοιμαζόμενοι για αυτό.

Εάν δώσατε προσοχή στην προηγούμενη ενότητα, ίσως έχετε εντοπίσει ένα παρόμοιο πρόβλημα που θα μπορούσε να επηρεάσει το χρόνο Unix. Λοιπόν, ο χρόνος Unix έχει το δικό του πρόβλημα δεδομένων: το πρόβλημα Y2k38. (Συχνά αναφέρεται ως πρόβλημα, όχι ως σφάλμα. Ίσως γίναμε πιο αισιόδοξοι από το έτος 2000!) Όταν ο χρόνος Unix τελειώσει κυριολεκτικά το 2038, τα συστήματα θα αντιμετωπίζουν τις νέες ημερομηνίες είτε ως το 1902 είτε ως το 1970. possibly πιθανώς απλά θα αποτύχω εντελώς.

Τουλάχιστον αυτό το πρόβλημα δεν θα μας πλήξει τα μεσάνυχτα της παραμονής της Πρωτοχρονιάς. Το τελευταίο δευτερόλεπτο του 32-bit χρόνου Unix θα πέσει στις 19 Μαρτίου. Ενδεχομένως, πιθανότατα θα αναβαθμίσουμε τα περισσότερα συστήματα έως το 2038 ή έτσι κι αλλιώς θα είναι παρωχημένα.

Μερικοί χρήσιμοι πόροι χρονικής σήμανσης

ο Epoch Converter ο ιστότοπος είναι ίσως ο πιο ολοκληρωμένος διαθέσιμος μετατροπέας χρονικής σήμανσης. Ξεκινά με την εμφάνιση του τρέχοντος χρόνου Unix-σε πραγματικό χρόνο-και προσθέτει σχεδόν κάθε δυνατό στοιχείο που μπορεί να φανταστεί. Η κύρια χρήση του είναι για μετατροπή μεταξύ χρονικών σημάνσεων και ημερομηνιών αναγνώσιμων από τον άνθρωπο, και προς τις δύο κατευθύνσεις.

Το Dan’s Tools είναι μια τεράστια συλλογή χρήσιμων εφαρμογών ιστού, μία από τις οποίες είναι η μετατροπέας χρονικής σήμανσης Το Είναι πιο βασικό, αλλά έχει μια πολύ καθαρή παρουσίαση και είναι εύκολο στη χρήση.

Η ώρα είναι παρουσιάζει μια άλλη, ακόμη πιο μινιμαλιστική εμφάνιση. Εμφανίζει τον χρόνο σε διάφορες μορφές, συμπεριλαμβανομένου του χρόνου Unix. Περιλαμβάνει την τρέχουσα ώρα στον τίτλο της σελίδας που είναι χρήσιμη.

Χρήση χρόνου Unix με εργαλεία γραμμής εντολών

Σε Linux και macOS, το ημερομηνία το πρόγραμμα είναι το βασικό βοηθητικό πρόγραμμα για την αντιμετώπιση ημερομηνίας/ώρας, συμπεριλαμβανομένων των χρονικών σημάνσεων του Unix. Ονομάζεται χωρίς κανένα επιχείρημα, επιστρέφει την τρέχουσα ημερομηνία/ώρα σε μορφή αναγνώσιμη από τον άνθρωπο:

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

Εάν χρειάζεστε την τρέχουσα ημερομηνία/ώρα σε ώρα Unix, χρησιμοποιήστε το +%s διαφωνία:

$ date +%s
1612960114

Μπορείτε να μετατρέψετε από μια αναγνώσιμη από τον άνθρωπο ημερομηνία σε χρονική σήμανση χρησιμοποιώντας το -ρε σημαία εάν η έκδοση του ημερομηνία το υποστηρίζει. Οι περισσότερες εκδόσεις 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

Ορισμένα άλλα προγράμματα χρησιμοποιούν το %μικρό μορφή για την αντιμετώπιση του χρόνου Unix. Για παράδειγμα, εάν θέλετε να εμφανίσετε την ημερομηνία τροποποίησης ενός αρχείου σε χρόνο Unix, με το Έκδοση Linux του ls , μπορείτε να χρησιμοποιήσετε τα ακόλουθα:

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

Πώς να χρησιμοποιήσετε το χρόνο Unix σε γλώσσες προγραμματισμού

Η PHP έχει το χρόνος() συνάρτηση που επιστρέφει την τρέχουσα χρονική σήμανση Unix. Του ημερομηνία() η συνάρτηση παίρνει μια χρονική σήμανση ως δεύτερο όρισμα:

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

Η JavaScript προσεγγίζει τα πράγματα με έναν ενδιαφέροντα τρόπο. Εχει ένα Date.now () μέθοδο για να λάβετε τον αριθμό των χιλιοστών του δευτερολέπτου από την εποχή του Unix. Φυσικά, μπορείτε να το διαιρέσετε με 1.000 και να στρογγυλοποιήσετε το αποτέλεσμα για να δώσετε τον αντίστοιχο χρόνο Unix σε δευτερόλεπτα:

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

Κατανόηση του χρόνου Unix

Ο χρόνος Unix είναι μια απλή έννοια που αναπτύσσεται σε πολλά μέρη. Μόλις το καταλάβετε, μπορεί να το βρείτε αρκετά χρήσιμο, για παράδειγμα, όταν υπολογίζετε τις χρονικές διαφορές. Μπορείτε επίσης να αναγνωρίσετε πότε μπορεί να είναι η αιτία ορισμένων σφαλμάτων.

Έννοιες όπως η εποχή και οι χρονικές σφραγίδες είναι ένα σημαντικό μέρος για να ξεκινήσετε με το Linux. Για να μάθετε περισσότερα για βασικά όπως π.χ. ls , ανατρέξτε στον οδηγό μας για βασικές εντολές Linux.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ 9 Βασικές εντολές για να ξεκινήσετε με το Linux

Θέλετε να εξοικειωθείτε με το Linux; Ξεκινήστε με αυτές τις βασικές εντολές Linux για να μάθετε τυπικές εργασίες υπολογισμού.

Διαβάστε Επόμενο
Σχετικά θέματα Σχετικά με τον Συγγραφέα Μπόμπι Τζακ(Δημοσιεύθηκαν 58 άρθρα)

Ο Bobby είναι λάτρης της τεχνολογίας που εργάστηκε ως προγραμματιστής λογισμικού για περισσότερες από δύο δεκαετίες. Είναι παθιασμένος με το gaming, εργάζεται ως Reviews Editor στο Switch Player Magazine και είναι βυθισμένος σε όλες τις πτυχές της διαδικτυακής δημοσίευσης και ανάπτυξης ιστού.

Περισσότερα από τον Bobby Jack

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή
Κατηγορία Linux