Linux Professional Institute Learning Logo.
Mετάβαση στο κύριο περιεχόμενο
  • Αρχική
    • Διαθέσιμοι Πόροι
    • Μαθησιακά Υλικά LPI
    • Γίνε Συνεργάτης
    • Συνεργάτες Εκδόσεων
    • Γίνε Συνεργάτης Εκδόσεων
    • Σχετικά
    • FAQ
    • Συνεργάτες
    • Roadmap
    • Επικοινωνία
  • LPI.org
4.3 Μάθημα 1
Θέμα 1: Η κοινότητα Linux και μια καριέρα στον Ανοιχτό Κώδικα
1.1 Εξέλιξη του Linux και Δημοφιλή Λειτουργικά Συστήματα
  • 1.1 Μάθημα 1
1.2 Κύριες Εφαρμογές Ανοιχτού Κώδικα
  • 1.2 Μάθημα 1
1.3 Λογισμικό Ανοιχτού Κώδικα και Αδειοδότηση
  • 1.3 Μάθημα 1
1.4 Δεξιότητες ICT και Εργασία στο Linux
  • 1.4 Μάθημα 1
Θέμα 2: Βρίσκοντας το Δρόμο σας σε ένα Σύστημα Linux
2.1 Βασικά Στοιχεία Γραμμής Εντολών
  • 2.1 Μάθημα 1
  • 2.1 Μάθημα 2
2.2 Χρήση της Γραμμής Εντολών για Λήψη Βοήθειας
  • 2.2 Μάθημα 1
2.3 Χρήση Καταλόγων και Παράθεση Αρχείων
  • 2.3 Μάθημα 1
  • 2.3 Μάθημα 2
2.4 Δημιουργία, Μετακίνηση και Διαγραφή Αρχείων
  • 2.4 Μάθημα 1
Θέμα 3: Η Δύναμη της Γραμμής Εντολών
3.1 Αρχειοθέτηση Αρχείων στη Γραμμή Εντολών
  • 3.1 Μάθημα 1
3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία
  • 3.2 Μάθημα 1
  • 3.2 Μάθημα 2
3.3 Μετατροπή Εντολών σε Σενάριο
  • 3.3 Μάθημα 1
  • 3.3 Μάθημα 2
Θέμα 4: Το Λειτουργικό Σύστημα Linux
4.1 Επιλογή Λειτουργικού Συστήματος
  • 4.1 Μάθημα 1
4.2 Κατανόηση του Υλικού του Υπολογιστή
  • 4.2 Μάθημα 1
4.3 Πού Αποθηκεύονται τα Δεδομένα
  • 4.3 Μάθημα 1
  • 4.3 Μάθημα 2
4.4 Ο Υπολογιστής σας στο Δίκτυο
  • 4.4 Μάθημα 1
Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών
  • 5.1 Μάθημα 1
5.2 Δημιουργία Χρηστών και Ομάδων
  • 5.2 Μάθημα 1
5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων
  • 5.3 Μάθημα 1
5.4 Ειδικοί Κατάλογοι και Αρχεία
  • 5.4 Μάθημα 1
How to get certified
  1. Θέμα 4: Το Λειτουργικό Σύστημα Linux
  2. 4.3 Πού Αποθηκεύονται τα Δεδομένα
  3. 4.3 Μάθημα 1

4.3 Μάθημα 1

Πιστοποιητικό:

Linux Essentials

Έκδοση:

1.6

Θέμα:

4 Το Λειτουργικό Σύστημα Linux

Σκοπός:

4.3 Πού Αποθηκεύονται τα Δεδομένα

Μάθημα:

1 απο 2

Εισαγωγή

Για ένα λειτουργικό σύστημα όλα θεωρούνται δεδομένα. Για το Linux, όλα θεωρούνται αρχείο: προγράμματα, κανονικά αρχεία, κατάλογοι, συσκευές block (σκληροί δίσκοι κ.λ.π.), συσκευές χαρακτήρων (κονσόλες κ.λ.π.), processes πυρήνα, sockets, partitions, σύνδεσμοι κ.λ.π. Η δομή καταλόγου Linux , ξεκινώντας από το root /, είναι μια συλλογή αρχείων που περιέχει δεδομένα. Το γεγονός ότι τα πάντα είναι ένα αρχείο είναι ένα ισχυρό χαρακτηριστικό του Linux καθώς επιτρέπει τις μικροδιορθώσεις σχεδόν σε κάθε μεμονωμένη πτυχή του συστήματος.

Σε αυτό το μάθημα θα συζητήσουμε τις διαφορετικές τοποθεσίες στις οποίες αποθηκεύονται σημαντικά δεδομένα όπως καθορίζεται από το Linux Filesystem Hierarchy Standard (FHS). Μερικές από αυτές τις τοποθεσίες είναι πραγματικοί κατάλογοι που αποθηκεύουν δεδομένα μόνιμα σε δίσκους, ενώ άλλες είναι ψευδοσυστήματα αρχείων φορτωμένα στη μνήμη που μας δίνουν πρόσβαση σε δεδομένα του υποσυστήματος του πυρήνα, όπως εκτελούμενα processes, χρήση μνήμης, διαμόρφωση υλικού και ούτω καθεξής. Τα δεδομένα που αποθηκεύονται σε αυτούς τους εικονικούς καταλόγους χρησιμοποιούνται από έναν αριθμό εντολών που μας επιτρέπουν να τα παρακολουθούμε και να τα χειριζόμαστε.

Προγράμματα και η Παραμετροποίησή τους

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

Πού Αποθηκεύονται τα Δυαδικά Αρχεία

Όπως κάθε άλλο αρχείο, τα εκτελέσιμα αρχεία ζουν σε καταλόγους που κρέμονται τελικά από το /. Πιο συγκεκριμένα, τα προγράμματα κατανέμονται σε μια δομή τριών επιπέδων: το πρώτο επίπεδο (/) περιλαμβάνει προγράμματα που μπορεί να είναι απαραίτητα σε λειτουργία ενός χρήστη [single-user mode], το δεύτερο επίπεδο (/usr) περιέχει τα περισσότερα προγράμματα πολλών χρηστών [multi-user] και το τρίτο επίπεδο (/usr/local) χρησιμοποιείται για την αποθήκευση λογισμικού που δεν παρέχεται από τη διανομή και έχει γίνει compiled τοπικά.

Οι τυπικές τοποθεσίες για προγράμματα περιλαμβάνουν:

/sbin

Περιέχει ουσιώδη δυαδικά αρχεία για τη διαχείριση συστήματος όπως parted ή ip.

/bin

Περιέχει ουσιώδη δυαδικά αρχεία για όλους τους χρήστες όπως ls, mv ή mkdir.

/usr/sbin

Αποθηκεύει δυαδικά αρχεία για διαχείριση συστήματος όπως deluser ή groupadd.

/usr/bin

Περιλαμβάνει τα περισσότερα εκτελέσιμα αρχεία — όπως free, pstree, sudo ή man - που μπορούν να χρησιμοποιηθούν από όλους τους χρήστες.

/usr/local/sbin

Χρησιμοποιείται για την αποθήκευση τοπικά εγκατεστημένων προγραμμάτων για διαχείριση συστήματος που δεν διαχειρίζονται απο τον package manager του συστήματος.

/usr/local/bin

Εξυπηρετεί τον ίδιο σκοπό με το /usr/local/sbin αλλά για προγράμματα για τον τακτικό χρήστη.

Πρόσφατα ορισμένες διανομές άρχισαν να αντικαθιστούν τα /bin και /sbin με symbolic links προς /usr/bin και /usr/sbin αντίστοιχα.

Note

Ο κατάλογος /opt χρησιμοποιείται μερικές φορές για την αποθήκευση προαιρετικών εφαρμογών τρίτων.

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

  • /home/$USER/bin

  • /home/$USER/.local/bin

Tip

Μπορείτε να μάθετε από ποιους καταλόγους μπορείτε να εκτελέσετε δυαδικά αρχεία, αναφέροντας τη μεταβλητή PATH με echo $PATH. Για περισσότερες πληροφορίες σχετικά με το PATH, ανατρέξτε στα μαθήματα σχετικά με τις μεταβλητές και την προσαρμογή shell.

Μπορούμε να βρούμε την τοποθεσία των προγραμμάτων με την εντολή which:

$ which git
/usr/bin/git

Πού Αποθηκεύονται τα Αρχεία Παραμετροποίησης

Ο Κατάλογος /etc

Στις πρώτες μέρες του Unix υπήρχε ένας φάκελος για κάθε τύπο δεδομένων, όπως /bin για δυαδικά αρχεία και /boot για τον πυρήνα(ες). Ωστόσο, το /etc (που σημαίνει et cetera) δημιουργήθηκε ως κατάλογος παντός σκοπού για την αποθήκευση τυχόν αρχείων που δεν ανήκουν στις άλλες κατηγορίες. Τα περισσότερα από αυτά τα αρχεία ήταν αρχεία παραμετροποίησης. Με την πάροδο του χρόνου όλο και περισσότερα αρχεία παραμετροποίησης προστέθηκαν έτσι το /etc έγινε ο κύριος φάκελος για τα αρχεία παραμετροποίησης των προγραμμάτων. Όπως αναφέρθηκε παραπάνω, ένα αρχείο παραμετροποίησης είναι συνήθως ένα τοπικό, απλού κειμένου (σε αντίθεση με το δυαδικό) αρχείο που ελέγχει τη λειτουργία ενός προγράμματος.

Στο /etc μπορούμε να βρούμε διαφορετικά μοτίβα για ονόματα αρχείων παραμετροποίησης:

  • Αρχεία με μια ad hoc επέκταση ή χωρίς καθόλου επέκταση, για παράδειγμα

    group

    Βάση δεδομένων ομάδας συστήματος.

    hostname

    Όνομα του host υπολογιστή.

    hosts

    Λίστα διευθύνσεων IP και οι μεταφράσεις των ονομάτων των host τους.

    passwd

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

    profile

    Αρχείο παραμετροποίησης του Bash για όλο το σύστημα.

    shadow

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

  • Αρχεία αρχικοποίησης που τελειώνουν σε rc:

    bash.bashrc

    Αρχείο παραμετροποίησης .bashrc για διαδραστικά bash shells σε όλο το σύστημα.

    nanorc

    Δείγμα αρχείου αρχικοποίησης για το GNU nano (ένας απλός επεξεργαστής κειμένου που συνήθως αποστέλλεται με οποιαδήποτε διανομή).

  • Αρχεία που τελειώνουν σε .conf:

    resolv.conf

    Αρχείο παραμετροποίησης για το πρόγραμμα μετάφρασης ονομάτων [resolver] — το οποίο παρέχει πρόσβαση στο Internet Domain Name System (DNS).

    sysctl.conf

    Αρχείο παραμετροποίησης για να ορίσετε μεταβλητές συστήματος για τον πυρήνα.

  • Κατάλογοι με το suffix .d:

    Ορισμένα προγράμματα με μοναδικό αρχείο παραμετροποίησης (*.conf ή άλλο) έχουν εξελιχθεί ώστε να έχουν έναν αποκλειστικό κατάλογο *.d που βοηθά στη δημιουργία αρθρωτών, πιο ισχυρών παραμετροποιήσεων. Για παράδειγμα, για να παραμετροποίησετε το logrotate, θα βρείτε το logrotate.conf, αλλά και τους καταλόγους logrotate.d.

    Αυτή η προσέγγιση είναι χρήσιμη σε εκείνες τις περιπτώσεις όπου διαφορετικές εφαρμογές χρειάζονται παραμετροποιήσεις για το ίδιο συγκεκριμένο service. Εάν, για παράδειγμα, ένα πακέτο web server περιέχει μια παραμετροποίηση logrotate, αυτή η ρύθμιση παραμέτρων μπορεί τώρα να τοποθετηθεί σε ένα αποκλειστικό αρχείο στον κατάλογο logrotate.d. Αυτό το αρχείο μπορεί να ενημερωθεί από το πακέτο του web server χωρίς να παρεμβαίνει στην υπόλοιπη παραμετροποίηση του logrotate. Ομοίως, τα πακέτα μπορούν να προσθέσουν συγκεκριμένες εργασίες τοποθετώντας αρχεία στον κατάλογο /etc/cron.d αντί να τροποποιήσουν το /etc/crontab.

    Στο Debian — και στα παράγωγα Debian — μια τέτοια προσέγγιση έχει εφαρμοστεί στη λίστα αξιόπιστων πηγών που διαβάζονται από το εργαλείο διαχείρισης πακέτων apt: εκτός από το κλασικό /etc/apt/sources.list, τώρα βρίσκουμε τον κατάλογο /etc/apt/sources.list.d:

    $ ls /etc/apt/sources*
    /etc/apt/sources.list
    /etc/apt/sources.list.d:
Αρχεία Διαμόρφωσης στο HOME (Dotfiles)

Σε επίπεδο χρήστη, τα προγράμματα αποθηκεύουν τις διαμορφώσεις και τις ρυθμίσεις τους σε κρυφά αρχεία στον κατάλογο αφετηρίας του χρήστη (αντιπροσωπεύεται με ~). Θυμηθείτε, τα κρυφά αρχεία ξεκινούν με μια τελεία (.) — εξ' ου και το όνομά τους: dotfiles.

Μερικά από αυτά τα dotfiles είναι Bash scripts που προσαρμόζουν το session λειτουργίας του shell του χρήστη και καλούνται αμέσως μόλις ο χρήστης συνδεθεί στο σύστημα:

.bash_history

Αποθηκεύει το ιστορικό της γραμμής εντολών.

.bash_logout

Περιλαμβάνει εντολές για εκτέλεση κατά την έξοδο από το shell σύνδεσης.

.bashrc

Το script αρχικοποίησης του Bash για διαδραστικά shells.

.profile

Το script αρχικοποίησης του Bash για shells σύνδεσης.

Note

Ανατρέξτε στο μάθημα “Βασικά Στοιχεία Γραμμής Εντολών” για να μάθετε περισσότερα σχετικά με το Bash και τα αρχεία εκκίνησης του.

Τα αρχεία παραμετροποίησης άλλων προγραμμάτων για συγκεκριμένους χρήστες καλούνται κατά την εκκίνηση των αντίστοιχων προγραμμάτων τους: .gitconfig, .emacs.d, .ssh, κ.λ.π.

Ο Πυρήνας του Linux

Πριν εκτελεστεί οποιαδήποτε process, ο πυρήνας πρέπει να φορτωθεί σε μια προστατευμένη περιοχή της μνήμης. Μετά από αυτό, το process με το PID 1 (τις περισσότερες φορές του systemd στις μέρες μας) ξεκινά την αλυσίδα των processes, δηλαδή ένα process ξεκινάει άλλες και ούτω καθεξής. Μόλις τα processes είναι ενεργά, ο πυρήνας του Linux είναι υπεύθυνος για την κατανομή πόρων σε αυτά (πληκτρολόγιο, ποντίκι, δίσκοι, μνήμη, διεπαφές δικτύου, κ.λ.π.).

Note

Πριν από το systemd, το /sbin/init ήταν πάντα το πρώτο process σε ένα σύστημα Linux ως μέρος του διαχειριστή συστήματος System V Init. Στην πραγματικότητα, εξακολουθείτε να βρίσκετε το /sbin/init αυτήν τη στιγμή αλλά συνδεδεμένο με το /lib/systemd/systemd.

Πού Αποθηκεύονται οι Πυρήνες: /boot

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

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

config-4.9.0-9-amd64

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

initrd.img-4.9.0-9-amd64

Αρχική image δίσκου RAM που βοηθά στη διαδικασία εκκίνησης φορτώνοντας ένα προσωρινό root σύστημα αρχείων στη μνήμη.

System-map-4.9.0-9-amd64

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

vmlinuz-4.9.0-9-amd64

Ο πυρήνας σε μια κατάλληλη αυτο-αποσυμπιεζόμενη, εξοικονόμησης χώρου, συμπιεσμένη μορφή (εξ ου και το z στο vmlinuz· το vm σημαίνει εικονική μνήμη και άρχισε να χρησιμοποιείται όταν ο πυρήνας έλαβε για πρώτη φορά υποστήριξη για εικονική μνήμη).

grub

Κατάλογος διαμόρφωσης για τον φορτωτή εκκίνησης grub2.

Tip

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

Ο Kατάλογος /proc

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

  • Εκτελούμενα processes

  • Παραμετροποίηση πυρήνα

  • Υλικό συστήματος

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

/proc/cpuinfo

Αποθηκεύει πληροφορίες σχετικά με την CPU του συστήματος:

$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 158
model name	: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
stepping	: 10
cpu MHz		: 3696.000
cache size	: 12288 KB
(...)
/proc/cmdline

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

$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
/proc/modules

Εμφανίζει τη λίστα των modules που έχουν φορτωθεί στον πυρήνα:

$ cat /proc/modules
nls_utf8 16384 1 - Live 0xffffffffc0644000
isofs 40960 1 - Live 0xffffffffc0635000
udf 90112 0 - Live 0xffffffffc061e000
crc_itu_t 16384 1 udf, Live 0xffffffffc04be000
fuse 98304 3 - Live 0xffffffffc0605000
vboxsf 45056 0 - Live 0xffffffffc05f9000 (O)
joydev 20480 0 - Live 0xffffffffc056e000
vboxguest 327680 5 vboxsf, Live 0xffffffffc05a8000 (O)
hid_generic 16384 0 - Live 0xffffffffc0569000
(...)

Ο Kατάλογος /proc/sys

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

$ ls /proc/sys
abi  debug  dev  fs  kernel  net  user  vm

Τα περισσότερα από αυτά τα αρχεία λειτουργούν σαν διακόπτης και — επομένως — περιέχουν μόνο μία από τις δύο πιθανές τιμές: 0 ή 1 (“on” ή “off”). Για παράδειγμα:

/proc/sys/net/ipv4/ip_forward

Η τιμή του ενεργοποιεί ή απενεργοποιεί την δυνατότητα το μηχάνημά μας να λειτουργεί ως router (να μπορεί να προωθήσει πακέτα):

$ cat /proc/sys/net/ipv4/ip_forward
0

Υπάρχουν όμως κάποιες εξαιρέσεις:

/proc/sys/kernel/pid_max

Το μέγιστο επιτρεπόμενο PID:

$ cat /proc/sys/kernel/pid_max
32768
Warning

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

Συσκευές Υλικού

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

Ο Kατάλογος /dev

Ο κατάλογος συσκευή [device] /dev περιέχει αρχεία συσκευής (ή nodes) για όλες τις συνδεδεμένες συσκευές υλικού. Αυτά τα αρχεία συσκευών χρησιμοποιούνται ως διεπαφή μεταξύ των συσκευών και των processes που τις χρησιμοποιούν. Κάθε αρχείο συσκευής εμπίπτει σε μία από τις δύο κατηγορίες:

Συσκευές block

Είναι εκείνες στις οποίες τα δεδομένα διαβάζονται και γράφονται σε τμήματα [block] που μπορούν να αντιμετωπιστούν μεμονωμένα. Παραδείγματα περιλαμβάνουν σκληρούς δίσκους (και τα partitions τους, όπως /dev/sda1), μονάδες flash USB, CD, DVD κ.λ.π.

Συσκευές χαρακτήρων

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

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

# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 may 25 17:02 /dev/sda
brw-rw---- 1 root disk 8, 1 may 25 17:02 /dev/sda1
brw-rw---- 1 root disk 8, 2 may 25 17:02 /dev/sda2
(...)

Ή για σειριακά τερματικά (TeleTYpewriter):

# ls -l /dev/tty*
crw-rw-rw- 1 root tty     5,  0 may 25 17:26 /dev/tty
crw--w---- 1 root tty     4,  0 may 25 17:26 /dev/tty0
crw--w---- 1 root tty     4,  1 may 25 17:26 /dev/tty1
(...)

Παρατηρήστε πώς ο πρώτος χαρακτήρας είναι b για συσκευές block και c για συσκευές χαρακτήρων.

Tip

Ο αστερίσκος (*) είναι ένας globbing χαρακτήρας που σημαίνει 0 ή περισσότερους χαρακτήρες. Εξ' ου και η σημασία του στις εντολές ls -l /dev/sd* και ls -l /dev/tty* παραπάνω. Για να μάθετε περισσότερα σχετικά με αυτούς τους ειδικούς χαρακτήρες, ανατρέξτε στο μάθημα για το globbing.

Επιπλέον, το /dev περιλαμβάνει ορισμένα ειδικά αρχεία που είναι αρκετά χρήσιμα για διαφορετικούς σκοπούς προγραμματισμού:

/dev/zero

Παρέχει όσους μηδενικούς χαρακτήρες ζητούνται.

/dev/null

Γνωστό και ώς bit bucket. Απορρίπτει όλες τις πληροφορίες που του αποστέλλονται.

/dev/urandom

Δημιουργεί ψευδοτυχαίους αριθμούς.

Ο Kατάλογος /sys

Το σύστημα αρχείων sys (sysfs) είναι προσαρτημένο στο /sys. Εισήχθη με την άφιξη του πυρήνα 2.6 και σήμαινε μια μεγάλη βελτίωση στο /proc/sys.

Τα processes πρέπει να αλληλεπιδρούν με τις συσκευές στο /dev και έτσι ο πυρήνας χρειάζεται έναν κατάλογο που περιέχει πληροφορίες σχετικά με αυτές τις συσκευές υλικού. Αυτός ο κατάλογος είναι ο /sys και τα δεδομένα του είναι ταξινομημένα σε κατηγορίες. Για παράδειγμα, για να ελέγξετε τη διεύθυνση MAC της κάρτας δικτύου σας (enp0s3), θα πρέπει να κάνετε cat το ακόλουθο αρχείο:

$ cat /sys/class/net/enp0s3/address
08:00:27:02:b2:74

Μνήμη και Τύποι Μνήμης

Βασικά, για να ξεκινήσει να τρέχει ένα πρόγραμμα, πρέπει να φορτωθεί στη μνήμη. Σε γενικές γραμμές, όταν μιλάμε για μνήμη αναφερόμαστε στη Μνήμη Τυχαίας Προσπέλασης [Random Access Memory] (RAM) και — σε σύγκριση με μηχανικούς σκληρούς δίσκους — έχει το πλεονέκτημα ότι είναι πολύ πιο γρήγορη. Στα κατά, το οτι δεν είναι μόνιμη (δηλαδή, μόλις κλείσει ο υπολογιστής, τα δεδομένα εξαφανίζονται).

Παρά τα προαναφερθέντα — όσον αφορά τη μνήμη — μπορούμε να διαφοροποιήσουμε δύο κύριους τύπους σε ένα σύστημα Linux:

Φυσική μνήμη

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

Swap

Γνωστή και ως χώρος swap, είναι το τμήμα της εικονικής μνήμης που ζει στον σκληρό δίσκο και χρησιμοποιείται όταν δεν υπάρχει άλλη διαθέσιμη μνήμη RAM.

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

Το free αναλύει το /proc/meminfo και εμφανίζει την ποσότητα της ελεύθερης και χρησιμοποιούμενης μνήμης στο σύστημα με πολύ σαφή τρόπο:

$ free
              total        used        free      shared  buff/cache   available
Mem:        4050960     1474960     1482260       96900     1093740     2246372
Swap:       4192252           0     4192252

Ας εξηγήσουμε τις διάφορες στήλες:

total

Συνολική ποσότητα εγκατεστημένης φυσικής και swap μνήμης.

used

Ποσότητα φυσικής και swap μνήμης που χρησιμοποιείται αυτήν τη στιγμή.

free

Ποσότητα φυσικής και swap μνήμης που δεν χρησιμοποιείται αυτήν τη στιγμή.

shared

Ποσότητα φυσικής μνήμης που χρησιμοποιείται — κυρίως — από το tmpfs.

buff/cache

Ποσότητα φυσικής μνήμης που χρησιμοποιείται αυτήν τη στιγμή από τα buffer του πυρήνα και το cache σελίδων και slabs.

available

Εκτίμηση του πόση φυσική μνήμη είναι διαθέσιμη για νέα processes.

Από προεπιλογή, το free εμφανίζει τιμές σε kibibyte, αλλά επιτρέπει μια ποικιλία διακοπτών να εμφανίζουν τα αποτελέσματά του σε διαφορετικές μονάδες μέτρησης. Μερικές από αυτές τις επιλογές περιλαμβάνουν:

-b

Bytes.

-m

Mebibytes.

-g

Gibibytes.

-h

Μορφή αναγνώσιμη από τον άνθρωπο.

Το -h διαβάζεται πάντα άνετα:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3,9G        1,4G        1,5G         75M        1,0G        2,2G
Swap:          4,0G          0B        4,0G
Note

Ένα kibibyte (KiB) ισούται με 1.024 byte ενώ ένα kilobyte (KB) ισούται με 1000 byte. Το ίδιο ισχύει αντίστοιχα για mebibyte, gibibyte κ.λ.π.

Καθοδηγούμενες Ασκήσεις

  1. Χρησιμοποιήστε την εντολή which για να βρείτε τη θέση των παρακάτω προγραμμάτων και να συμπληρώσετε τον πίνακα:

    Πρόγραμμα Εντολή which Path προς το Εκτελέσιμο (έξοδος) Ο χρήστης χρειάζεται δικαιώματα root;

    swapon

    kill

    cut

    usermod

    cron

    ps

  2. Πού βρίσκονται τα ακόλουθα αρχεία;

    Αρχείο /etc ~

    .bashrc

    bash.bashrc

    passwd

    .profile

    resolv.conf

    sysctl.conf

  3. Εξηγήστε την σημασία των αριθμητικών στοιχείων για το αρχείο πυρήνα vmlinuz-4.15.0-50-generic που βρίσκονται στο /boot:

    Στοιχείο Αριθμού Σημασία

    4

    15

    0

    50

  4. Ποια εντολή θα χρησιμοποιούσατε για να παραθέσετε όλους τους σκληρούς δίσκους και τα partitions στο /dev;

Ασκήσεις Εξερεύνησης

  1. Τα αρχεία συσκευών για σκληρούς δίσκους αντιπροσωπεύονται με βάση τους ελεγκτές που χρησιμοποιούν — είδαμε το /dev/sd* για μονάδες που χρησιμοποιούν SCSI (Small Computer System Interface) και SATA (Serial Advanced Technology Attachment), αλλά

    • Πώς αντιπροσωπεύονταν οι παλιές μονάδες IDE (Integrated Drive Electronics);

    • Και οι σύγχρονες μονάδες δίσκου NVMe (Non-Volatile Memory Express);

  2. Ρίξτε μια ματιά στο αρχείο /proc/meminfo. Συγκρίνετε τα περιεχόμενα αυτού του αρχείου με την έξοδο της εντολής free και προσδιορίστε ποιο κλειδί από το /proc/meminfo αντιστοιχεί στα ακόλουθα πεδία στην έξοδο του free:

    Έξοδος free Πεδίο /proc/meminfo

    total

    free

    shared

    buff/cache

    available

Σύνοψη

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

  • Βασικά, τα προγράμματα βρίσκονται σε μια δομή καταλόγου τριών επιπέδων: /, /usr και /usr/local. Κάθε ένα από αυτά τα επίπεδα μπορεί να περιέχει καταλόγους bin και sbin.

  • Τα αρχεία διαμόρφωσης αποθηκεύονται στα /etc και ~.

  • Τα dotfiles είναι κρυφά αρχεία που ξεκινούν με μια τελεία (.).

Έχουμε επίσης συζητήσει τον πυρήνα του Linux. Σημαντικά γεγονότα είναι:

  • Για το Linux, όλα είναι ένα αρχείο.

  • Ο πυρήνας του Linux ζει στο /boot μαζί με άλλα αρχεία που σχετίζονται με την εκκίνηση.

  • Για να ξεκινήσουν να εκτελούνται τα processes, ο πυρήνας πρέπει πρώτα να φορτωθεί σε μια προστατευμένη περιοχή της μνήμης.

  • Η δουλειά του πυρήνα είναι αυτή της κατανομής πόρων του συστήματος σε processes.

  • Το εικονικό (ή ψευδο) σύστημα αρχείων /proc αποθηκεύει σημαντικά δεδομένα του πυρήνα και του συστήματος με ρευστό τρόπο.

Ομοίως, εξερευνήσαμε συσκευές υλικού και μάθαμε τα εξής:

  • Ο κατάλογος /dev αποθηκεύει ειδικά αρχεία (γνωστοί και ως nodes) για όλες τις συνδεδεμένες συσκευές υλικού: συσκευές block ή συσκευές χαρακτήρων. Το πρώτο μεταφέρει δεδομένα σε τμήματα· το τελευταίο, ένα χαρακτήρα τη φορά.

  • Ο κατάλογος /dev περιέχει επίσης άλλα ειδικά αρχεία όπως /dev/zero, /dev/null ή /dev/urandom.

  • Ο κατάλογος /sys αποθηκεύει πληροφορίες σχετικά με συσκευές υλικού ταξινομημένες σε κατηγορίες.

Τέλος, θίξαμε τη μνήμη. Μάθαμε:

  • Ένα πρόγραμμα εκτελείται όταν φορτωθεί στη μνήμη.

  • Τι είναι η RAM (Random Access Memory).

  • Τι είναι η Swap.

  • Πώς να εμφανίσετε τη χρήση της μνήμης.

Εντολές που χρησιμοποιήθηκαν σε αυτό το μάθημα:

cat

Συνένωση/εκτύπωση των περιεχομένων ενός αρχείου.

free

Εμφάνιση ποσότητας ελεύθερης και χρησιμοποιημένης μνήμης στο σύστημα.

ls

Λίστα των περιεχομένων ενός καταλόγου.

which

Εμφάνιση τοποθεσίας ενός προγράμματος.

Απαντήσεις στις Καθοδηγούμενες Ασκήσεις

  1. Χρησιμοποιήστε την εντολή which για να βρείτε τη θέση των παρακάτω προγραμμάτων και να συμπληρώσετε τον πίνακα:

    Πρόγραμμα Εντολή which Path προς το Εκτελέσιμο (έξοδος) Ο χρήστης χρειάζεται δικαιώματα root;

    swapon

    which swapon

    /sbin/swapon

    Ναί

    kill

    which kill

    /bin/kill

    Όχι

    cut

    which cut

    /usr/bin/cut

    Όχι

    usermod

    which usermod

    /usr/sbin/usermod

    Ναί

    cron

    which cron

    /usr/sbin/cron

    Ναί

    ps

    which ps

    /bin/ps

    Όχι

  2. Πού βρίσκονται τα ακόλουθα αρχεία;

    Αρχείο /etc ~

    .bashrc

    Όχι

    Ναί

    bash.bashrc

    Ναί

    Όχι

    passwd

    Ναί

    Όχι

    .profile

    Όχι

    Ναί

    resolv.conf

    Ναί

    Όχι

    sysctl.conf

    Ναί

    Όχι

  3. Εξηγήστε την σημασία των αριθμητικών στοιχείων για το αρχείο πυρήνα vmlinuz-4.15.0-50-generic που βρίσκονται στο /boot:

    Στοιχείο Αριθμού Σημασία

    4

    Έκδοση πυρήνα

    15

    Μείζων αναθεώρηση

    0

    Ελάσσων αναθεώρηση

    50

    Αριθμός επιδιόρθωσης

  4. Ποια εντολή θα χρησιμοποιούσατε για να παραθέσετε όλους τους σκληρούς δίσκους και τα partitions στο /dev;

    ls /dev/sd*

Απαντήσεις στις Ασκήσεις Εξερεύνησης

  1. Τα αρχεία συσκευών για σκληρούς δίσκους αντιπροσωπεύονται με βάση τους ελεγκτές που χρησιμοποιούν — είδαμε το /dev/sd* για μονάδες που χρησιμοποιούν SCSI (Small Computer System Interface) και SATA (Serial Advanced Technology Attachment), αλλά

    • Πώς αντιπροσωπεύονταν οι παλιές μονάδες IDE (Integrated Drive Electronics);

      /dev/hd*

    • Και οι σύγχρονες μονάδες δίσκου NVMe (Non-Volatile Memory Express);

      /dev/nvme*

  2. Ρίξτε μια ματιά στο αρχείο /proc/meminfo. Συγκρίνετε τα περιεχόμενα αυτού του αρχείου με την έξοδο της εντολής free και προσδιορίστε ποιο κλειδί από το /proc/meminfo αντιστοιχεί στα ακόλουθα πεδία στην έξοδο του free:

    Έξοδος free Πεδίο /proc/meminfo

    total

    MemTotal / SwapTotal

    free

    MemFree / SwapFree

    shared

    Shmem

    buff/cache

    Buffers, Cached and SReclaimable

    available

    MemAvailable

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Επόμενο Μάθημα

4.3 Πού Αποθηκεύονται τα Δεδομένα (4.3 Μάθημα 2)

Διάβασε το επόμενο μάθημα

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Το LPI είναι ένας μη κερδοσκοπικός οργανισμός.

© 2023 Το Linux Professional Institute (LPI) είναι το παγκόσμιο πρότυπο πιστοποίησης και οργανισμός υποστήριξης σταδιοδρομίας για επαγγελματίες ανοιχτού κώδικα. Με περισσότερους από 200.000 κατόχους πιστοποίησης, είναι ο πρώτος και μεγαλύτερος στον κόσμο ουδέτερος οργανισμός πιστοποιήσεων Linux και ανοιχτού κώδικα. Το LPI έχει πιστοποιημένους επαγγελματίες σε περισσότερες από 180 χώρες, παραδίδει εξετάσεις σε πολλές γλώσσες και έχει εκατοντάδες συνεργάτες εκπαίδευσης.

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

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Επικοινωνήστε Μαζί Μας
  • Πολιτική Απορρήτου και Πολιτική Cookie

Εντοπίσατε ένα λάθος ή θέλετε να βοηθήσετε στη βελτίωση αυτής της σελίδας; Παρακαλούμε ενημερώστε μας.

© 1999–2023 The Linux Professional Institute Inc. All rights reserved.