Πώς να χρησιμοποιήσετε την εντολή stat στο Linux

Η εντολή Linux stat σάς δείχνει πολύ περισσότερες λεπτομέρειες από το ls. Ρίξτε μια ματιά πίσω από την κουρτίνα με αυτό το ενημερωτικό και διαμορφώσιμο βοηθητικό πρόγραμμα. Θα σας δείξουμε πώς να το χρησιμοποιήσετε.

stat Σε παίρνει πίσω από τα παρασκήνια

Η εντολή ls είναι εξαιρετική σε αυτό που κάνει—και κάνει πολλά—αλλά με το Linux, φαίνεται ότι υπάρχει πάντα ένας τρόπος να εμβαθύνουμε και να δούμε τι βρίσκεται κάτω από την επιφάνεια. Και συχνά, δεν πρόκειται απλώς για την ανύψωση της άκρης του χαλιού. Μπορείτε να σκίσετε τις σανίδες δαπέδου και μετά να σκάψετε μια τρύπα. Μπορείτε να ξεφλουδίσετε το Linux σαν κρεμμύδι.

Το ls θα σας δείξει πολλές πληροφορίες σχετικά με ένα αρχείο, όπως ποια δικαιώματα έχουν οριστεί σε αυτό και πόσο μεγάλο είναι και αν είναι αρχείο ή συμβολικός σύνδεσμος. Για να εμφανίσετε αυτές τις πληροφορίες, τις διαβάζει από το a δομή συστήματος αρχείων που ονομάζεται inode.

Κάθε αρχείο και κατάλογος έχει ένα inode. Το inode κρατάει μεταδεδομένα σχετικά με το αρχείο, όπως τα μπλοκ του συστήματος αρχείων που καταλαμβάνει και τις σφραγίδες ημερομηνίας που σχετίζονται με το αρχείο. Το inode είναι σαν μια κάρτα βιβλιοθήκης για το αρχείο. Αλλά θα σας δείξει μόνο μερικές από τις πληροφορίες. Για να δούμε τα πάντα, πρέπει να χρησιμοποιήσουμε την εντολή stat.

Όπως και το ls , η εντολή stat έχει πολλές επιλογές. Αυτό το καθιστά εξαιρετικό υποψήφιο για τη χρήση ψευδωνύμων. Μόλις ανακαλύψετε ένα συγκεκριμένο σύνολο επιλογών που κάνουν το stat να σας δίνει την έξοδο που θέλετε, τυλίξτε το σε ένα ψευδώνυμο ή μια συνάρτηση φλοιού. Αυτό το κάνει πολύ πιο βολικό στη χρήση και δεν χρειάζεται να θυμάστε ένα απόκρυφο σύνολο επιλογών γραμμής εντολών.

Μια γρήγορη σύγκριση

Ας χρησιμοποιήσουμε το ls για να μας δώσουμε μια μεγάλη λίστα (επιλογή -l) με μεγέθη αρχείων αναγνώσιμα από τον άνθρωπο (επιλογή -h):

ls -lh ana.h

Από αριστερά προς τα δεξιά, οι πληροφορίες που παρέχει το ls είναι:

Ο πρώτος χαρακτήρας είναι μια παύλα “-” και αυτό μας λέει ότι το αρχείο είναι ένα κανονικό αρχείο και όχι μια υποδοχή, ένας συμβολικός σύνδεσμος ή άλλος τύπος αντικειμένου.
Ο κάτοχος, η ομάδα και άλλα δικαιώματα παρατίθενται σε οκταδική μορφή.
Ο αριθμός των σκληρών συνδέσμων που οδηγούν σε αυτό το αρχείο. Σε αυτή την περίπτωση, και στις περισσότερες περιπτώσεις, θα είναι ένα.
Ο κάτοχος του αρχείου είναι ο dave.
Ο ιδιοκτήτης της ομάδας είναι ο Dave.
Το μέγεθος του αρχείου είναι 802 byte.
Το αρχείο τροποποιήθηκε τελευταία φορά την Παρασκευή, 13 Δεκεμβρίου 2015.
Το όνομα του αρχείου είναι ana.c.

Ας ρίξουμε μια ματιά με το stat:

stat ana.h

Οι πληροφορίες που παίρνουμε από το stat είναι:

Αρχείο: Το όνομα του αρχείου. Συνήθως, είναι το ίδιο με το όνομα που δώσαμε για να δηλώσουμε στη γραμμή εντολών, αλλά μπορεί να είναι διαφορετικό αν κοιτάμε έναν συμβολικό σύνδεσμο.
Μέγεθος: Το μέγεθος του αρχείου σε byte.
Μπλοκ: Ο αριθμός των μπλοκ συστήματος αρχείων που απαιτεί το αρχείο, προκειμένου να αποθηκευτεί στον σκληρό δίσκο.
IO Block: Το μέγεθος ενός μπλοκ συστήματος αρχείων.
Τύπος αρχείου: Ο τύπος του αντικειμένου που περιγράφουν τα μεταδεδομένα. Οι πιο συνηθισμένοι τύποι είναι αρχεία και κατάλογοι, αλλά μπορεί επίσης να είναι σύνδεσμοι, υποδοχές ή επώνυμες σωλήνες.
Συσκευή: Ο αριθμός της συσκευής δεκαεξαδικό και δεκαδικό. Αυτό είναι το αναγνωριστικό του σκληρού δίσκου στον οποίο είναι αποθηκευμένο το αρχείο.
Inode: Ο αριθμός inode. Δηλαδή τον αριθμό ID αυτού του inode. Μαζί, ο αριθμός inode και ο αριθμός συσκευής προσδιορίζουν μοναδικά ένα αρχείο.
Σύνδεσμοι: Αυτός ο αριθμός υποδεικνύει πόσοι σκληροί σύνδεσμοι παραπέμπουν σε αυτό το αρχείο. Κάθε σκληρός σύνδεσμος έχει το δικό του inode. Έτσι, ένας άλλος τρόπος για να σκεφτείτε αυτό το σχήμα είναι πόσα inodes δείχνουν σε αυτό το ένα αρχείο. Κάθε φορά που δημιουργείται ή διαγράφεται ένας σκληρός σύνδεσμος, αυτός ο αριθμός θα προσαρμόζεται προς τα πάνω ή προς τα κάτω. Όταν φτάσει στο μηδέν, το ίδιο το αρχείο έχει διαγραφεί και το inode αφαιρείται. Εάν χρησιμοποιείτε stat σε έναν κατάλογο, αυτός ο αριθμός αντιπροσωπεύει τον αριθμό των αρχείων στον κατάλογο, συμπεριλαμβανομένου του “.” καταχώρηση για τον τρέχοντα κατάλογο και η καταχώρηση «..» για τον γονικό κατάλογο.
Πρόσβαση: Τα δικαιώματα του αρχείου εμφανίζονται σε οκταδική και παραδοσιακή μορφή rwx (μορφές ανάγνωσης, εγγραφής, εκτέλεσης).
Uid: Αναγνωριστικό χρήστη και όνομα λογαριασμού του κατόχου.
Gid: Αναγνωριστικό ομάδας και όνομα λογαριασμού του κατόχου.
Πρόσβαση: Η χρονική σήμανση πρόσβασης. Όχι τόσο απλό όσο μπορεί να φαίνεται. Οι σύγχρονες διανομές Linux χρησιμοποιούν ένα σχήμα που ονομάζεται relatime, το οποίο προσπαθεί να το κάνει βελτιστοποιήστε τις εγγραφές του σκληρού δίσκου που απαιτούνται για την ενημέρωση του χρόνου πρόσβασης. Με απλά λόγια, ο χρόνος πρόσβασης ενημερώνεται εάν είναι παλαιότερος από τον τροποποιημένο χρόνο.
Τροποποίηση: Η χρονική σήμανση τροποποίησης. Αυτή είναι η στιγμή που τα περιεχόμενα του αρχείου τροποποιήθηκαν για τελευταία φορά. (Κατά την τύχη, τα περιεχόμενα αυτού του αρχείου άλλαξαν για τελευταία φορά πριν από τέσσερα χρόνια.)
Αλλαγή: Η χρονική σήμανση αλλαγής. Αυτή είναι η τελευταία φορά που άλλαξαν τα χαρακτηριστικά ή τα περιεχόμενα του αρχείου. Εάν τροποποιήσετε ένα αρχείο ορίζοντας νέα δικαιώματα αρχείου, η χρονική σήμανση αλλαγής θα ενημερωθεί (επειδή έχουν αλλάξει τα χαρακτηριστικά του αρχείου), αλλά η τροποποιημένη χρονική σήμανση δεν θα ενημερωθεί (επειδή δεν άλλαξαν τα περιεχόμενα του αρχείου).
Γέννηση: Έχει δεσμευτεί για την εμφάνιση της αρχικής ημερομηνίας δημιουργίας του αρχείου, αλλά δεν εφαρμόζεται στο Linux.

  Πώς να εγκαταστήσετε το Brave Browser σε Linux

Κατανόηση των χρονικών σφραγίδων

Οι χρονικές σημάνσεις είναι ευαίσθητες στη ζώνη ώρας. Το -0500 στο τέλος κάθε γραμμής δείχνει ότι αυτό το αρχείο δημιουργήθηκε σε υπολογιστή σε α Συντονισμένη Παγκόσμια Ώρα (UTC) ζώνη ώρας που είναι πέντε ώρες μπροστά από τη ζώνη ώρας του τρέχοντος υπολογιστή. Έτσι, αυτός ο υπολογιστής είναι πέντε ώρες πίσω από τον υπολογιστή που δημιούργησε αυτό το αρχείο. Στην πραγματικότητα, το αρχείο δημιουργήθηκε σε έναν υπολογιστή ζώνης ώρας του Ηνωμένου Βασιλείου και το εξετάζουμε εδώ σε έναν υπολογιστή στη ζώνη ώρας των ΗΠΑ Eastern Standard.

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

Ας χρησιμοποιήσουμε το chmod για να τροποποιήσουμε τα δικαιώματα αρχείου σε ένα αρχείο που ονομάζεται ana.c. Θα το κάνουμε γράψιμο από όλους. Αυτό δεν θα επηρεάσει τα περιεχόμενα του αρχείου, αλλά θα επηρεάσει τα χαρακτηριστικά του αρχείου.

chmod +w ana.c

Και μετά θα χρησιμοποιήσουμε το stat για να δούμε τις χρονικές σημάνσεις:

stat ana.c

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

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

Χρήση Stat με πολλά αρχεία

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

stat ana.h ana.o

Για να χρησιμοποιήσετε το stat σε ένα σύνολο αρχείων, χρησιμοποιήστε την αντιστοίχιση μοτίβων. Το ερωτηματικό “;” αντιπροσωπεύει οποιονδήποτε μεμονωμένο χαρακτήρα και ο αστερίσκος “*” αντιπροσωπεύει οποιαδήποτε συμβολοσειρά χαρακτήρων. Μπορούμε να πούμε στο stat να κάνει αναφορά για οποιοδήποτε αρχείο που ονομάζεται “ana” με μια επέκταση γράμματος, με αυτήν την εντολή:

stat ana.?

Χρήση του stat για την αναφορά σε συστήματα αρχείων

Το stat μπορεί να αναφέρει την κατάσταση των συστημάτων αρχείων, καθώς και την κατάσταση των αρχείων. Η επιλογή -f (σύστημα αρχείων) λέει στο stat να αναφέρει το σύστημα αρχείων στο οποίο βρίσκεται το αρχείο. Σημειώστε ότι μπορούμε επίσης να περάσουμε έναν κατάλογο όπως το “/” στο stat αντί για ένα όνομα αρχείου.

stat -f ana.c

Τα στατιστικά στοιχεία που μας δίνουν είναι:

  Πώς να παίξετε Orwell στο Linux

Αρχείο: Το όνομα του αρχείου.
ID: Το αναγνωριστικό του συστήματος αρχείων με δεκαεξαδικό συμβολισμό.
Namelen: Το μέγιστο επιτρεπόμενο μήκος για τα ονόματα αρχείων.
Τύπος: Ο τύπος του συστήματος αρχείων.
Μέγεθος μπλοκ: Ο όγκος των δεδομένων που ζητούνται αιτήματα ανάγνωσης για βέλτιστους ρυθμούς μεταφοράς δεδομένων.
Μέγεθος βασικού μπλοκ: Το μέγεθος κάθε μπλοκ συστήματος αρχείων.

Μπλοκ:

Σύνολο: Ο συνολικός αριθμός όλων των μπλοκ n του συστήματος αρχείων.
Δωρεάν: Ο αριθμός των ελεύθερων μπλοκ στο σύστημα αρχείων.
Διαθέσιμο: Ο αριθμός των δωρεάν μπλοκ που διατίθενται σε τακτικούς (χωρίς root) χρήστες.

Ινώδες:

Σύνολο: Ο συνολικός αριθμός των inodes στο σύστημα αρχείων.
Δωρεάν: Ο αριθμός των ελεύθερων inode στο σύστημα αρχείων.

Αποαναφορά συμβολικών συνδέσμων

Εάν χρησιμοποιείτε stat σε ένα αρχείο που είναι στην πραγματικότητα ένας συμβολικός σύνδεσμος, θα αναφέρεται στον σύνδεσμο. Εάν θέλετε το stat να αναφέρει το αρχείο στο οποίο οδηγεί ο σύνδεσμος, χρησιμοποιήστε την επιλογή -L (dereference). Το αρχείο code.c είναι ένας συμβολικός σύνδεσμος προς το ana.c. Ας το δούμε χωρίς την επιλογή -L:

stat code.c

Το όνομα αρχείου εμφανίζει το code.c που δείχνει στο ( -> ) ana.c. Το μέγεθος του αρχείου είναι μόνο 11 byte. Υπάρχουν μηδέν μπλοκ αφιερωμένα στην αποθήκευση αυτού του συνδέσμου. Ο τύπος αρχείου παρατίθεται ως συμβολικός σύνδεσμος.

Προφανώς, δεν εξετάζουμε το πραγματικό αρχείο εδώ. Ας το κάνουμε ξανά και ας προσθέσουμε την επιλογή -L:

stat -L code.c

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

Η έκθεση Terse

Η επιλογή -t (terse) αναγκάζει το stat να παρέχει μια συνοπτική περίληψη:

stat -t ana.c

Δεν δίνονται ενδείξεις. Για να το κατανοήσετε—μέχρι να απομνημονεύσετε την ακολουθία πεδίων—πρέπει να διασταυρώσετε αυτήν την έξοδο σε μια πλήρη έξοδο στατιστικών στοιχείων.

Προσαρμοσμένες μορφές εξόδου

Ένας καλύτερος τρόπος για να αποκτήσετε ένα διαφορετικό σύνολο δεδομένων από το stat είναι να χρησιμοποιήσετε μια προσαρμοσμένη μορφή. Υπάρχει ένας μακρύς κατάλογος με διακριτικά που ονομάζονται ακολουθίες μορφοποίησης. Καθένα από αυτά αντιπροσωπεύει ένα στοιχείο δεδομένων. Επιλέξτε αυτά που θέλετε να συμπεριλάβετε στην έξοδο και δημιουργήστε μια συμβολοσειρά μορφής. Όταν καλούμε το stat και του δίνουμε τη συμβολοσειρά μορφής, η έξοδος θα περιλαμβάνει μόνο τα στοιχεία δεδομένων που ζητήσαμε.

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

%a: Τα δικαιώματα πρόσβασης σε οκταδικό.
%A: Τα δικαιώματα πρόσβασης σε αναγνώσιμη από τον άνθρωπο μορφή (rwx).
%b: Ο αριθμός των μπλοκ που έχουν εκχωρηθεί.
%B: Το μέγεθος σε byte κάθε μπλοκ.
%d: Ο αριθμός της συσκευής σε δεκαδικό.
%D: Ο αριθμός της συσκευής σε εξάγωνο.
%f: Η ακατέργαστη λειτουργία σε εξάγωνο.
%F Ο τύπος αρχείου.
%g: Το αναγνωριστικό ομάδας του κατόχου.
%G: Το όνομα της ομάδας του κατόχου.
%h: Ο αριθμός των σκληρών συνδέσμων.
%i: Ο αριθμός inode.
%m: Το σημείο προσάρτησης.
%n: Το όνομα του αρχείου.
%N: Το όνομα αρχείου που αναφέρεται, με το όνομα αρχείου που δεν αναφέρεται εάν είναι συμβολικός σύνδεσμος.
%o: Η υπόδειξη βέλτιστου μεγέθους μεταφοράς I/O.
%s: Το συνολικό μέγεθος, σε byte.
%t: Ο κύριος τύπος συσκευής σε hex, για ειδικά αρχεία συσκευής χαρακτήρων/μπλοκ.
%T: Ο δευτερεύων τύπος συσκευής σε δεκαεξαδικό, για ειδικά αρχεία συσκευής χαρακτήρων/μπλοκ.
%u: Το αναγνωριστικό χρήστη του κατόχου.
%U: Το όνομα χρήστη του κατόχου.
%w: Η ώρα γέννησης του αρχείου, αναγνώσιμη από τον άνθρωπο ή παύλα “-” εάν είναι άγνωστη.
%W: Ο χρόνος γέννησης του αρχείου, δευτερόλεπτα από την Εποχή. 0 αν είναι άγνωστο.
%x: Η ώρα της τελευταίας πρόσβασης, αναγνώσιμη από τον άνθρωπο.
%X: Ο χρόνος τελευταίας πρόσβασης, δευτερόλεπτα από την Εποχή.
%y: Η ώρα της τελευταίας τροποποίησης δεδομένων, αναγνώσιμη από τον άνθρωπο.
%Y: Ο χρόνος της τελευταίας τροποποίησης δεδομένων, δευτερόλεπτα από την Εποχή.
%z: Η ώρα της τελευταίας αλλαγής κατάστασης, αναγνώσιμη από τον άνθρωπο.
%Z: Η ώρα της τελευταίας αλλαγής κατάστασης, δευτερόλεπτα από την Εποχή.

  Πώς να χρησιμοποιήσετε τις εντολές cat και tac Linux

Η «εποχή» είναι η Unix Epoch, που πραγματοποιήθηκε στις 1970-01-01 00:00:00 +0000 (UTC).

Για συστήματα αρχείων, οι ακολουθίες μορφοποίησης είναι:

%a: Ο αριθμός των δωρεάν μπλοκ που διατίθενται σε τακτικούς (χωρίς root) χρήστες.
%b: Τα συνολικά μπλοκ δεδομένων στο σύστημα αρχείων.
%c: Το σύνολο των inodes στο σύστημα αρχείων.
%d: Ο αριθμός των ελεύθερων inode στο σύστημα αρχείων.
%f: Ο αριθμός των ελεύθερων μπλοκ στο σύστημα αρχείων.
%i: Το αναγνωριστικό του συστήματος αρχείων σε δεκαεξαδικό.
%l: Το μέγιστο μήκος των ονομάτων αρχείων.
%n: Το όνομα αρχείου.
%s: Το μέγεθος του μπλοκ (το βέλτιστο μέγεθος γραφής).
%S: Το μέγεθος των μπλοκ συστήματος αρχείων (για μετρήσεις μπλοκ).
%t: Ο τύπος του συστήματος αρχείων είναι δεκαεξαδικός.
%T: τύπος συστήματος αρχείων σε μορφή αναγνώσιμη από τον άνθρωπο.

Υπάρχουν δύο επιλογές που δέχονται συμβολοσειρές ακολουθιών μορφοποίησης. Αυτά είναι –format και –printf. Η διαφορά μεταξύ τους είναι –ερμηνεύει το printf Ακολουθίες διαφυγής τύπου C όπως νέα γραμμή n και tab t , και δεν προσθέτει αυτόματα χαρακτήρα νέας γραμμής στην έξοδο.

Ας δημιουργήσουμε μια συμβολοσειρά μορφής και ας την περάσουμε στο stat. Οι ακολουθίες μορφής που πρόκειται να χρησιμοποιηθούν είναι %n για το όνομα αρχείου, %s για το μέγεθος του αρχείου και %F για τον τύπο αρχείου. Θα προσθέσουμε την ακολουθία n διαφυγής στο τέλος της συμβολοσειράς για να βεβαιωθούμε ότι κάθε αρχείο αντιμετωπίζεται σε μια νέα γραμμή. Η συμβολοσειρά μορφής μας μοιάζει με αυτό:

"File %n is %s bytes, and is a %Fn"

Θα το περάσουμε στο stat χρησιμοποιώντας την επιλογή –printf. Θα ζητήσουμε από το stat να αναφέρει ένα αρχείο που ονομάζεται code.c και ένα σύνολο αρχείων που ταιριάζουν με το ana.?. Αυτή είναι η πλήρης εντολή. Σημειώστε το σύμβολο ίσου “=” μεταξύ του –printf και της συμβολοσειράς μορφοποίησης:

stat --printf="File %n is %s bytes, and is a %Fn" code.c ana/ana.?

stat --printf=

Η αναφορά για κάθε αρχείο παρατίθεται σε μια νέα γραμμή, την οποία ζητήσαμε. Το όνομα αρχείου, το μέγεθος αρχείου και ο τύπος αρχείου παρέχονται για εμάς.

Οι προσαρμοσμένες μορφές σάς δίνουν πρόσβαση σε ακόμη περισσότερα στοιχεία δεδομένων από αυτά που περιλαμβάνονται στην τυπική έξοδο στατιστικών στοιχείων.

Έλεγχος λεπτών κόκκων

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