Τι είναι ένα Ειδικό Αρχείο;

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

Ο σκοπός ενός ειδικού αρχείου είναι να αποκαλύψει τη συσκευή ως αρχείο στο σύστημα αρχείων. Ένα ειδικό αρχείο παρέχει μια καθολική διασύνδεση για συσκευές υλικού (και εικονικές συσκευές που δημιουργούνται και χρησιμοποιούνται από τον πυρήνα), επειδή τα εργαλεία για είσοδο / εξαγωγή αρχείων μπορούν να χρησιμοποιηθούν για πρόσβαση στη συσκευή.

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

Στο Linux, υπάρχουν δύο τύποι ειδικών αρχείων: αποκλεισμός ειδικών αρχείων και ειδικών αρχείων χαρακτήρων .

Ένα μπλοκ ειδικό αρχείο ενεργεί ως άμεση διεπαφή σε μια συσκευή μπλοκ. Μια συσκευή μπλοκ είναι οποιαδήποτε συσκευή που εκτελεί δεδομένα I / O σε μονάδες μπλοκ.

Παραδείγματα ειδικών αρχείων μπλοκ:

  • / dev / sd xn - τοποθετημένα διαμερίσματα των φυσικών συσκευών αποθήκευσης. Το γράμμα x αναφέρεται σε μια φυσική συσκευή και ο αριθμός n αναφέρεται σε ένα διαμέρισμα στη συγκεκριμένη συσκευή. Για παράδειγμα, το / dev / sda1 είναι συνήθως το πρώτο διαμέρισμα στην πρώτη φυσική συσκευή αποθήκευσης.
  • / dev / loop n - βρόχου. Πρόκειται για ειδικές συσκευές που επιτρέπουν τη χρήση ενός αρχείου στο σύστημα αρχείων ως συσκευή μπλοκ. Το αρχείο μπορεί να περιέχει ολόκληρο το δικό του σύστημα αρχείων και να έχει πρόσβαση σαν να ήταν ένα τοποθετημένο διαμέρισμα σε μια φυσική συσκευή αποθήκευσης. Για παράδειγμα, ένα αρχείο εικόνας δίσκου ISO μπορεί να τοποθετηθεί ως συσκευή βρόχου.

Αν θέλετε να μάθετε πόσο μεγάλο είναι ένα μπλοκ στο σύστημά σας, εκτελέστε το " blockdev --getbsz device " ως root, π.χ.:

 sudo blockdev --getbsz / dev / sda1 
 4096 

Σε αυτό το παράδειγμα, το μέγεθος του μπλοκ είναι 4096 bytes (4 kibibytes).

Ειδικά αρχεία χαρακτήρων

Ένα ειδικό αρχείο χαρακτήρα είναι παρόμοιο με μια συσκευή μπλοκ, αλλά τα δεδομένα γράφονται ένα χαρακτήρα (οκτώ bits, ή ένα byte) κάθε φορά.

Παραδείγματα ειδικών αρχείων χαρακτήρων:

  • / dev / stdin (Τυπική είσοδος.)
  • / dev / stdout (Τυπική έξοδος.)
  • / dev / stderr (τυπικό σφάλμα.)
  • / dev / random (PRNG που μπορεί να καθυστερήσει την επιστροφή μιας τιμής για να αποκτήσει πρόσθετη εντροπία.)
  • / dev / urandom (PRNG που επιστρέφει πάντα μια τιμή αμέσως, ανεξάρτητα από την απαιτούμενη εντροπία.)
  • / dev / null (Η μηδενική συσκευή. Η ανάγνωση από αυτό το αρχείο παίρνει πάντα ένα μηδενικό byte, η γραφή σε αυτό το αρχείο δεν κάνει τίποτα.)

Τύποι αρχείων Linux

Στον πυρήνα του Linux, οι τύποι αρχείων δηλώνονται στο αρχείο κεφαλίδας sys / stat.h. Το όνομα του τύπου, το συμβολικό όνομα και το bitmask για κάθε τύπο αρχείου Linux παρατίθενται παρακάτω.

Πώς μπορώ να πω εάν ένα αρχείο είναι ξεχωριστό;

Δοκιμή για ειδικό τετράγωνο

Στο bash, η εντολή " test -b file " επιστρέφει μια κατάσταση εξόδου 0 αν το αρχείο είναι block special ή 1 εάν το αρχείο είναι άλλου τύπου ή δεν υπάρχει.

 δοκιμή -b / dev / sda1; echo $? # έλεγχος για ειδικό τετράγωνο, κατάσταση εξόδου από την δοκιμή 
 0 
 δοκιμή -b / dev / null; echo $? Τα # ειδικά αρχεία χαρακτήρων δεν είναι ειδικά 
 1 

Δοκιμή ειδικού χαρακτήρα

Για να προσδιορίσετε αν ένα αρχείο είναι χαρακτήρας ειδικό, χρησιμοποιήστε το " test -c file ":

 δοκιμή -c / dev / null; echo $? 
 0 

Χρησιμοποιώντας stat

Μπορείτε επίσης να ελέγξετε τον τύπο του αρχείου με το stat :

 stat / dev / sda1 
 Αρχείο: / dev / sda1 Μέγεθος: 0 Μπλοκ: 0 IO Αποκλεισμός: 4096 μπλοκ ειδικό αρχείο Συσκευή: 6h / 6d Inode: 7998 Σύνδεσμοι: 1 Τύπος συσκευής: 8, 1 Πρόσβαση: (0660 / brw-rw ----) (0 / root) Gid: (6 / disk) Πρόσβαση: 2018-07-08 06: 41: 25.540000000 -0400 Τροποποίηση: 2018-07-08 06: 41: 25.540000000 -0400 Αλλαγή: 2018-07-08 06: 41: 25.540000000 -0400 Γέννηση: - 
 stat / dev / τυχαία 
 Αρχείο: / dev / random Μέγεθος: 0 Μπλοκ: 0 IO Αποκλεισμός: 4096 χαρακτήρες ειδικό αρχείο Συσκευή: 6h / 6d Inode: 6518 Σύνδεσμοι: 1 Τύπος συσκευής: 1, 8 Πρόσβαση: (0666 / crw-rw-rw-) (0 / root) Gid: (0 / root) Πρόσβαση: 2018-07-08 06: 41: 19.676000000 -0400 Τροποποίηση: 2018-07-08 06: 41: 19.676000000 -0400 Αλλαγή: 2018-07-08 06:41 : 19.676000000 -0400 Γέννηση: - 

Inode, Όροι λειτουργικού συστήματος, Τυπική είσοδος (stdin), Τυπική έξοδος (stdout)