Bootstrap ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΙ ΤΟ UNIX/LINUX

Εισαγωγή

Για το βιβλίο

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

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

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

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

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

Επιπλέον πληροφορίες μπορείτε να βρείτε:

Κωδικός Βιβλίου στον Εύδοξο: 122077484
Έκδοση: 2η/2023
Συγγραφείς: Σιδηρόπουλος Αντώνης
ISBN: 9786182210284
Τύπος: Σύγγραμμα
Διαθέτης (Εκδότης): ΕΚΔΟΣΕΙΣ Α. ΤΖΙΟΛΑ & ΥΙΟΙ Α.Ε.

Περιεχόμενα

1 Εισαγωγή στα Λειτουργικά Συστήματα και το Unix

1 Εισαγωγή στα Λειτουργικά Συστήματα και το Unix
1.1 Τι είναι Λειτουργικό Σύστημα - Σκοποί και Λειτουργίες
1.2 Κατηγορίες Λειτουργικών Συστημάτων
1.2.1 Λειτουργικά Συστήματα Πολλαπλών Εργασιών (Multi-Tasking) και Μονών Εργασιών (Single-Tasking)
1.2.2 Πολλαπλών Χρηστών (Multi-User) και Μονού Χρήστη (Single-User) Λειτουργικά Συστήματα
1.2.3 Λειτουργικά Συστήματα Πραγματικού Χρόνου (Real-time Operating Systems)
1.2.4 Κατανεμημένα Λειτουργικά Συστήματα (Distributed Operating Systems)
1.2.5 Ενσωματωμένα Λειτουργικά Συστήματα (Embedded Operating Systems)
1.3 To Λειτουργικό Σύστημα Unix
1.3.1 Λίγη Ιστορία
1.3.2 Εκδόσεις
1.3.3 To Linux
1.3.4 Χαρακτηριστικά Αρχιτεκτονικής
1.3.5 Κύκλος Διερμήνευσης Εντολής Κελύφους
1.4 Βασικές Οντότητες στο Unix
1.4.1 Αρχεία
1.4.2 Χρήστες και Ομάδες Χρηστών
1.4.3 Διεργασίες (Processes)
1.5 Πώς να Εργαστείτε για Εξάσκηση και την Υλοποίηση των Ασκήσεων

2 Προετοιμασία Υποδομής

2 Προετοιμασία Υποδομής
2.1 Προετοιμασία USB Δίσκου από ISO
2.1.1 Προγράμματα Εγγραφής ISO σε USB
2.1.2 Unetbootin
2.2 Αντίγραφο Ασφαλείας Δίσκου
2.2.1 Αντίγραφο Ασφαλείας Δίσκου με Χρήση CloneZilla
2.2.2 Ανάκτηση Δίσκου από Αντίγραφο Ασφαλείας με Χρήση CloneZilla
2.3 Προετοιμασία Τόμων Δίσκου
2.4 Εγκατάσταση Ubuntu
2.4.1 Επιλογή Προορισμού Εγκατάστασης
2.4.2 Ολοκλήρωση Εγκατάστασης

3 Εισαγωγή στη χρήση του κελύφους και τη σύνταξη εντολών

3 Εισαγωγή στη χρήση του κελύφους και τη σύνταξη εντολών
3.1 Χρήση Κελύφους και Τερματικού
3.1.1 Τερματικό
3.2 Το Κέλυφος (Shell)
3.3 Διατύπωση Εντολών
3.3.1 Η Πρώτη μου Εντολή
3.3.2 Η Εντολή man
3.3.3 Διαφοροποίηση Σημαιών και Αρχείων
3.3.4 Πιθανά Σφάλματα Κατά τη Διατύπωση Εντολών
3.3.5 Διαχωρισμός Εντολών
3.3.6 Ακύρωση Εντολής
3.4 Ασκήσεις για Εξάσκηση

4 Εισαγωγή στο Σύστημα Αρχείων

4 Εισαγωγή στο Σύστημα Αρχείων
4.1 Εισαγωγή στο Σύστημα Αρχείων
4.1.1 Home Directory
4.1.2 Περιορισμοί και Κανόνες για ένα Σύστημα Αρχείων
4.2 Διαδρομές
4.2.1 Απόλυτες Διαδρομές
4.2.2 Σχετικές Διαδρομές
4.2.3 Μετακίνηση προς τα Επάνω με Σχετική Διαδρομή
4.2.4 Ο Κατάλογος \$HOME των Χρηστών
4.3 Τύποι Αρχείων
4.3.1 Εντολές Διαχείρισης Καταλόγων
4.3.2 Εντολές Διαχείρισης Καταλόγων και Αρχείων
4.3.3 Κρυφά Αρχεία
4.4 Ασκήσεις για Εξάσκηση

5 Χαρακτήρες Μπαλαντέρ (wildcards)

5 Χαρακτήρες Μπαλαντέρ (wildcards)
5.1 Αυτόματη Συμπλήρωση Ονομάτων Αρχείων (Filename Completion)
5.2 Χαρακτήρες Μπαλαντέρ (Wildcards)
5.2.1 Σύνολα Χαρακτήρων (Charsets)
5.2.2 Ιστορική Αναδρομή
5.2.3 Σύνολα Χαρακτήρων και Wildcards
5.3 Παραδείγματα Χρήσης Μπαλαντέρ
5.4 Συνήθη Σφάλματα
5.4.1 Εύρος Αριθμών
5.4.2 Συνδυασμοί
5.4.3 Το Τραγικό Κενό Διάστημα
5.5 Μπαλαντέρ και Εισαγωγικά
5.5.1 Μπαλαντέρ και Διαδρομές
5.6 Ασκήσεις για Εξάσκηση

6 Ασφάλεια στο Σύστημα Αρχείων

6 Ασφάλεια στο Σύστημα Αρχείων
6.1 Άδειες Πρόσβασης
6.1.1 Επιπλέον Δικαιώματα
6.1.2 Αποθήκευση Δικαιωμάτων
6.2 Σημασία Δικαιωμάτων
6.2.1 Εσωτερική Δομή Συστήματος Αρχείων
6.3 Ορισμός και Μεταβολή Δικαιωμάτων
6.3.1 Προκαθορισμένα Δικαιώματα και η umask
6.4 Ασκήσεις για Εξάσκηση

7 Διεργασίες και Σήματα

7 Διεργασίες και Σήματα
7.1 Διεργασίες
7.1.1 Η Εντολή ps
7.1.2 Η Εντολή pstree
7.2 Διαδικασία Εκκίνησης Συστήματος
7.3 Ενέργειες fork και exec
7.3.1 Η Ενέργεια fork
7.3.2 Η Ενέργεια exec
7.3.3 fork και exec σε Συνεργασία
7.4 Σήματα
7.4.1 Η Εντολή kill
7.5 Ιδιότητες Διεργασιών
7.5.1 Μεταβλητές Περιβάλλοντος
7.5.2 Μεταβλητές Περιβάλλοντος στο Λειτουργικό Σύστημα των Microsoft Windows
7.6 Χρήσιμες Μεταβλητές Περιβάλλοντος
7.6.1 Τοπικές Ρυθμίσεις Διεργασίας
7.6.2 Μεταβλητή Περιβάλλοντος PATH
7.7 Εργασίες
7.8 Ασκήσεις για Εξάσκηση

8 Διαχείριση Αρχείων, Ανακατεύθυνση και Διασωλήνωση

8 Διαχείριση Αρχείων, Ανακατεύθυνση και Διασωλήνωση
8.1 Ροές Εισόδου-Εξόδου και Ανακατεύθυνση
8.1.1 Ανακατεύθυνση Κανονικής Εξόδου
8.1.2 Ανακατεύθυνση Εξόδου Λαθών
8.1.3 Ανακατεύθυνση Εξόδου σε άλλη Έξοδο
8.1.4 Ροές Εξόδων - Προσάρτηση σε Αρχεία
8.1.5 Ροή Εισόδου
8.1.6 Διασωλήνωση
8.2 Συνδυασμός Εντολών και Ροών
8.2.1 ; και >
8.2.2 ; και |
8.2.3 Ομαδοποίηση Εντολών
8.3 Ειδικές Περιπτώσεις Ανακατεύθυνσης
8.3.1 Το Ειδικό Αρχείο /dev/null
8.3.2 Το Ειδικό Αρχείο /dev/zero
8.3.3 Είσοδος σε Εντολές Φίλτρα
8.3.4 Ανάγνωση Εισόδου από το Τερματικό
8.3.5 Εδώ-Έγγραφο
8.3.6 Ανακατεύθυνση σε Κέλυφος
8.4 Συνήθη Σφάλματα
8.5 Ασκήσεις για Εξάσκηση

9 Βασικά Φίλτρα

9 Βασικά Φίλτρα
9.1 Γενικά για τα Φίλτρα
9.2 Οι Εντολές head και tail
9.2.1 Η Εντολή head
9.2.2 Η Εντολή tail
9.3 Η Εντολή wc
9.4 Η Εντολή tr
9.5 Η Εντολή sort
9.6 Η Εντολή uniq
9.7 Η Εντολή cut
9.8 Η Εντολή grep
9.9 Ασκήσεις για Εξάσκηση

10 Κανονικές Εκφράσεις

10 Κανονικές Εκφράσεις
10.1 Δομή Κανονικών Εκφράσεων
10.1.1 Τα Άτομα
10.1.2 Τελεστές
10.2 Σύνολα Κανονικών Εκφράσεων
10.3 Η Οικογένεια Εντολών grep
10.3.1 Παραδείγματα με την grep
10.4 Κανονικές Εκφράσεις με grep και οι Χαρακτήρες Μπαλαντέρ του Κελύφους
10.5 Ασκήσεις για Εξάσκηση

11 Εισαγωγή στα Σενάρια Κελύφους

11 Εισαγωγή στα Σενάρια Κελύφους
11.1 Κέλυφος ή Φλοιός (Shell)
11.1.1 Το πρώτο μου Σενάριο Κελύφους
11.1.2 Εκτέλεση Σεναρίων και Άδειες Πρόσβασης
11.1.3 Αποσφαλμάτωση Σεναρίων Κελύφους
11.1.4 Εκτέλεση Σεναρίων και η Μεταβλητή Περιβάλλοντος PATH
11.2 Μεταβλητές Κελύφους
11.2.1 Ανάθεση Τιμής
11.2.2 Σφάλματα κατά την Εκχώρηση
11.2.3 Μεταβλητές Περιβάλλοντος για Συγκεκριμένη Εντολή
11.2.4 Χρησιμοποιώντας την Εντολή read
11.2.5 Χρήση Μεταβλητών
11.3 Χρήση Εισαγωγικών
11.3.1 Εισαγωγικά και Μεταβλητές Κελύφους
11.3.2 Εισαγωγικά και Μεταβλητές Περιβάλλοντος
11.3.3 Συνένωση Μεταβλητών και Συμβολοσειρών
11.3.4 Τα Ανάποδα Εισαγωγικά ` και το \$()
11.4 Αριθμητικές Πράξεις
11.4.1 Αριθμητικές Πράξεις με Χρήση της expr
11.4.2 Αριθμητικές Πράξεις στην Αριθμητική Κατάσταση του bash
11.5 Ορίσματα στη Γραμμή Εντολής
11.6 Η Εντολή for
11.7 Ορίσματα Διαδρομές και Μπαλαντέρ
11.8 Βρόχος με Αριθμητική Κατάσταση
11.9 Ασκήσεις για Εξάσκηση

12 Έλεγχοι και Δομές Επιλογής

12 Έλεγχοι και Δομές Επιλογής
12.1 Διεργασίες: Γονείς και Παιδιά
12.2 Λογικό Αποτέλεσμα Εντολών
12.2.1 Λογικό ΚΑΙ Μεταξύ Εντολών
12.2.2 Λογικό Ή Μεταξύ Εντολών
12.2.3 Λογικό ΌΧΙ Εντολών
12.2.4 Λογικό Αποτέλεσμα Διασωλήνωσης
12.3 Η Δομή if
12.4 Η Εντολή test
12.4.1 Έλεγχοι σε Συμβολοσειρές
12.4.2 Έλεγχοι σε Ακέραιους Αριθμούς
12.4.3 Έλεγχοι σε Αρχεία
12.4.4 Έλεγχοι με Λογικές Πράξεις
12.4.5 Περιπτώσεις Προσοχής για την test
12.5 if και test σε Συνεργασία
12.5.1 Πρότυπη Δομή Σεναρίου Κελύφους
12.6 Επιπλέον Δυνατότητες του bash
12.6.1 Αριθμητική Κατάσταση και Έλεγχοι
12.6.2 Κατάσταση Ελέγχου Συνθηκών bash
12.7 Οι Δομές while, until και case
12.7.1 Η Δομή while
12.7.2 Οι Εντολές true και false
12.7.3 Η Δομή until
12.7.4 Η Δομή case
12.7.5 Η Εντολή shift
12.8 Ασκήσεις για Εξάσκηση

13 Ομαδοποίηση Εντολών

13 Ομαδοποίηση Εντολών
13.1 Blocks εντολών με ομαδοποίηση με ( ή \{
13.1.1 Ομαδοποίηση με (
13.1.2 Ομαδοποίηση με \{
13.2 Blocks Εντολών σε Δομές
13.3 Blocks Εντολών και Ανακατεύθυνση
13.3.1 Επαναληπτική Ανάγνωση με την read
13.4 Blocks και Διασωλήνωση
13.5 Ασκήσεις για Εξάσκηση

14 Το Σύστημα Αρχείων

14 Το Σύστημα Αρχείων
14.1 Μοντέλο Αποθήκευσης
14.1.1 Είδη Δίσκων
14.1.2 Είδη Τμηματοποίησης
14.1.3 Τύποι Συστημάτων Αρχείων
14.1.4 Προσάρτηση
14.2 Δομή Συστήματος Αρχείων
14.2.1 i-nodes
14.2.2 Δομή Καταλόγων
14.3 Σύνδεσμοι
14.3.1 Σκληροί Σύνδεσμοι
14.3.2 Συμβολικοί Σύνδεσμοι
14.4 Ασκήσεις για Εξάσκηση

Παραρτήματα

A FHS: Filesystem Hierarchy Standard
B Αρχεία Αρχικοποίησης Ρυθμίσεων
B.1 Αρχικοποίηση Ρυθμίσεων Χρηστών
B.2 Αρχικοποίηση Ρυθμίσεων Συστήματος
Γ Ο επεξεργαστής κειμένου vi
Δ Τα αρχεία /etc/passwd και /etc/group
Δ.1 Το αρχείο /etc/passwd
Δ.2 Το αρχείο /etc/group
Δ.3 Το πεδίο GECOS
E Το αρχείο /etc/passwd από το BSD V3
E.1 Ιστορικά

Για τον συγγραφέα

Αντώνης Σιδηρόπουλος

O Αντώνης Σιδηρόπουλος είναι Αναπληρωτής Καθηγητής στο τμήμα Μηχανικών Πληροφορικής και Ηλεκτρονικών Συστημάτων του Διεθνούς Πανεπιστημίου Ελλάδος. Είναι μέλος του Εργαστηρίου Διαχείρισης Πληροφορίας και Μηχανικής Λογισμικού.

Κατέχει διδακτορικό στην Πληροφορική από το τμήμα Πληροφορικής του ΑΠΘ (2006), μεταπτυχιακό στην Επιστήμη Υπολογιστών από το τμήμα Επιστήμης Υπολογιστών Παν.Κρήτης (1999) καθώς και πτυχίο στην Επιστήμη Υπολογιστών από το ίδιο πανεπιστήμιο (1996). Έχει εργαστεί στο Πανεπιστήμιο Κρήτης, στο Ινστιτούτο Πληροφορικής του ΙΤΕ, στο εργαστήριο Design Lab του M.I.T. της Μασαχουσέτης, στο ΑΠΘ (τμήμα Πληροφορικής & Μετεωροσκοπείο), στο ΤΕΙ Θεσσαλονίκης και ως ελεύθερος επαγγελματίας σε διάφορα ερευνητικά ή παραγωγικά έργα. Από to 2000 είναι ιδρυτικό μέλος της Ένωσης Πληροφορικών Ελλάδας και τον Δεκέμβριο του 2022 έχει εκλεγεί στη θέση του προέδρου.

Στο τμήμα Μηχανικών Πληροφορικής και Ηλεκτρονικών Συστημάτων διδάσκει μεταξύ άλλων, τα μαθήματα: "Εισαγωγή στα Λειτουργικά Συστήματα", "Ανάπτυξη Διαδικτυακών Εφαρμογών" και "Διαχείριση Συστήματος και Υπηρεσιών DBMS".

Επικοινωνία

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

Υλικό

Υλικό για εκπαιδευόμενους

Μπορείτε να κατεβάσετε το αρχείο osbook_codes-20230623.tar.bz2 το οποίο περιέχει όλους τους κώδικες που περιλαμβάνονται στο βιβλίο. Για να αποσυμπιέσετε το αρχείο χρησιμοποιείστε την εντολή:

tar xvfj osbook_codes-20230623.tar.bz2
έχοντας κάνει "cd" στον φάκελο στον οποίο αποθηκεύσατε το αρχείο.

Υλικό για διδάσκοντες

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