Έξοδος σε αρχείο Linux. Πώς να αποθηκεύσετε την έξοδο της κονσόλας σε ένα αρχείο

Εάν η έξοδος στην (γραφική) κονσόλα δεν είναι πολύ μεγάλη, μπορείτε απλά να επιλέξετε ένα κομμάτι με το ποντίκι και να το επικολλήσετε στο μήνυμα κάνοντας κλικ στο μεσαίο κουμπί. Διαφορετικά, μπορείτε να χρησιμοποιήσετε την ανακατεύθυνση εξόδου σε ένα αρχείο μέσω μιας "χοάνης", όπως αυτό:

Παράμετροι Some_command > logfile.txt

Για να δείτε το αποτέλεσμα της εκτέλεσης στην οθόνη και ταυτόχρονα να γράψετε σε ένα αρχείο, μπορείτε να χρησιμοποιήσετε την εντολή tee:

Παράμετροι Some_command | tee -a logfile.txt

Η εντολή setterm -dump δημιουργεί ένα στιγμιότυπο της τρέχουσας προσωρινής μνήμης εικονικής κονσόλας ως αρχείο απλού κειμένου με το προεπιλεγμένο όνομα screen.dump. Μπορείτε να χρησιμοποιήσετε τον αριθμό της κονσόλας για την οποία θέλετε να κάνετε απόρριψη ως όρισμα. Και η προσθήκη της επιλογής -filename file θα ανακατευθύνει αυτήν την ένδειξη σε ένα αρχείο με το καθορισμένο όνομα. Η επιλογή -append θα προσαρτήσει τη νέα ένδειξη σε ένα υπάρχον αρχείο - το "default" screen.dump ή ένα με το όνομα της επιλογής -file.

Εκείνοι. μετά τη χρήση της εντολής όπως

Setterm -dump -file /root/screenlog

αντίστοιχα στο αρχείο /root/screenlogθα είναι το περιεχόμενο μιας σελίδας κονσόλας.

Βρήκε μια άλλη λύση για την αντιγραφή/επικόλληση κειμένου σε μια κονσόλα κειμένου χωρίς ποντίκι. Μπορείτε επίσης να αντιγράψετε κείμενο από την προσωρινή μνήμη κύλισης (δηλαδή τα πάντα στην οθόνη και πάνω από την οθόνη). Για καλύτερη κατανόηση, διαβάστε σχετικά με την οθόνη διαχείρισης παραθύρων που βασίζεται σε κονσόλα . Μπορεί επίσης να είναι χρήσιμο να αυξήσετε το μέγεθος του buffer κύλισης.

1) Εκτέλεση οθόνης

2) Πατήστε Enter. Ολα. Βρισκόμαστε στο παράθυρο της κονσόλας μηδέν.

3) Εκτελούμε τις απαραίτητες εντολές, η έξοδος των οποίων πρέπει να αντιγραφεί.

4) Ctrl+A, Ctrl+[ - είμαστε σε λειτουργία αντιγραφής. Βάζουμε τον κέρσορα στην αρχή της επιλογής, πατάμε το πλήκτρο διαστήματος, μετά βάζουμε τον κέρσορα στο τέλος της επιλογής, πατάμε το πλήκτρο διαστήματος. Το κείμενο αντιγράφηκε στο πρόχειρο.

5) Ctrl+A, c - δημιουργήσαμε ένα νέο 1ο παράθυρο.

6) Ctrl+A, 1 - μεταβήκαμε στο 1ο παράθυρο.

7) Ανοίξτε οποιοδήποτε (?) πρόγραμμα επεξεργασίας κειμένου (δοκίμασα στο mc) και πατήστε Ctrl + A, Ctrl +] - το κείμενο εισάγεται. Αποταμιεύουμε.

8) Ctrl+A, Ctrl+0 - επιστρέψτε στο παράθυρο μηδέν.

Πώς να αυξήσετε την προσωρινή μνήμη κύλισης;

Η πρώτη λύση είναι να αυξήσετε το προεπιλεγμένο (προεπιλεγμένο) μέγεθος buffer στις πηγές του πυρήνα και να το μεταγλωττίσετε ξανά. Επιτρέψτε μου να υποθέσω ότι είστε τόσο απρόθυμοι να το κάνετε αυτό όσο εγώ και αναζητήστε ένα πιο ευέλικτο μέσο.

Και υπάρχει ένα τέτοιο εργαλείο, αλλά ονομάζεται framebuffer κονσόλα, fbcon για συντομία. Αυτή η συσκευή διαθέτει αρχείο τεκμηρίωσης fbcon.txt; αν εγκαταστήσατε την τεκμηρίωση για τον πυρήνα, τότε την έχετε. Ψάξτε το κάπου τριγύρω /usr/shareκλάδους (δεν μπορώ να δώσω την ακριβή διαδρομή λόγω διαφορών στις κατανομές).

Σε αυτό το σημείο, ζητώ συγγνώμη: πρέπει να απομακρυνθούμε λίγο και να μιλήσουμε λίγο για το buffer βίντεο ( framebuffer ).

Το buffer βίντεο είναι ένα buffer μεταξύ της οθόνης και του προσαρμογέα βίντεο. Η ομορφιά του είναι ότι μπορεί να χειριστεί: επιτρέπει κόλπα που δεν θα λειτουργούσαν εάν ο προσαρμογέας συνδεόταν απευθείας στην οθόνη.

Ένα τέτοιο κόλπο σχετίζεται με την προσωρινή μνήμη κύλισης. αποδεικνύεται ότι μπορείτε να "ζητήσετε" από την προσωρινή μνήμη βίντεο να εκχωρήσει περισσότερη μνήμη στην προσωρινή μνήμη κύλισης. Αυτό επιτυγχάνεται μέσω των παραμέτρων εκκίνησης του πυρήνα. Πρώτα απαιτείτε framebuffer(buffer βίντεο) Μετά ρωτάς μεγαλύτερο bufferπάπυρος.

Το παρακάτω παράδειγμα είναι για το GRUB, αλλά μπορεί εύκολα να προσαρμοστεί στο LILO. Στο αρχείο διαμόρφωσης GRUB - μενού.lst- βρείτε τη γραμμή που αντιστοιχεί στον πυρήνα και, στη συνέχεια: Αφαιρέστε την επιλογή vga=xxx, εάν υπάρχει. Προσθέστε την επιλογή video=vesabf ή οτιδήποτε ταιριάζει με το υλικό σας. Προσθέστε την επιλογή fbcon=scrollback:128 . Μετά από αυτή τη διαδικασία, η γραμμή παραμέτρων του πυρήνα θα πρέπει να μοιάζει κάπως έτσι:

Πυρήνας /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128

Το ερώτημα είναι γιατί να αφαιρέσετε την επιλογή vga=xxx; Λόγω πιθανών διενέξεων με την επιλογή βίντεο. Στον προσαρμογέα ATI μου, δεν μπορώ να αλλάξω την προσωρινή μνήμη κύλισης εάν εμφανίζεται η λίστα vga=xxx. Ίσως στην περίπτωσή σας να μην ισχύει αυτό. Εάν οι παραπάνω επιλογές λειτουργούν - καλό. αλλά τι γίνεται αν θέλετε να αυξήσετε τον αριθμό των γραμμών ή να ορίσετε μια μικρότερη γραμματοσειρά στην οθόνη; Πάντα το κάνατε αυτό με την επιλογή vga=xxx, και αυτό εξαφανίστηκε. Μην ανησυχείτε - το ίδιο μπορεί να επιτευχθεί αλλάζοντας τις παραμέτρους fbcon όπως περιγράφεται στο αρχείο fbcon.txt(αλλά δεν περιγράφεται σε αυτό το άρθρο).

Με την επιλογή fbcon=scrollback:128, η προσωρινή μνήμη κύλισης αυξήθηκε σε 17 οθόνες (35 φορές Shift+PgUp μισή οθόνη). Παρεμπιπτόντως, το 128 είναι ένα kilobyte. Ο συντάκτης του άρθρου ισχυρίζεται ότι δεν μπορούν να διαπιστωθούν περισσότερα. Δεν προσπάθησα.

Μπορείτε να χρησιμοποιήσετε σενάριο.

Όνομα αρχείου σεναρίου.log

όταν εκτελούνται όλες οι απαιτούμενες εντολές -

Όλα είναι γραμμένα στο filename.log

Το FreeBSD έχει ένα θαυμάσιο βοηθητικό πρόγραμμα ρολογιών που σας επιτρέπει να παρακολουθείτε τερματικά, αλλά όπως αποδείχθηκε, στο Linux εκτελεί εντελώς διαφορετικές λειτουργίες =\ Αξίζει να γκουγκλάρετε σε αυτό το θέμα, υπάρχει κάτι ...

Όταν εργάζεστε στο τερματικό, βλέπετε φυσικά όλη την έξοδο των εντολών σε πραγματικό χρόνο ακριβώς στο παράθυρο του τερματικού. Υπάρχουν όμως στιγμές που η έξοδος πρέπει να αποθηκευτεί για να δουλέψει αργότερα (ανάλυσέ τη, συγκρίνει κ.λπ.). Έτσι, δουλεύοντας στο Bash, έχετε τη δυνατότητα να ανακατευθύνετε τις εμφανιζόμενες πληροφορίες από το παράθυρο του τερματικού στο αρχείο κειμένου. Ας δούμε πώς γίνεται.

Επιλογή 1: ανακατευθύνει μόνο την έξοδο τερματικού σε ένα αρχείο

Σε αυτήν την περίπτωση, ολόκληρο το αποτέλεσμα της εργασίας οποιασδήποτε εντολής θα γραφτεί σε ένα αρχείο κειμένου, χωρίς να εμφανίζεται στην οθόνη. Δηλαδή, θα ανακατευθύνουμε κυριολεκτικά πληροφορίες από την οθόνη σε ένα αρχείο. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε τους τελεστές > Και >> και τη διαδρομή προς το αρχείο στο οποίο πρέπει να γράψετε, στο τέλος της εντολής που εκτελείται.

Χειριστής > αποθηκεύει το αποτέλεσμα της εντολής στο καθορισμένο αρχείο και, εάν περιέχει ήδη πληροφορίες, το αντικαθιστά.

Χειριστής >> θα ανακατευθύνει την έξοδο της εντολής σε ένα αρχείο και εάν περιέχει επίσης πληροφορίες, τα νέα δεδομένα θα προστεθούν στο τέλος του αρχείου.

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

Ls > /home/ruslan/example

Τώρα ας δούμε αν όλα λειτούργησαν. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου που έχετε. Μπορείτε επίσης να το κάνετε αυτό απευθείας στο τερματικό χρησιμοποιώντας την εντολή cat:

Γάτα /home/ruslan/παράδειγμα

Όλα λειτουργούν.

Να θυμάστε ότι " > Το " θα αντικαταστήσει όλα τα δεδομένα που υπήρχαν προηγουμένως στο αρχείο, οπότε αν χρειάζεται να προσθέσετε κάτι στο αρχείο, χρησιμοποιήστε τον τελεστή " >> «

Ας πούμε ότι αφού έχουμε ανακατευθύνει την έξοδο της εντολής ls να αρχειοθετήσω " παράδειγμα » αποφασίσαμε να μάθουμε την έκδοση του πυρήνα του συστήματος και επίσης να αποθηκεύσουμε την έξοδο στο ίδιο αρχείο. Για να μάθετε την έκδοση του πυρήνα, χρησιμοποιήστε την εντολή Το όνομα σου και παράμετρος -ένα , τότε λέμε στον Bash πώς και πού να αποθηκεύσει το αποτέλεσμα της εκτέλεσής του:

Uname -a >> /home/ruslan/example

Ας ελέγξουμε ξανά το αποτέλεσμα:

Γάτα /home/ruslan/παράδειγμα

Όπως μπορείτε να δείτε, έχουμε διατηρήσει τα αποτελέσματα της εργασίας και ls , Και Το όνομα σου .

Επιλογή 2: ανακατεύθυνση της εξόδου σε ένα αρχείο και εμφάνιση στην οθόνη

Όχι όλοι και όχι πάντα βολικοί στη χρήση χειριστές > Και >> , καθώς είναι ακόμα καλύτερα όταν η αναταραχή των εντολών μπορεί να παρατηρηθεί σε πραγματικό χρόνο στο παράθυρο του τερματικού. Σε αυτήν την περίπτωση, μπορούμε να χρησιμοποιήσουμε την εντολή στόχος , το οποίο θα εμφανίσει την εκτέλεση των εντολών στην οθόνη και θα το αποθηκεύσει σε ένα αρχείο. Η σύνταξή του είναι η εξής:

Ομάδα | tee /path/to/file

Αυτή η επιλογή είναι παρόμοια με τον χειριστή > από την προηγούμενη παράγραφο, δηλαδή κατά την εγγραφή σε ένα αρχείο, όλα τα παλιά δεδομένα θα διαγραφούν. Εάν χρειάζεται να προσαρτήσετε σε ένα αρχείο, πρέπει να προσθέσετε μια παράμετρο στην κατασκευή -ένα :

Ομάδα | tee -a /path/to/file

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

Σε αυτό το άρθρο, θα δούμε πώς λειτουργεί η ανακατεύθυνση εισόδου/εξόδου του Linux, ποιοι τελεστές χρησιμοποιούνται για αυτό και πού μπορούν να εφαρμοστούν όλα αυτά.

Όλες οι εντολές που εκτελούμε μας επιστρέφουν τρία είδη δεδομένων:

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

Στο Linux, όλες οι ουσίες θεωρούνται αρχεία, συμπεριλαμβανομένων των ροών εισόδου/εξόδου του linux - αρχεία. Κάθε διανομή έχει τρία κύρια αρχεία ροής που μπορούν να χρησιμοποιήσουν τα προγράμματα, ορίζονται από το κέλυφος και προσδιορίζονται από έναν αριθμό περιγραφέα αρχείου:

  • STDIN ή 0- αυτό το αρχείο σχετίζεται με το πληκτρολόγιο και οι περισσότερες εντολές χρησιμοποιούν τα δεδομένα τους από εδώ.
  • STDOUT ή 1- αυτή είναι η τυπική έξοδος, εδώ το πρόγραμμα στέλνει όλα τα αποτελέσματα της εργασίας του. Συνδέεται με την οθόνη, ή για την ακρίβεια, με το τερματικό στο οποίο εκτελείται το πρόγραμμα.
  • STDERR ή 2- όλα τα μηνύματα σφάλματος εξάγονται σε αυτό το αρχείο.

Η ανακατεύθυνση I/O σάς επιτρέπει να αντικαταστήσετε ένα από αυτά τα αρχεία με το δικό σας. Για παράδειγμα, μπορείτε να κάνετε το πρόγραμμα να διαβάζει δεδομένα από ένα αρχείο στο σύστημα αρχείων αντί για το πληκτρολόγιο, μπορείτε επίσης να γράψετε σφάλματα σε ένα αρχείο αντί στην οθόνη και ούτω καθεξής. Όλα αυτά γίνονται χρησιμοποιώντας σύμβολα "<" Και ">" .

Ανακατεύθυνση της εξόδου στο αρχείο

Όλα είναι πολύ απλά. Μπορείτε να ανακατευθύνετε την έξοδο σε ένα αρχείο χρησιμοποιώντας το σύμβολο >. Για παράδειγμα, ας αποθηκεύσουμε την έξοδο της εντολής top:

top -bn 5 > top.log

Η επιλογή -b κάνει το πρόγραμμα να εκτελείται σε μη διαδραστική λειτουργία δέσμης και η επιλογή n επαναλαμβάνει τη λειτουργία πέντε φορές για να λάβει πληροφορίες για όλες τις διεργασίες. Ας δούμε τώρα τι συμβαίνει με τη γάτα:

Σύμβολο ">" αντικαθιστά πληροφορίες από το αρχείο εάν υπάρχει ήδη κάτι εκεί. Για να προσθέσετε δεδομένα στο τέλος, χρησιμοποιήστε ">>" . Για παράδειγμα, ανακατευθύνετε την έξοδο σε ένα αρχείο linux για την κορυφή:

top -bn 5 >> top.log

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

top -bn 5 1>top.log

Ανακατεύθυνση σφαλμάτων σε ένα αρχείο

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

Μπορείτε να ανακατευθύνετε το τυπικό σφάλμα σε ένα αρχείο όπως αυτό:

ls -l /root/ 2> ls-error.log
$ cat ls-error.log

Για να προσθέσετε δεδομένα στο τέλος ενός αρχείου, χρησιμοποιήστε το ίδιο σύμβολο:

ls -l /root/ 2>>ls-error.log

Ανακατευθύνετε την τυπική έξοδο και τα σφάλματα σε ένα αρχείο

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

ls -l /root/ >ls-error.log 2>&1

Αρχικά, η έξοδος της εντολής ls θα σταλεί στο αρχείο ls-error.log χρησιμοποιώντας τον πρώτο χαρακτήρα ανακατεύθυνσης. Περαιτέρω όλα τα σφάλματα θα σταλούν στο ίδιο αρχείο. Η δεύτερη μέθοδος είναι πιο εύκολη:

ls -l /root/ &> ls-error.log

Μπορείτε επίσης να χρησιμοποιήσετε το append αντί για την αντικατάσταση:

ls -l /root/ &>> ls-error.log

τυπική είσοδος από το αρχείο

Τα περισσότερα προγράμματα, εκτός από τις υπηρεσίες, λαμβάνουν δεδομένα για την εργασία τους μέσω τυπικής εισαγωγής. Από προεπιλογή, η τυπική είσοδος αναμένει είσοδο από το πληκτρολόγιο. Αλλά μπορείτε να αναγκάσετε το πρόγραμμα να διαβάσει δεδομένα από ένα αρχείο με τη δήλωση "<" :

Γάτα

Μπορείτε επίσης να ανακατευθύνετε αμέσως την έξοδο σε ένα αρχείο. Για παράδειγμα, ας αναδιατάξουμε τη λίστα:

είδος ταξινόμηση εξόδου

Έτσι, ανακατευθύνουμε την έξοδο εισόδου του linux σε μία εντολή.

Χρήση σηράγγων

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

ls -lt | κεφάλι -n 5

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

echo test/tmp/ | xargs -n 1 cp -v testfile.sh

Εδώ, η επιλογή -n 1 καθορίζει ότι μόνο μία παράμετρος θα πρέπει να αντικατασταθεί για μία εντολή και η επιλογή -v στο cp σάς επιτρέπει να εκτυπώνετε λεπτομερείς πληροφορίες σχετικά με τις κινήσεις. Μια άλλη εντολή που είναι χρήσιμη σε τέτοιες περιπτώσεις είναι το tee. Διαβάζει δεδομένα από τυπική είσοδο και γράφει σε τυπική έξοδο ή αρχεία. Για παράδειγμα:

echo "Tee test" | αρχείο tee1

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

συμπεράσματα

Σε αυτό το άρθρο, καλύψαμε τα βασικά της ανακατεύθυνσης ροής I/O Linux. Τώρα ξέρετε πώς να ανακατευθύνετε την έξοδο σε ένα αρχείο linux ή την έξοδο από ένα αρχείο. Είναι πολύ απλό και βολικό. Εάν έχετε οποιεσδήποτε ερωτήσεις, ρωτήστε στα σχόλια!

Ενώ κανονικά, όπως αναφέρθηκε, το πρόγραμμα I/O συνδέεται με τυπικές ροές, υπάρχουν ειδικές εγκαταστάσεις στο κέλυφος για την ανακατεύθυνση I/O.

5.5.1 Χειριστές >,< и >>

Τα σύμβολα " χρησιμοποιούνται για να υποδείξουν μια ανακατεύθυνση. > ", "< " Και " >> ". Η πιο συνηθισμένη χρήση είναι η ανακατεύθυνση της εξόδου μιας εντολής σε ένα αρχείο. Ακολουθεί ένα σχετικό παράδειγμα:

$ ls -l > /home/jim/dir.txt

Αυτή η εντολή θα αποθηκεύσει μια λίστα αρχείων και υποκαταλόγων του καταλόγου που ήταν ενημερωμένος τη στιγμή που εκτελέστηκε η εντολή στο αρχείο /home/jim/dir.txt ls; Ταυτόχρονα, εάν το καθορισμένο αρχείο δεν υπήρχε, θα δημιουργηθεί. αν υπήρχε, θα αντικατασταθεί. εάν θέλετε η έξοδος της εντολής να προσαρτηθεί στο τέλος ενός υπάρχοντος αρχείου, τότε αντί για το σύμβολο > χρήση >> . Σε αυτή την περίπτωση, η παρουσία διαστημάτων πριν ή μετά από χαρακτήρες > ή >> είναι ασήμαντο και είναι μόνο για τη διευκόλυνση του χρήστη.

Μπορείτε να κατευθύνετε την έξοδο όχι μόνο σε ένα αρχείο, αλλά και στην είσοδο μιας άλλης εντολής ή σε μια συσκευή (όπως ένας εκτυπωτής). Για παράδειγμα, για να μετρήσετε τον αριθμό των λέξεων στο αρχείο /home/jim/report.txt, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:

$ cat /home/jim/report.txt > wc -w

και για να εκτυπώσετε το αρχείο - την εντολή:

$ cat /home/jim/report.txt > lpr

Όπως μπορείτε να δείτε, ο χειριστής > χρησιμεύει για την ανακατεύθυνση της ροής εξόδου. Σε σχέση με τη ροή εισόδου, μια παρόμοια λειτουργία εκτελείται από τον χειριστή < . Το παραπάνω παράδειγμα εντολής για την καταμέτρηση του αριθμού των λέξεων σε ένα συγκεκριμένο αρχείο μπορεί να ξαναγραφεί ως εξής (σημειώστε την απουσία της εντολής Γάτα):

$ wc -w< /home/jim/report.txt

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

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

$ cat > αρχείο

$cat>αρχείο

$ >filecat

$ > αρχείο cat

Ωστόσο, από μόνος του (χωρίς καμία εντολή για την οποία ορίζονται τυπικές ροές) ο χαρακτήρας ανακατεύθυνσης δεν μπορεί να χρησιμοποιηθεί, επομένως δεν μπορείτε, για παράδειγμα, πληκτρολογώντας στη γραμμή εντολών

$ file1 > file2

λάβετε ένα αντίγραφο κάποιου αρχείου. Αλλά αυτό δεν μειώνει την αξία αυτού του μηχανισμού, επειδή ορίζονται τυπικές ροές για οποιαδήποτε εντολή. Σε αυτήν την περίπτωση, μπορείτε να ανακατευθύνετε όχι μόνο την τυπική είσοδο και έξοδο, αλλά και άλλες ροές. Για να το κάνετε αυτό, πρέπει να καθορίσετε τον αριθμό της ροής που θα ανακατευθυνθεί πριν από το σύμβολο ανακατεύθυνσης. Η τυπική είσοδος stdin είναι ο αριθμός 0, η τυπική έξοδος stdout είναι ο αριθμός 1, η τυπική ροή μηνύματος σφάλματος stderr είναι ο αριθμός 2. Δηλαδή, η πλήρης μορφή της εντολής ανακατεύθυνσης είναι (θυμηθείτε ότι τα κενά δίπλα στο > δεν απαιτούνται):

εντολή N > M

Οπου ΝΚαι Μ— αριθμοί τυπικών ροών (0,1,2) ή ονομάτων αρχείων. Η χρήση συμβόλων σε ορισμένες περιπτώσεις < , > Και >> χωρίς τον καθορισμό του αριθμού καναλιού ή του ονόματος αρχείου είναι δυνατή μόνο επειδή αντί για τον αριθμό που λείπει, το 1 αντικαθίσταται από προεπιλογή, δηλαδή η τυπική έξοδος. Ναι, ο χειριστής > χωρίς αριθμό ερμηνεύεται ως 1 > .

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

εντολή N > &M

Αυτή η εντολή σημαίνει ότι η έξοδος του καναλιού με τον αριθμό Ναποστέλλεται και στην τυπική έξοδο και αντιγράφεται στο σωλήνα με τον αριθμό Μ. Για παράδειγμα, για να αντιγραφούν μηνύματα σφάλματος στην τυπική έξοδο, πρέπει να εκδώσετε την εντολή 2>&1, ενώ 1>&2 αντιγράφει το stdout στο stderr. Αυτή η δυνατότητα είναι ιδιαίτερα χρήσιμη κατά την ανακατεύθυνση της εξόδου σε ένα αρχείο, καθώς και οι δύο βλέπουμε τα μηνύματα στην οθόνη και τα αποθηκεύουμε σε ένα αρχείο.

5.5.2 Χειριστής |

Μια ειδική παραλλαγή της ανακατεύθυνσης εξόδου είναι η οργάνωση ενός καναλιού προγράμματος (μερικές φορές ονομάζεται αγωγός ή αγωγός). Για να γίνει αυτό, δύο ή περισσότερες εντολές, έτσι ώστε η έξοδος της προηγούμενης να χρησιμεύει ως είσοδος για την επόμενη, συνδέονται (ή διαχωρίζονται, αν σας αρέσει καλύτερα) με έναν χαρακτήρα σωλήνα - "|". Σε αυτήν την περίπτωση, η τυπική ροή εξόδου της εντολής βρίσκεται στα αριστερά του συμβόλου | , κατευθύνεται στην τυπική είσοδο του προγράμματος που βρίσκεται στα δεξιά του χαρακτήρα | . Για παράδειγμα:

$ cat myfile | grep Linux | wc -l

Αυτή η γραμμή σημαίνει ότι η έξοδος της εντολής Γάτα, δηλαδή το κείμενο από το αρχείο myfile, θα κατευθυνθεί στην είσοδο της εντολής grep, το οποίο θα επιλέξει μόνο γραμμές που περιέχουν τη λέξη "Linux". έξοδος εντολής grepθα δρομολογηθεί με τη σειρά του στην είσοδο της εντολής wc -l, το οποίο θα μετρήσει τον αριθμό τέτοιων σειρών.

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

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

Η κατάσταση εξόδου (ο boolean που επιστρέφεται όταν τερματίζεται το πρόγραμμα) από το σωλήνα είναι η ίδια με την κατάσταση εξόδου που επιστρέφεται από την τελευταία εντολή στο pipeline. Πριν από την πρώτη εντολή του pipeline, μπορείτε να βάλετε το σύμβολο "!", τότε η κατάσταση εξόδου από το pipeline θα είναι μια λογική άρνηση της κατάστασης εξόδου από την τελευταία εντολή. Το κέλυφος περιμένει να ολοκληρωθούν όλες οι εντολές διοχέτευσης πριν ορίσει την τιμή επιστροφής.

5.5.3 Φίλτρα

Το τελευταίο από τα παραπάνω παραδείγματα (με την εντολή grep) μπορεί να χρησιμοποιηθεί για την απεικόνιση μιας άλλης σημαντικής έννοιας, δηλαδή του προγράμματος φίλτρου. Τα φίλτρα είναι εντολές (ή προγράμματα) που δέχονται μια ροή δεδομένων εισόδου, εκτελούν ορισμένους μετασχηματισμούς σε αυτήν και εξάγουν το αποτέλεσμα σε τυπική έξοδο (από όπου μπορεί να ανακατευθυνθεί κάπου αλλού κατόπιν αιτήματος του χρήστη). Οι εντολές φίλτρου περιλαμβάνουν τις εντολές που αναφέρθηκαν ήδη παραπάνω. γάτα, περισσότερο, λιγότερο, wc, cmp, διαφ, καθώς και τις παρακάτω εντολές.

Πίνακας 5.1.Εντολές φίλτρου

Ομάδα

Σύντομη περιγραφή

grep, fgrep, egrep

Αναζητήστε το αρχείο εισόδου ή την τυπική είσοδο για γραμμές που περιέχουν το καθορισμένο μοτίβο και γράψτε τις στην τυπική έξοδο

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

comm

Συγκρίνει δύο αρχεία γραμμή προς γραμμή και εκτυπώνει 3 στήλες στο stdout: η μία περιέχει γραμμές που εμφανίζονται μόνο σε 1 αρχείο, η δεύτερη περιέχει γραμμές που εμφανίζονται μόνο στο 2ο αρχείο: και η τρίτη περιέχει γραμμές που εμφανίζονται και στα δύο αρχεία

Μορφοποιεί ένα αρχείο κειμένου ή τα περιεχόμενα της τυπικής εισαγωγής για εκτύπωση.

sed

Επεξεργαστής γραμμής που χρησιμοποιείται για την εκτέλεση ορισμένων μετασχηματισμών στη ροή δεδομένων εισόδου (που λαμβάνονται από αρχείο ή τυπική είσοδο)

Το ειδικό φίλτρο είναι η εντολή στόχος, το οποίο "διπλασιάζει" τη ροή εισόδου, αφενός κατευθύνοντάς την σε τυπική έξοδο και αφετέρου - σε ένα αρχείο (το όνομα του οποίου πρέπει να καθορίσετε). Είναι εύκολο να διαπιστωθεί ότι στη δράση της η εντολή στόχοςπαρόμοια με τον τελεστή ανακατεύθυνσης 1>&αρχείο.

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

Πολλά θα μπορούσαν να ειπωθούν για την ανακατεύθυνση και τα φίλτρα. Αλλά αυτό το υλικό βρίσκεται στα περισσότερα βιβλία UNIX και Linux, όπως το Petersen [A1.4] και το Kelly-Bootle [A1.8] . Επομένως, περιοριζόμαστε σε αυτά που ειπώθηκαν και προχωράμε στην εξέταση του λεγόμενου περιβάλλοντος ή περιβάλλοντος που δημιουργείται από το κέλυφος.

V. Kostromin (kos at rus-linux dot net) - 5,5. Ανακατεύθυνση I/O, κανάλια και φίλτρα

Σύστημα I/O σε LINUX.

Στο σύστημα I/O, όλες οι εξωτερικές συσκευές αντιμετωπίζονται ως αρχεία στα οποία επιτρέπονται οι κανονικές λειτουργίες αρχείων. Φυσικά, υπάρχουν και προγράμματα οδήγησης συσκευών, αλλά η διεπαφή με αυτά έχει σχεδιαστεί για τον χρήστη ως κλήση σε ένα ειδικό αρχείο. Τα ειδικά αρχεία είναι ένα μέσο ενοποίησης του συστήματος I/O.

Κάθε συνδεδεμένη συσκευή (τερματικό, δίσκοι, εκτυπωτής κ.λπ.) έχει τουλάχιστον ένα ειδικό αρχείο που σχετίζεται με αυτήν. Τα περισσότερα από αυτά τα ειδικά αρχεία αποθηκεύονται στον κατάλογο /dev:
$ cd /dev
$ ls -l
πίνακας ελέγχου συστήματος της σόλας
dsk κομμάτια στο δίσκο
fd0 δισκέτα 1
mem μνήμη
εκτυπωτής lp
lp0 παράλληλη θύρα 0
. . .
τμήμα ρίζας στο δίσκο για το ριζικό σύστημα αρχείων
swap swap τμήμα
εναλλακτικό όνομα κονσόλας syscon
systty είναι ένα άλλο όνομα για την κονσόλα συστήματος
κατάλογος όρων για τερματικά
ttyS0 σειριακή θύρα 0 (COM1)
. . .

Όταν ένα πρόγραμμα γράφει σε ένα τέτοιο ειδικό αρχείο, το σύστημα του λειτουργικού συστήματος τα παρεμποδίζει και τα στέλνει σε μια συσκευή, όπως έναν εκτυπωτή). Κατά την ανάγνωση δεδομένων από αυτόν τον τύπο αρχείου, στην πραγματικότητα λαμβάνονται από μια συσκευή όπως ένας δίσκος. Το πρόγραμμα δεν πρέπει να λαμβάνει υπόψη τις ιδιαιτερότητες της συσκευής I/O. Για το σκοπό αυτό εξυπηρετούν ειδικά αρχεία (drivers), τα οποία λειτουργούν ως διεπαφή μεταξύ των στοιχείων του πυρήνα του ΛΣ και των προγραμμάτων εφαρμογών γενικής χρήσης.

Το σύστημα εντοπίζει τη διαφορά μεταξύ ενός κανονικού αρχείου και ενός ειδικού αρχείου μόνο αφού έχει αναλύσει τον αντίστοιχο inode που αναφέρεται από την καταχώρηση καταλόγου.
Το inode του ειδικού αρχείου περιέχει πληροφορίες σχετικά με την κατηγορία, τον τύπο και τον αριθμό της συσκευής. Η κλάση συσκευών ορίζει τόσο τις συσκευές χαρακτήρα προς χαρακτήρα όσο και μπλοκ προς μπλοκ. Ένα παράδειγμα συσκευής με ανταλλαγή χαρακτήρα προς χαρακτήρα είναι ένα πληκτρολόγιο. Τα ειδικά αρχεία που παρέχουν επικοινωνία με συσκευές αυτού του τύπου ονομάζονται byte-oriented. Οι συσκευές μπλοκ χαρακτηρίζονται από την ανταλλαγή μεγάλων μπλοκ πληροφοριών, γεγονός που επιταχύνει την ανταλλαγή και την καθιστά πιο αποτελεσματική. Όλες οι συσκευές δίσκου υποστηρίζουν την ανταλλαγή μπλοκ και τα ειδικά αρχεία που τις εξυπηρετούν ονομάζονται προσανατολισμένα σε μπλοκ. Τα ειδικά αρχεία δεν περιέχουν πληροφορίες χαρακτήρων, επομένως το μήκος τους δεν αναφέρεται στη λίστα καταλόγου.

Ο τύπος και ο αριθμός της συσκευής είναι επίσης τα κύρια χαρακτηριστικά των ειδικών αρχείων (ο κύριος και ο δευτερεύων αριθμός της αντίστοιχης συσκευής τοποθετούνται στο πεδίο μήκους). Το πρώτο από αυτά καθορίζει τον τύπο της συσκευής, το δεύτερο - το προσδιορίζει μεταξύ παρόμοιων συσκευών. Το λειτουργικό σύστημα μπορεί να εξυπηρετήσει ταυτόχρονα πολλές δεκάδες, ακόμη και εκατοντάδες τερματικά. Κάθε ένα από αυτά πρέπει να έχει το δικό του ειδικό αρχείο, άρα έχοντας ένα κύριο και επιπλέον αριθμοίσας επιτρέπει να δημιουργήσετε την απαιτούμενη αντιστοιχία μεταξύ της συσκευής και ενός τέτοιου αρχείου.

Μπορείτε να δημιουργήσετε πολλά συστήματα αρχείων σε έναν μόνο δίσκο. Ορισμένα συστήματα χρησιμοποιούν ένα σύστημα αρχείων ανά δίσκο, ενώ άλλα χρησιμοποιούν πολλά. Ένα νέο σύστημα αρχείων μπορεί να δημιουργηθεί χρησιμοποιώντας την εντολή mkfs (make file system). Για παράδειγμα, η έκφραση # /sbin/mkfs /dev/dsk/fl1 512 σημαίνει: δημιουργία σε δισκέτα b: μέγεθος 512 μπλοκ.

Προαιρετικά, μπορείτε να ορίσετε το μέγεθος του συστήματος αρχείων σε μπλοκ και τον αριθμό των i-nodes (δηλ. τον μέγιστο αριθμό αρχείων που μπορούν να αποθηκευτούν στο σύστημα αρχείων). Από προεπιλογή, ο αριθμός των i-nodes είναι ίσος με τον αριθμό των μπλοκ διαιρούμενο με τέσσερα. Ο μέγιστος αριθμός i-nodes σε ένα σύστημα αρχείων είναι 65.000. Εάν για κάποιο λόγο χρειάζεστε περισσότερους από 65.000 i-nodes στο δίσκο, πρέπει να δημιουργήσετε δύο ή περισσότερους συστήματα αρχείωνσε αυτόν τον δίσκο.

Οποιοδήποτε σύστημα αρχείων μπορεί να προσαρτηθεί (προσαρτηθεί) σε ένα κοινό δέντρο καταλόγου, σε οποιοδήποτε σημείο του. Για παράδειγμα, ο κατάλογος / είναι ο ριζικός κατάλογος του συστήματος, επιπλέον, είναι η βάση του συστήματος αρχείων, το οποίο είναι πάντα προσαρτημένο. Ο κατάλογος /usr1 βρίσκεται στον κατάλογο /, αλλά σε αυτήν την περίπτωση είναι ένα ξεχωριστό σύστημα αρχείων από το ριζικό σύστημα αρχείων, καθώς όλα τα αρχεία σε αυτόν βρίσκονται σε ξεχωριστό μέρος του δίσκου ή ακόμα και σε ξεχωριστό δίσκο. Το σύστημα αρχείων /usr1 είναι ένα προσαρτημένο σύστημα αρχείων - με ρίζες στο σημείο όπου υπάρχει ο κατάλογος /usr1 στη συνολική ιεραρχία (Εικόνες 1 και 2).

Ρύζι. 1. Σύστημα αρχείων πριν
προσάρτηση /dev/dsk/os1

Ρύζι. 2. Σύστημα αρχείων μετά
προσαρτήστε το /dev/dsk/os1 ως /usr/

Η εντολή /sbin/mount χρησιμοποιείται για την προσάρτηση ενός συστήματος αρχείων. Αυτή η εντολή επιτρέπει στο δεδομένο σύστημα αρχείων να τοποθετηθεί οπουδήποτε στην υπάρχουσα δομή καταλόγου:
Το #/sbin/mount/dev/dsk/osl/usr1 προσαρτά το /dev/dsk/osl στο /usr1
#/sbin/mount/dev/dsk/flt/a προσαρτά το /dev/dsk/flt στο /a

Εάν θέλετε να προσαρτήσετε ένα σύστημα αρχείων σε δίσκους που πρέπει να προστατεύονται από εγγραφή για να γίνει το σύστημα μόνο για ανάγνωση, πρέπει να προσθέσετε την επιλογή -r στην εντολή /sbin/mount.
Ο κατάλογος στον οποίο είναι προσαρτημένο το προσαρτημένο σύστημα αρχείων πρέπει να είναι επί του παρόντος κενός, καθώς τα περιεχόμενά του δεν θα είναι προσβάσιμα κατά την προσάρτηση του συστήματος αρχείων.

Για να λάβετε πληροφορίες σχετικά με συστήματα αρχείων που είναι προσαρτημένα, για παράδειγμα, σε ένα σύστημα LINUX, μπορείτε να χρησιμοποιήσετε την εντολή /sbin/mount χωρίς ορίσματα (Εικόνα 3).

Ρύζι. 3.

Αυτή η εντολή εκτυπώνει τον κατάλογο στον οποίο προσαρτήθηκε το σύστημα αρχείων (π.χ. usrl), τη συσκευή /dev στην οποία βρίσκεται και την ώρα και την ημερομηνία προσάρτησης. Η εντολή /sbin/umount χρησιμοποιείται για την αποπροσάρτηση ενός συστήματος αρχείων, το οποίο είναι το αντίθετο από την εντολή mount. Απελευθερώνει το σύστημα αρχείων και το αφαιρεί από ολόκληρη τη δομή του καταλόγου του, έτσι ώστε όλα τα αρχεία και οι κατάλογοι του να είναι απρόσιτα:
# /sbin/umount /b
# /sbin/umount /dev/dsk/0s2

Δεν είναι δυνατή η αποπροσάρτηση του ριζικού συστήματος αρχείων. Επίσης, η εντολή umount θα αποτύχει εάν κάποιος χρησιμοποιεί ένα αρχείο από το σύστημα αρχείων που αποπροσαρτάται (αυτό θα μπορούσε να είναι τόσο απλό όσο ο χρήστης βρίσκεται σε έναν από τους καταλόγους του συστήματος αρχείων που αποπροσαρτάται).

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

Για φυσικές συσκευές, το LINUX διαθέτει τους καταλόγους dsk και rdsk, οι οποίοι περιέχουν αρχεία που αντιστοιχούν σε συσκευές δίσκου. Συνήθως τα ονόματα αρχείων σε αυτούς τους καταλόγους είναι τα ίδια και η μόνη διαφορά μεταξύ τους είναι ότι ο κατάλογος rdsk περιέχει συσκευές δίσκου με ειδική πρόσβαση (ακατέργαστη), τις οποίες χρησιμοποιούν ορισμένες συσκευές συστήματος για ταχύτερη πρόσβαση στο δίσκο. Ένας τυπικός κατάλογος dsk περιέχει τις ακόλουθες συσκευές:
$ 1s /dev/dsk
0s0 1s0 c0t0d0s0 c0tld0s0 f0 f05q f13dt fld8d
0sl 1sl c0t0d0sl c0tld0sl f03d f05qt f13h fld8dt
0s2 1s2 c0t0d0s2 c0tld0s2 f03dt f0d8d f13ht fld8t
. . .
$

Σε ένα σύστημα LINUX, οι συσκευές δίσκων χωρίζονται λογικά σε διαμερίσματα, παρόμοια με τα διαμερίσματα που ορίζονται στον πίνακα κατατμήσεων του MasterBoot MS DOS. Τα αρχεία 0s1, 0s2, 0s3 κ.λπ. αντιστοιχούν στις ενότητες ένα, δύο, τρία κ.λπ. του αριθμού δίσκου 0. Τα αρχεία 1s0, 1sl, 1s2 κ.λπ. αντιστοιχούν στις ενότητες ένα, δύο, τρία κ.λπ. αριθμός δίσκου 1. Εάν το σύστημα έχει περισσότερους δίσκους, τα διαμερίσματα θα αριθμούνται ns0, nsl, κ.λπ. για κάθε αριθμό δίσκου n.

Συστήματα με πολλές μονάδες δίσκου χρησιμοποιούν το ακόλουθο σύστημα αρίθμησης:
με ελεγκτή d τμήμα δίσκου

όπου ελεγκτής - αριθμός ελεγκτή δίσκου? δίσκος - αριθμός δίσκου? ενότητα - αριθμός ενότητας δίσκου.
Έτσι, το 0s0 είναι συνήθως ισοδύναμο με το c0t0d0s0 και το 0sl είναι το c0t0d0sl και τα ονόματα διαμερισμάτων τριών χαρακτήρων είναι απλώς συντομογραφία του ελεγκτή δίσκου με αριθμό 0.

Τα αρχεία των οποίων τα ονόματα αρχίζουν με f ορίζουν διαφορετικά είδη δισκέτας. Ο κατάλογος rmt περιέχει αρχεία σε συσκευές ταινίας:
$ 1s /dev/rmt
c0s0 cls0 c3s0 ταινία ntapel ταινία ταινία

Τα αρχεία c0s0, cls0, c2s0 και c3s0 ορίζουν τέσσερις συσκευές αποθήκευσης κασετών. Η ταινία και η ταινία αρχείων ορίζουν συσκευές μαγνητικής αποθήκευσης δύο τροχών. Τα αρχεία των οποίων τα ονόματα ξεκινούν με n αναφέρονται στις ίδιες συσκευές, μόνο που η ταινία δεν επανατυλίγεται μετά τη χρήση, ενώ η χρήση άλλων αρχείων προκαλεί την επανατύλιξη της ταινίας όταν τελειώσει το πρόγραμμα που τη χρησιμοποιεί.

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

Το σύστημα αρχείων extX χρησιμοποιεί προσωρινή αποθήκευση δεδομένων για λειτουργίες I/O. Κατά την ανάγνωση ενός μπλοκ πληροφοριών, ο πυρήνας εκδίδει ένα αίτημα λειτουργίας I/O σε πολλά γειτονικά μπλοκ. Τέτοιες λειτουργίες επιταχύνουν σημαντικά την ανάκτηση δεδομένων κατά τη διαδοχική ανάγνωση αρχείων. Κατά την εγγραφή δεδομένων σε ένα αρχείο, το σύστημα αρχείων extX, γράφοντας ένα νέο μπλοκ, τοποθετεί εκ των προτέρων έως και 8 γειτονικά μπλοκ δίπλα-δίπλα. Αυτή η μέθοδος σάς επιτρέπει να τοποθετείτε αρχεία σε συνεχόμενα μπλοκ, γεγονός που επιταχύνει την ανάγνωσή τους και καθιστά δυνατή την επίτευξη υψηλών επιδόσεων του συστήματος.

mob_info