Xalasys.com
<tille
wants no spam _at_ xalasys dot com>
Έκδοση 1.24 20061101
Copyright © 2002, 2003, 2004, 2005, 2006 Machtelt Garrels
Πρώτη δημοσίευση Δεκέμβριος 2002
Πρώτη δημοσίευση Ελληνικής μετάφρασης Οκτώβριος 2007
Πολλοί άνθρωποι ακόμη πιστεύουν ότι η εκμάθηση του Linux είναι δύσκολη υπόθεση, ή ότι μόνο οι ειδικοί μπορούν να καταλάβουν πως λειτουργεί ένα σύστημα Linux. Παρόλο την διαθεσιμότητα ευρείας δημόσιας τεκμηρίωσης, αυτή είναι διασκορπισμένη στον Ιστό και συχνά είναι δυσνόητη, αφού συνήθως απευθύνεται σε έμπειρους χρήστες του UNIX ή του Linux. Σήμερα, χάρη στην διαρκή του ανάπτυξη, το Linux κερδίζει οπαδούς τόσο στην εργασία όσο και στο σπίτι. Ο σκοπός αυτού του εγχειριδίου είναι να δείξει στους ανθρώπους κάθε ηλικίας ό,τι το Linux είναι απλό και συναρπαστικό και χρησιμοποιείται για όλους τους λόγους.
Αυτός ο οδηγός δημιουργήθηκε για μια γενική επισκόπηση του λειτουργικού συστήματος Linux, απευθύνεται σε νέους χρήστες ως οδηγός εξερεύνησης και εκκίνησης, με ασκήσεις στο τέλος κάθε κεφαλαίου. Όσο για τους προχωρημένους το εγχειρίδιο αυτό μπορεί να αποτελέσει ένα εγχειρίδιο αναφοράς στη επιφάνεια εργασίας, καθώς και μια συλλογή από τις βασικές γνώσεις που χρειάζονται ως προστάδιο προς τη διαχείριση συστήματος και τη διαχείριση δικτύου. Αυτό το βιβλίο περιέχει πολλά πραγματικά παραδείγματα που προέρχονται από την εμπειρία του συγγραφέα ως χρήστη του Linux και διαχειριστή δικτύου, εκπαιδευτή και συμβούλου. Ελπίζουμε αυτά τα παραδείγματα να σας βοηθήσουν να καταλάβετε καλύτερα το σύστημα Linux και να ενθαρρυνθείτε ώστε να δοκιμάσετε τις δικές σας ιδέες.
Ο καθένας που επιθυμεί μια εμπειρία με την γραμμή εντολών, με Linux (και UNIX γενικότερα) θα βρει αυτό το βιβλίο πραγματικά χρήσιμο.
Αυτό το έγγραφο δημοσιεύτηκε στο μέρος των Οδηγών στη συλλογή του Έργου Ελεύθερης Τεκμηρίωσης για το Linux (Linux Documentation Project collection) στη σελίδα http://www.tldp.org/guides.html; Επίσης από εδώ μπορείτε να μεταφορτώσετε τις PDF και PostScript εκδόσεις.
Το βιβλίο είναι διαθέσιμο από την Fultus.com Books με κατ' απαίτηση εκτύπωση. Η Fultus διανέμει αυτό το έγγραφο σε πολλά βιβλιοπωλεία, συμπεριλαμβανομένου του Baker & Taylor και σε βιβλιοπωλεία του διαδικτύου Amazon.com, Amazon.co.uk, BarnesAndNoble.com και Google's Froogle.
Εικόνα 1. Introduction to Linux: εξώφυλλο
Ιστορικό αναθεωρήσεων |
||
Διόρθωση 1.24 |
01-11-2006 |
Διορθώθηκε από: MG |
Προστέθηκαν όροι στο ευρετήριο, προετοιμάστηκε για τη δεύτερη τυπωμένη έκδοση, προστέθηκαν σελίδες και πληροφορίες πληρεξούσιου. |
||
Διόρθωση 1.23 |
2006-07-25 |
Διορθώθηκε από: MG and FK |
Ενημερώσεις και διορθώσεις, μετακινήθηκε το παράρτημα 5 ξανά, προσαρμόστηκε άδεια ώστε να είναι εφικτή η συμπερίληψη στα έγγραφα Debian. |
||
Διόρθωση 1.22 |
2006-04-06 |
Διορθώθηκε από: MG |
Διορθώθηκε εντελώς το κεφάλαιο 8, στο κεφάλαιο 10: συγκεκριμενοποιήθηκαν τα παραδείγματα, προστέθηκαν πληροφορίες για ifconfig και cygwin, διορθώθηκαν οι εφαρμογές δικτύου. |
||
Διόρθωση 1.21 |
2006-03-14 |
|
Προστέθηκαν ασκήσεις στο κεφάλαιο 11, διορθώθηκαν λάθη νέων γραμμών, επισκόπηση των εντολών ολοκληρώθηκε στο κεφάλαιο 9, λίγες διορθώσεις στο κεφάλαιο 10. |
||
Διόρθωση 1.20 |
2006-01-06 |
Διορθώθηκε από: MG |
Διαχωρισμός του κεφαλαίου 7: Όσα έχουν σχέση με τον ήχο είναι τώρα σε ξεχωριστό κεφάλαιο, κεφάλαιο 11.xml. Μικρές διορθώσεις, αναβαθμίσεις για εντολές όπως aptitude, περισσότερα σε αποθήκευση USB, τηλεφωνία μέσω διαδικτύου, διορθώσεις από τους αναγνώστες. |
||
Διόρθωση 1.13 |
2004-04-27 |
Διορθώθηκε από: MG |
Τελευταία ανάγνωση προτού σταλούν όλα στο Fultes για εκτύπωση. Προστέθηκε η αναφορά στο Fultes στο μέρος των νέων εκδόσεων, αναβαθμιστήκαν τα μέρη: Συμβάσεις και Οργάνωση. Ελάχιστες αλλαγές στα κεφάλαια 4, 5, 6 και 8, προστέθηκαν πληροφορίες για την επιφάνεια εργασίας (rdesktop info) στο κεφάλαιο 10, αναβαθμίστηκε το γλωσσάρι, αντικαταστάθηκαν οι αναφορές στο fileutils με coreutils, θερμά ευχαριστώ στους μεταφραστές της ινδικής έκδοσης |
Πολλά ευχαριστώ σε όλους όσους μοιράστηκαν τις εμπειρίες τους. Και ειδικότερα στους Βέλγους χρήστες Linux που με άκουγαν κάθε μέρα και ήταν γενναιόδωροι στα σχόλια τους.
Επίσης μια ιδιαίτερη σκέψη στον Tabatha Marshall για την εξονυχιστική επανεξέταση του εγγράφου, και τον Eugene Crosser ο οποίος εντόπισε τα λάθη που εμείς οι δύο προσπεράσαμε.
Ευχαριστώ σε όλους τους αναγνώστες που με ενημέρωσαν για ελλιπή θέματα και που με βοήθησαν να εντοπίσω και τα τελευταία λαθάκια, ασαφείς ορισμούς και τυπογραφικά λάθη με το να μου στέλνουν τα σχόλια τους. Αυτοί είναι επίσης που με βοήθησαν να κρατήσω αυτό τον οδηγό ενημερωμένο, ένας απ’ αυτούς είναι ο Filipus Klutiero ο οποίος έκανε μια ολοκληρωμένη επανεξέταση το 2005 και 2006 και με βοήθησε να εισάγω τον οδηγό στη συλλογή εγγράφων Debian (Debian docs collection), καθώς και τον Alexey Eremenko που μου έστειλε τα θεμέλια για το κεφάλαιο 11.
Κλείνοντας, ένα μεγάλο ευχαριστώ για τους εθελοντές που έχουν μεταφράσει και κρατούν ενημερωμένο αυτό το έγγραφο στα Γαλλικά, Σουηδικά, Γερμανικά, Farsi, Ινδικά και σε άλλες πολλές γλώσσες. Είναι μια πολύ καλή δουλεία που δεν πρέπει να υποτιμηθεί. Θαυμάζω το κουράγιο σας.
(ΣτΜ: Η ελληνική μετάφραση οφείλεται εν μέρει στους φοιτητές και φοιτήτριες του Τμήματος Εφαρμοσμένης Πληροφορικής του Πανεπιστημίου Μακεδονίας που παρακολούθησαν το μάθημα επιλογής Προγραμματισμός Συστημάτων Ι, το χειμερινό εξάμηνο 2006-2007. Την γενική επιμέλειας, γλωσσική επεξεργασία, καθώς και τη μετάφραση αρκετών τμημάτων που έμειναν 'ορφανά' ανέλαβε ο Κώστας Γ. Μαργαρίτης, καθηγητής του Τμήματος).
Ελλιπείς πληροφορίες, links, χαρακτήρες; Στείλτε το στον διαχειριστή του εγγράφου:
<tille
wants no spam _at_ xalasys dot
com>
Μη ξεχάσετε να το ελέγξετε πρώτα με την τελευταία έκδοση!
(Για την Ελληνική μετάφραση, σχόλια και παρατηρήσεις στη διεύθυνση ηλ. ταχυδρομείου, kmarg@uom.gr, ΣτΜ.)
© 2002-2006 Machtelt Garrels.
Παρέχεται η άδεια για αντιγραφή, διανομή και/ή τροποποίηση αυτού του εγγράφου σύμφωνα με τους όρους της Άδειας Ελεύθερης Τεκμηρίωσης (GNU GNU Free Documentation License), Έκδοση 1.2 ή οποιαδήποτε επόμενη έκδοση που δημοσιεύτηκε από τo Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation), χωρίς Invariant Sections, Front-Cover Texts, και Back-Cover Texts. Ένα αντίγραφο της άδειας περιέχεται στο Παράρτημα Δ και ονομάζεται "GNU Free Documentation License".
Ο συγγραφέας και ο εκδότης κατέβαλαν κάθε προσπάθεια για την προετοιμασία αυτού του βιβλίου, να πιστοποιήσουν την ακρίβεια των πληροφοριών. Παρόλα αυτά, οι πληροφορίες που περιέχονται σε αυτό το βιβλίο δίδονται χωρίς εγγύηση, είτε εκφράζονται είτε εννοούνται. Ούτε ο συγγραφέας ούτε ο εκδότης καθώς και ούτε οποιοσδήποτε προμηθευτής ή διανομέας θα καθιστούν υπεύθυνοι για οποιαδήποτε ζημιά προκληθεί ή υποτίθεται ότι προκλήθηκε είτε άμεσα είτε έμμεσα από αυτό το βιβλίο.
Τα λογότυπα, τα σήματα κατατεθέντα και τα σύμβολα που χρησιμοποιούνται σε αυτό το βιβλίο είναι ιδιοκτησίες των αντίστοιχων ιδιοκτητών.
(Τα αντίστοιχα ισχύουν και για την Ελληνική μετάφραση του βιβλίου, Μετάφραση: Κ.Γ. Μαργαρίτης και ομάδα φοιτητών του Τμήματος Εφαρμοσμένης Πληροφορικής Πανεπιστημίου Μακεδονίας, 2006-2007, ΣτΜ.).
Θα χρειαστείτε έναν υπολογιστή και ένα αποθηκευτικό μέσο όπου περιέχει μια διανομή του Linux. Τα περισσότερα σε αυτόν τον οδηγό εφαρμόζονται σε όλες τις διανομές του Linux - και UNIX γενικότερα. Εκτός από χρόνο, δεν υπάρχουν επιπλέον απαιτήσεις.
Το Installation HOWTO περιέχει χρήσιμες πληροφορίες για το πως να αποκτήσεις λογισμικό Linux και να το εγκαταστήσεις στον υπολογιστή σου. Επίσης αναφέρονται οι απαιτήσεις σε υλικό καθώς και η συνύπαρξη με άλλα λειτουργικά συστήματα.
Μπορείτε να μεταφορτώσετε τα αντίγραφα (images) του CD από τη τοποθεσία linux-iso.com και πολλές άλλες τοποθεσίες, δείτε στο Παράρτημα Α.
Μια ενδιαφέρουσα παραλλαγή για αυτούς που δεν τολμούν μια πραγματική εγκατάσταση Linux στο ν υπολογιστή τους, υπάρχουν οι διανομές Linux που τρέχουν από CD, τέτοια είναι η διανομή Knoppix.
TΟι ακόλουθες τυπογραφικές και πιο χρησιμοποιούμενες συμβάσεις που εμφανίζονται σ’ αυτό το κείμενο είναι:
Πίνακας 1. Τυπογραφικές συμβάσεις
Τύπος στο κείμενο |
Σημασία |
|
"Κείμενο σε εισαγωγικά" |
Είναι λόγια άλλων ανθρώπων ή αποτελέσματα υπολογιστή σε ακριβή μεταφορά. |
|
όψη της κονσόλας |
Κατά λέξη τα δεδομένα εισόδου και εξόδου στον υπολογιστή που βρίσκονται στην κονσόλα, συνήθως αποδίδονται με φόντο χρώματος ανοιχτό γκρι. |
|
εντολή |
Το όνομα μιας εντολής που μπορεί να εισαχθεί στην κονσόλα. |
|
ΜΕΤΑΒΛΗΤΗ |
Το όνομα μιας μεταβλητής ή ενός δείκτη που συμπεριφέρεται ως μεταβλητή, όπως στην περίπτωση $VARNAME. |
|
επιλογή |
Επιλογή σε μια εντολή, όπως στην περίπτωση "η επιλογή -a στην εντολή ls". |
|
όρισμα |
Όρισμα σε μια εντολή, όπως "read man ls ". |
|
προτροπή |
Προτροπή του χρήστη, συνήθως ακολουθούνται από μια εντολή που εισάγεις στην κονσόλα, όπως για παράδειγμα hilda@home> ls -l |
|
Εντολή επιλογές ορίσματα |
Η σύνοψη μιας εντολής ή διαφορετικά η γενική σύνταξη της σε μια γραμμή. |
|
Όνομα αρχείου |
Το όνομα ενός αρχείου ή ενός καταλόγου, για παράδειγμα "Change to the /user/bin directory." |
|
Κλειδί |
Πλήκτρα του πληκτρολογίου, όπως "πληκτρολόγησε Q για έξοδο(quit)". |
|
κουμπί |
Γραφικό κουμπί για πάτημα (click), όπως το κουμπί OK. |
|
Μενού->Επιλογή |
Επιλογή από γραφικό μενού, για παράδειγμα: "SelectHelp->About Mozilla in your browser." |
|
Ορολογία |
Σημαντικός όρος ή ιδέα: "Ο πυρήνας του Linux είναι η καρδιά του συστήματος." |
|
\
|
Η κάθετος στην κονσόλα ή στη σύνταξη εντολών σημαίνει ότι η γραμμή δεν έχει τελειώσει ακόμη. Με άλλα λόγια, μια μεγάλη εντολή χωρίζεται σε πολλές γραμμές, \ σημαίνει μην πατήσεις το Enter ακόμη!" |
|
Βλέπε Κεφάλαιο 1 |
Σύνδεσμος σχετικός με το αντικείμενο μέσα στον οδηγό. |
|
Διαθέσιμος σύνδεσμος σε μια πηγή σχετικών πληροφοριών στο διαδίκτυο. |
Χρησιμοποιούνται οι παρακάτω εικόνες:
Αυτό είναι μια σημείωση |
|
---|---|
|
Περιέχει πρόσθετες πληροφορίες και σχόλια. |
Αυτό είναι προειδοποίηση |
|
---|---|
|
Σημαίνει πρόσεχε. |
Αυτό είναι έντονη προειδοποίηση |
|
---|---|
|
Πρόσεχε πολύ. |
Αυτό είναι πληροφορία |
|
---|---|
|
Πληροφορίες και κόλπα. |
Αυτός ο οδηγός αποτελεί μέρος της Έργου Τεκμηρίωσης του Linux (Linux Documentation Project) και σκοπός του είναι να γίνει η βάση για όλα τα υπόλοιπα μέρη της εργασίας. Με αυτό τον τρόπο, παρέχονται οι βασικές γνώσεις που χρειάζεται όποιος επιθυμεί να χειριστεί σύστημα Linux, ενώ ταυτόχρονα προσπαθεί συνειδητά να αποτρέψει την ξανα-ανακάλυψη του τροχού. Έτσι, μπορείς να αναμένεις αυτό το βιβλίο ατελές και γεμάτο διασυνδέσεις (links) σε πηγές για επιπλέον πληροφορίες στο σύστημα σου, στο Διαδίκτυο (Internet) και στην τεκμηρίωση του συστήματός σου.
Το πρώτο κεφάλαιο αποτελεί μια εισαγωγή στο Linux· τα επόμενα δύο αναλύουν απόλυτα τις βασικές εντολές. Τα κεφάλαια 4 και 5 περιέχουν κάποια πιο προχωρημένα αλλά εξίσου βασικά θέματα. Το κεφάλαιο 6 απαιτείται για να προχωρήσετε στα επόμενα, καθώς αναφέρεται στα αρχεία κειμένου (editing files), μια ικανότητα του χρειάζεται για να περάσεις από το επίπεδο του αρχάριου στο επίπεδο του χρήστη. Τα κεφάλαια που ακολουθούν αναλύουν ακόμη πιο εξειδικευμένα θέματα που πρέπει να αντιμετωπίζεις στην καθημερινή χρήση του Linux.
Όλα τα κεφάλαια περιέχουν ασκήσεις που εξετάζουν το πόσο έτοιμος είσαι για το επόμενο κεφάλαιο.
· Κεφάλαιο 1: Τι είναι το Linux, πως δημιουργήθηκε, πλεονεκτήματα και μειονεκτήματα, τι επιφυλάσσει το μέλλον για το Linux, σε ποιος απευθύνεται, εγκατάσταση στον υπολογιστή.
· Κεφάλαιο 2: Εκκίνηση, σύνδεση με το σύστημα, βασικές εντολές, αναζήτηση βοήθειας.
· Κεφάλαιο 3: Το σύστημα αρχείων, σημαντικά αρχεία και κατάλογοι, διαχείριση αρχείων και καταλόγων, προστασία των δεδομένων σας.
· Κεφάλαιο 4: Κατανόηση και διαχείριση διαδικασιών, διαδικασίες εκκίνηση και τερματισμού, αναβολή εργασιών, επαναληπτικές εργασίες.
· Κεφάλαιο 5: Ποιες είναι οι βασικές είσοδοι, έξοδοι και λάθη και πως μπορούν αυτά τα χαρακτηριστικά να χρησιμοποιηθούν στην γραμμή εντολών.
· Κεφάλαιο 6: Γιατί πρέπει να μάθεις να δουλεύεις με έναν κειμενογράφο, συζήτηση για τους πιο δημοφιλείς κειμενογράφους.
· Κεφάλαιο 7: Διαμόρφωση του γραφικού, του κειμένου και του ακουστικού περιβάλλοντος, ρυθμίσεις γλώσσας, συμβουλές για προσθήκη επιπλέον λογισμικού.
· Κεφάλαιο 8: Μετατροπή αρχείων σε εκτυπώσιμη μορφή, πώς να τα εκτυπώσετε, προτάσεις για επίλυση προβλημάτων εκτύπωσης.
· Κεφάλαιο 9: Προετοιμασία δεδομένων για αποθήκευση, ανάλυση διαφόρων εργαλείων, απομακρυσμένη δημιουργία εφεδρικών αντιγράφων.
· Κεφάλαιο 10: Γενική επισκόπηση των εργαλείων δικτύου για το Linux και εφαρμογές χρηστών, με μια μικρή αναφορά στα προγράμματα δαίμονες και στην ασφάλεια των δικτύων.
· Κεφάλαιο 11: Ήχος και βίντεο, περιλαμβανομένου φωνής μέσω IP (Voice over IP) και καταγραφή ήχου αναλύονται σ’ αυτό το κεφάλαιο.
· Παράρτημα A: Ποια βιβλία να διαβάσετε και ποιες ιστοσελίδες (sites) να επισκεφτείτε όταν θα τελειώσετε αυτό το εγχειρίδιο.
· Παράρτημα B: Μια σύγκριση.
· Παράρτημα Γ : Αν ποτέ κολλήσετε, αυτοί οι πίνακες θα είναι σωτήριοι. Επίσης ένα καλό επιχείρημα όταν το αφεντικό σας επιμένει πως εσείς πρέπει να χρησιμοποιήσετε το δικό του αγαπημένο κέλυφος.
· Παράρτημα Δ: Τι μπορείς να κάνεις με αυτό τον οδηγό, από τη νομική πλευρά.
Θα ξεκινήσουμε με μία περίληψη του τρόπου με τον οποίο το Linux έγινε το λειτουργικό σύστημα που είναι σήμερα. Θα συζητήσουμε την παλαιότερη και μελλοντική του ανάπτυξη και θα ρίξουμε μια κοντινότερη ματιά στα πλεονεκτήματα και μειονεκτήματα αυτού του συστήματος. Θα μιλήσουμε για τις διανομές του, για το Λογισμικό Ανοιχτού Κώδικα (Open Source) γενικά και θα προσπαθήσουμε να εξηγήσουμε μερικά πράγματα για το GNU.
Αυτό το κεφάλαιο απαντά σε ερωτήσεις όπως:
Για να κατανοήσουμε τη δημοτικότητα του Linux, χρειάζεται να ταξιδέψουμε πίσω στο χρόνο, περίπου 30 χρόνια...
Φανταστείτε τους υπολογιστές σαν μεγάλα σπίτια, ακόμα και στάδια. Ενώ τα μεγέθη των υπολογιστών αυτών αποτελούν ουσιαστικό πρόβλημα, υπήρχε κάτι που έκανε την κατάσταση ακόμα χειρότερη: κάθε υπολογιστής είχε διαφορετικό λειτουργικό σύστημα. Το λογισμικό έπρεπε πάντα να προσαρμόζεται για να εξυπηρετήσει ένα συγκεκριμένο σκοπό, και το λογισμικό ενός δοσμένου συστήματος δεν έτρεχε σε άλλο σύστημα. Η ικανότητα εργασίας με ένα σύστημα δεν σήμαινε αυτόματα την ικανότητα εργασίας και με κάποιο άλλο . Ήταν δύσκολο, τόσο για τους χρήστες όσο και για τους διαχειριστές συστήματος.
Οι υπολογιστές τότε ήταν υπερβολικά ακριβοί, και έπρεπε να γίνουν θυσίες ακόμα και μετά την αρχική αγορά μόνο και μόνο για να καταλάβουν οι χρήστες πως λειτουργούν. Το συνολικό κόστος ανά μονάδα υπολογιστικής ισχύος ήταν τεράστιο.
Τεχνολογικά ο κόσμος δεν ήταν τόσο ανεπτυγμένος, οπότε θα έπρεπε να ανεχθούν τους υπερμεγέθεις υπολογιστές για άλλη μια δεκαετία. Το 1969, μια ομάδα ερευνητών στα εργαστήρια Bell Labs ξεκίνησαν να εργάζονται για την ανεύρεση λύσης στο πρόβλημα του λογισμικού, έτσι ώστε να διευθετηθούν τα θέματα συμβατότητας. Αυτοί ανάπτυξαν ένα νέο λειτουργικό σύστημα που ήταν
Απλό και κομψό.
Γραμμένο στην γλώσσα προγραμματισμού C αντί για κώδικα assembly.
Ικανό να ανακυκλώνει κώδικα.
Οι ερευνητές των Bell Labs ονόμασαν το πρόγραμμα τους "UNIX."
Τα χαρακτηριστικά ανακυκλωμένου κώδικα ήταν πολύ σημαντικά. Μέχρι τότε, όλα τα εμπορικώς διαθέσιμα υπολογιστικά συστήματα ήταν γραμμένα σε κώδικα ειδικά ανεπτυγμένο για ένα σύστημα. Το UNIX από την άλλη χρειαζόταν μόνο ένα μικρό τμήμα από αυτόν τον εξειδικευμένο κώδικα, το οποίο είναι τώρα ο κοινώς επονομαζόμενος πυρήνας. Ο πυρήνας αυτός είναι το μοναδικό τμήμα κώδικα που χρειάζεται να προσαρμοστεί για κάθε συγκεκριμένο σύστημα και αποτελεί τη βάση του συστήματος UNIX. Το λειτουργικό σύστημα και όλες οι άλλες λειτουργίες χτίστηκαν γύρω από τον πυρήνα και γράφτηκαν σε γλώσσα ανώτερου επιπέδου, τη C. Η γλώσσα αυτή είχε αναπτυχθεί ειδικά για τη δημιουργία του συστήματος UNIX. Με τη χρήση αυτής της νέας τεχνικής, ήταν ευκολότερο να αναπτυχθεί ένα λειτουργικό σύστημα που μπορούσε να λειτουργήσει σε διάφορους τύπους υλικού.
Οι πωλητές λογισμικού ανταποκρίθηκαν γρήγορα, εφόσον μπορούσαν να πουλήσουν 10 φορές περισσότερο λογισμικό σχεδόν χωρίς προσπάθεια. Νέες περίεργες συνθήκες εμφανίστηκαν: φανταστείτε για παράδειγμα υπολογιστές από διαφορετικούς πωλητές να επικοινωνούν στο ίδιο δίκτυο, ή χρήστες που δουλεύουν σε διαφορετικά συστήματα, χωρίς την ανάγκη για επιπλέον εκπαίδευση, να χρησιμοποιούν έναν άλλο υπολογιστή. Το UNIX βοήθησε σε πολύ μεγάλο βαθμό τους χρήστες να συμβαδίσουν με διαφορετικά συστήματα.
Κατά τη διάρκεια των επόμενων δύο δεκαετιών η ανάπτυξη του UNIX συνεχίστηκε. Περισσότερα πράγματα ήταν δυνατό να γίνουν και περισσότεροι πωλητές υλικού και λογισμικού πρόσθεσαν υποστήριξη για το UNIX στα προϊόντα τους.
Το UNIX θεμελιώθηκε αρχικά μόνο σε πολύ μεγάλα περιβάλλοντα με υπολογιστές μεγάλης ισχύος (mainframes) και μίνι-υπολογιστές (σημειώστε ότι το PC είναι ένας “μικρό”-υπολογιστής). Έπρεπε να εργάζεσαι σε πανεπιστήμιο, για την κυβέρνηση ή για μεγάλους οικονομικούς οργανισμούς για να έρθεις σε επαφή με ένα σύστημα UNIX.
Όμως μικρότεροι υπολογιστές ανακαλύπτονταν, και μέχρι τα τέλη του '80, πολλοί άνθρωποι είχαν οικιακούς υπολογιστές. Μέχρι τότε, υπήρχαν διαθέσιμες αρκετές εκδόσεις του UNIX για αρχιτεκτονική PC, αλλά καμία από αυτές δεν ήταν πραγματικά δωρεάν και το πιο σημαντικό: ήταν όλες τρομερά αργές, οπότε οι περισσότεροι χρησιμοποιούσαν MS DOS ή Windows 3.1 στα οικιακά τους PC.
Στο ξεκίνημα του '90 τα οικιακά PC ήταν επιτέλους αρκετά ικανά να εκτελέσουν ένα πλήρες UNIX. Ο Linus Torvalds, ένας νεαρός που σπούδαζε επιστήμη υπολογιστών στο πανεπιστήμιο του Ελσίνκι, σκέφτηκε ότι θα ήταν καλή ιδέα να υπάρχει μία σχεδόν δωρεάν διαθέσιμη ακαδημαϊκή έκδοση του UNIX, και αμέσως ξεκίνησε να γράφει κώδικα.
Ξεκίνησε να κάνει ερωτήσεις, ψάχνοντας απαντήσεις και λύσεις που θα τον βοηθούσαν να αποκτήσει UNIX στο PC του. Παρακάτω βρίσκεται μία από τις πρώτες του ταχυδρομικές επιστολές στο comp.os.minix, που χρονολογείται από το 1991:
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Gcc-1.40 and a posix-question Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI> Date: 3 Jul 91 10:00:50 GMT Hello netlanders, Due to a project I'm working on (in minix), I'm interested in the posix standard definition. Could somebody please point me to a (preferably) machine-readable format of the latest posix rules? Ftp-sites would be nice. |
Από το ξεκίνημα, ο στόχος του Linus ήταν να υπάρχει ένα ελεύθερο σύστημα απολύτως σύμφωνο με το πρωτότυπο UNIX. Αυτός ήταν ο λόγος που ρώτησε για τις POSIX προδιαγραφές, με το POSIX να είναι ακόμα το πρότυπο του UNIX.
Εκείνες τις μέρες το plug-and-play δεν είχε εφευρεθεί ακόμη, αλλά ο κόσμος που ενδιαφερόταν να αποκτήσει ένα δικό του σύστημα UNIX ήταν τόσος πολύς, που αυτό ήταν μόνο ένα μικρό εμπόδιο. Νέοι οδηγοί δίσκων έγιναν διαθέσιμοι για κάθε είδους υλικό, σε μια διαρκώς αυξανόμενη ταχύτητα. Σχεδόν μόλις ένα νέο τμήμα υλικού γινόταν διαθέσιμο, κάποιος το αγόραζε και το υπέβαλλε σε δοκιμή για το Linux, όπως το σύστημα ονομάστηκε σταδιακά, διαθέτοντας περισσότερο ελεύθερο κώδικα για ένα ακόμα μεγαλύτερο εύρος υλικού. Αυτοί οι προγραμματιστές δεν σταμάτησαν στο δικό τους PC, κάθε τμήμα υλικού που μπορούσαν να βρουν ήταν χρήσιμο για το Linux.
Εκείνο το καιρό, οι άνθρωποι αυτοί αποκαλούνταν "σπασίκλες" ή "φρικιά", αλλά δεν τους ένοιαζε, όσο η λίστα του υποστηριζόμενου υλικού μεγάλωνε όλο και περισσότερο. Χάρη σε αυτούς τους ανθρώπους, το Linux δεν είναι τώρα μόνο ιδανικό να τρέξει σε ένα νέο PC, αλλά είναι επίσης το επιλεγμένο σύστημα για το παλιό και εξωτικό υλικό το οποίο θα ήταν άχρηστο αν το Linux δεν υπήρχε.
Δύο χρόνια μετά την επιστολή του Linus, υπήρχαν 12000 χρήστες Linux. Το σχέδιο, που έγινε δημοφιλές με όσους ασχολούνταν με αυτό από χόμπι, διευρυνόταν σταθερά, ενώ παρέμενε όλο το διάστημα στα όρια του προτύπου POSIX. Όλα τα χαρακτηριστικά του UNIX προστέθηκαν στα επόμενα δύο χρόνια, καταλήγοντας στο ώριμο λειτουργικό σύστημα που έχει γίνει σήμερα το Linux. Το Linux είναι ένας πλήρης κλώνος του UNIX, κατάλληλος για χρήση τόσο σε σταθμούς εργασίας όσο και σε μεσαίους και μεγάλους διακομιστές. Σήμερα, πολλοί από τους πιο σημαντικούς παίκτες στην αγορά υλικού και λογισμικού ο καθένας έχει την ομάδα του από προγραμματιστές Linux, στον τοπικό σας πωλητή μπορείτε ακόμα να αγοράσετε προ-εγκατεστημένα συστήματα Linux με επίσημη υποστήριξη – επίσης όμως υπάρχει ακόμα πολύ υλικό και λογισμικό που δεν υποστηρίζεται.
Σήμερα το Linux έχει μπει στην αγορά υπολογιστών γραφείου. Οι προγραμματιστές Linux αρχικά επικεντρώθηκαν στη δικτύωση και τις υπηρεσίες, ενώ οι εφαρμογές γραφείου ήταν ο τελευταίος φραγμός που γκρεμίστηκε. Δεν μας αρέσει να παραδεχόμαστε ότι η Microsoft κυριαρχεί στην αγορά, οπότε πολλές από τις εναλλακτικές λύσεις ξεκίνησαν τα τελευταία χρόνια για να κάνουν το Linux μία αποδεκτή επιλογή σε ένα σταθμό εργασίας, παρέχοντας μία απλή διεπαφή χρήστη και εφαρμογές γραφείου συμβατές με αυτές της MS όπως επεξεργαστές κειμένου, λογιστικά φύλλα, λογισμικό παρουσιάσεων κ.α..
Από την πλευρά των διακομιστών, το Linux είναι γνωστό σαν μία σταθερή και αξιόπιστη πλατφόρμα, παρέχοντας βάσεις δεδομένων και εμπορικές υπηρεσίες για εταιρίες όπως η Amazon, το γνωστό ηλεκτρονικό βιβλιοπωλείο, το αμερικανικό ταχυδρομείο, ο γερμανικός στρατός και άλλοι. Ειδικά οι πάροχοι Διαδικτύου και οι διαδικτυακών υπηρεσιών εκδηλώνουν προτίμηση στο Linux ως τοίχο προστασίας (firewall), διακομιστή διαμεσολάβησης ή διακομιστή ιστού (proxy- και web server), και θα βρείτε ένα κουτί Linux κοντά σε κάθε διαχειριστή συστήματος UNIX που εκτιμά έναν άνετο σταθμό διαχείρισης. Συστοιχίες (clusters) από μηχανές Linux χρησιμοποιούνται στη δημιουργία ταινιών όπως οι "Titanic", "Shrek" κ.α. . Σε ταχυδρομεία, αποτελούν τα νευραλγικά κέντρα που δρομολογούν την αλληλογραφία και σε μεγάλες μηχανές αναζήτησης, οι συστοιχίες χρησιμοποιούνται για να πραγματοποιούν αναζητήσεις στο Internet. Αυτές είναι μόνο λίγες από τις χιλιάδες 'βαριές' εργασίες που το Linux πραγματοποιεί κάθε μέρα στον κόσμο.
Αξίζει να σημειωθεί ότι το σύγχρονο Linux τρέχει όχι μόνο σε σταθμούς εργασίας, μεσαίους και μεγάλους διακομιστές, αλλά ακόμη και σε συσκευές όπως PDA, κινητά τηλέφωνα, σε πληθώρα από ενσωματωμένες εφαρμογές ακόμα επίσης και σε πειραματικά ωρολόγια χειρός. Αυτό κάνει το Linux το μοναδικό λειτουργικό σύστημα στον κόσμο που καλύπτει τέτοια ευρεία γκάμα υλικού.
Εάν το Linux είναι δύσκολο στη μάθηση εξαρτάται από το πρόσωπο που ρωτάτε. Έμπειροι χρήστες UNIX θα πουν όχι, επειδή το Linux είναι ένα ιδανικό λειτουργικό σύστημα για δυνατούς χρήστες και προγραμματιστές, και έχει αναπτυχθεί και αναπτύσσεται από τέτοιους ανθρώπους.
Όλα όσα ένας καλός προγραμματιστής επιθυμεί είναι διαθέσιμα: μεταγλωττιστές, βιβλιοθήκες, εργαλεία ανάπτυξης και αποσφαλμάτωσης. Αυτά τα πακέτα υπάρχουν σε κάθε πρότυπη διανομή Linux. Ο μεταγλωττιστής-C περιλαμβάνεται δωρεάν – πράγμα που αντιτίθεται σε πολλές διανομές UNIX οι οποίες απαιτούν δαπάνες αδειοδότησης για αυτό το εργαλείο. Όλη η τεκμηρίωση και τα εγχειρίδια υπάρχουν, και συχνά περιλαμβάνονται παραδείγματα για να σας βοηθήσουν να ξεκινήσετε σε χρόνο μηδέν. Μοιάζει σαν το UNIX και η εναλλαγή μεταξύ του UNIX και του Linux να είναι φυσικό επακόλουθο.
Στον πρώτο καιρό του Linux, το να είναι κάποιος έμπειρος χρήστης έμοιαζε να ήταν προαπαιτούμενο για να ξεκινήσει να εργάζεται με το σύστημα. Αυτοί που κατείχαν το χειρισμό του Linux ένιωθαν καλύτερα από τους υπόλοιπους "αποτυχημένους" που δεν είχαν αφυπνιστεί ακόμα. Ήταν κοινή τακτική να πεις σε έναν αρχάριο χρήστη να "RTFM" (read the f...g. manuals-διάβασε τα γ....α εγχειρίδια). Ενώ τα εγχειρίδια υπήρχαν σε κάθε σύστημα, ήταν δύσκολο να βρεθεί η τεκμηρίωση, και ακόμα και αν κάποιος την έβρισκε, οι εξηγήσεις ήταν σε τόσο τεχνικούς όρους που ο νέος χρήστης αποθαρρυνόταν εύκολα από την εκμάθηση του συστήματος.
Η επιτροπή χρηστών-Linux άρχιζε να αντιλαμβάνεται ότι για να γίνει το Linux κάποτε σημαντικός ανταγωνιστής στην αγορά λειτουργικών συστημάτων, έπρεπε να γίνουν σημαντικές αλλαγές στην προσβασιμότητα του συστήματος.
Εταιρίες όπως η RedHat, η SuSE, η Mandriva (πιο πρόσφατα ή Canonical ΣτΜ) ιδρύθηκαν, παρέχοντας συσκευασμένες διανομές Linux κατάλληλες για μαζική κατανάλωση. Αυτές ολοκλήρωσαν πολλές από τις γραφικές διεπαφές χρήστη (GUI), που είχαν αναπτυχθεί από την κοινότητα, για να διευκολύνουν τη διαχείριση προγραμμάτων και υπηρεσιών. Ως χρήστης Linux σήμερα έχετε τα μέσα για να γνωρίσετε το σύστημα σας από μέσα προς τα έξω, αλλά δεν είναι πλέον απαραίτητο να έχετε αυτή τη γνώση για να κάνετε το σύστημα σας να συμμορφώνεται με τα αιτήματα σας.
Στη σημερινή εποχή μπορείτε να συνδεθείτε γραφικά και να ξεκινήσετε όλες τις απαιτούμενες εφαρμογές χωρίς καν να χρειάζεται να πληκτρολογήσετε ούτε έναν χαρακτήρα, ενώ έχετε ακόμη την δυνατότητα να έχετε πρόσβαση στον πυρήνα του συστήματος εάν αυτό χρειάζεται. Εξαιτίας της δομής του, το Linux επιτρέπει στον χρήστη να αναπτυχθεί μέσα στο σύστημα: το Linux ταιριάζει το ίδιο σε παλιούς αλλά και νέους χρήστες. Οι νέοι χρήστες δεν εξαναγκάζονται να κάνουν δύσκολα πράγματα, ενώ οι έμπειροι χρήστες δεν εξαναγκάζονται να δουλεύουν με τον ίδιο τρόπο όπως δούλευαν όταν αρχικά ξεκίνησαν να μαθαίνουν Linux.
Όσο η ανάπτυξη στον τομέα των υπηρεσιών συνεχίζεται, σπουδαία πράγματα γίνονται για τους χρήστες υπολογιστών γραφείου, που θεωρούνται γενικά σαν την ομάδα που είναι λιγότερο πιθανό να κατανοήσει πως δουλεύει ένα σύστημα. Όσοι αναπτύσσουν εφαρμογές υπολογιστών γραφείου καταβάλουν απίστευτες προσπάθειες να δημιουργήσουν τους πιο όμορφους υπολογιστές γραφείου που έχετε δει, ή να κάνουν την Linux μηχανή σας να μοιάζει σαν τον προηγούμενό σας MS Windows ή MacIntosh σταθμό εργασίας. Οι τελευταίες υλοποιήσεις επίσης περιλαμβάνουν υποστήριξη επιτάχυνσης 3D και υποστήριξη για συσκευές USB, ενημερώσεις του συστήματος και εγκατάσταση / ενημέρωση πακέτων λογισμικού με ένα κλικ, κ.α.. Το Linux τα έχει αυτά, και προσπαθεί να παρουσιάσει όλες τις διαθέσιμες υπηρεσίες σε λογική μορφή που μπορούν να κατανοήσουν οι συνηθισμένοι άνθρωποι. Παρακάτω βρίσκεται μια σύντομη λίστα που περιέχει μερικά σπουδαία παραδείγματα· αυτοί οι ιστοτόποι περιέχουν πολλές εικόνες που θα σας δώσουν μια ιδέα από το πως μπορεί να μοιάζει μια επιφάνεια εργασίας Linux:
Η ιδέα πίσω από το Λογισμικό Ανοικού Κώδικα είναι μάλλον απλή: όταν οι προγραμματιστές μπορούν να διαβάσουν, να διανείμουν και να αλλάξουν κώδικα, ο κώδικας θα ωριμάσει. Οι άνθρωποι μπορούν να τον υιοθετήσουν, να τον διαμορφώσουν, να τον αποσφαλματώσουν, και μπορούν αυτό να το κάνουν σε μία ταχύτητα που εκμηδενίζει την απόδοση αυτών που αναπτύσσουν λογισμικό στις συμβατικές εταιρίες. Το λογισμικό αυτό θα είναι πιο ευέλικτο και καλύτερης ποιότητας από το λογισμικό που αναπτύχθηκε χρησιμοποιώντας τα συμβατικά κανάλια, επειδή πολλοί άνθρωποι το έχουν δοκιμάσει σε πολλές διαφορετικές συνθήκες απ' ότι ο κλειστός δημιουργός λογισμικού θα μπορούσε ποτέ.
Η πρωτοβουλία για το Λογισμικό Ανοικτού Κώδικα ξεκίνησε για να ξεκαθαρίσει αυτό στον εμπορικό κόσμο, και πολύ αργά, οι εταιρίες άρχισαν να παίρνουν το μήνυμα. Ενώ πολλοί ακαδημαϊκοί και τεχνικοί είχαν ήδη πειστεί εδώ και 20 χρόνια ότι αυτός είναι ο τρόπος για να προχωρήσουμε, οι εταιρίες χρειάστηκαν εφαρμογές όπως το Διαδίκτυο για να αντιληφθούν ότι μπορούν να έχουν κέρδος από το Λογισμικό Ανοιχτού Κώδικα. Σήμερα το Linux έχει ξεπεράσει το στάδιο που ήταν αποκλειστικά ένα ακαδημαϊκό σύστημα, χρήσιμο μόνο σε μια χούφτα ανθρώπων με τεχνικό υπόβαθρο. Πλέον το Linux παρέχει περισσότερα από το λειτουργικό σύστημα: υπάρχει μια ολόκληρη υποδομή που υποστηρίζει την αλυσίδα της προσπάθειας δημιουργίας ενός λειτουργικού συστήματος, της κατασκευής και δοκιμής προγραμμάτων γι' αυτό, της προσφοράς όλων αυτών στους χρήστες, της παροχής συντήρησης, ενημερώσεων και υποστήριξης και προσαρμογών, κ.α.. Σήμερα, το Linux είναι έτοιμο να δεχθεί την πρόκληση ενός γρήγορα μεταβαλλόμενου κόσμου.
Ενώ το Linux είναι πιθανόν η πιο γνωστή πρωτοβουλία για το Λογισμικό Ανοικτού Κώδικα, υπάρχει ένα άλλο έργο το οποίο συνέβαλλε τεράστια στη δημοτικότητα του λειτουργικού συστήματος Linux. Το σχέδιο αυτό ονομάζεται SAMBA, και το επίτευγμα του είναι η αντίστροφη κατασκευή του Server Message Block (SMB)/Common Internet File System (CIFS) πρωτοκόλλου που χρησιμοποιούνταν για την εξυπηρέτηση αρχείων και εκτυπώσεων σε PCs που υποστηρίζουν MS Windows NT το OS/2, και το Linux. Τα πακέτα είναι τώρα διαθέσιμα σε κάθε σχεδόν σύστημα και παρέχουν λύσεις διασύνδεσης σε ανάμικτα περιβάλλοντα που χρησιμοποιούν πρωτόκολλα MS Windows: και διακομιστές αρχείων και εκτυπώσεων συμβατούς με Windows (μέχρι και τα WinXP).
Ίσως ακόμα πιο επιτυχημένο από το έργο SAMBA είναι το έργο του διακομιστή HTTP Apache. Ο διακομιστής εκτελείται σε UNIX, Windows NT και πολλά άλλα λειτουργικά συστήματα. Γνωστό αρχικά ως "A PAtCHy server", επειδή είναι βασισμένο σε υπάρχοντα κώδικα και σε μια σειρά από "patch files", το όνομα του ώριμου κώδικα δικαιούται να συσχετίζεται με την εγχώρια αμερικανική φυλή των Απάτσι, διάσημοι για τις ανώτερες τους ικανότητες στην πολεμική στρατηγική και την ανεξάντλητη αντοχή τους. Το Apache έχει δείξει ότι είναι ουσιαστικά ταχύτερο, πιο σταθερό και με πιο ολοκληρωμένα χαρακτηριστικά από πολλούς άλλους διακομιστές ιστού. Το Apache υποστηρίζει ιστοτόπους που δέχονται εκατομμύρια επισκέπτες κάθε μέρα, και ενώ δεν παρέχεται καμία επίσημη υποστήριξη από αυτούς που έχει αναπτυχθεί, η κοινότητα χρηστών Apache παρέχει απαντήσεις σε όλες σας τις ερωτήσεις. Η εμπορική υποστήριξη παρέχεται σήμερα από έναν τρίτων εταιρίες.
Στην κατηγορία των εφαρμογών γραφείου, είναι διαθέσιμη μια επιλογή από κλώνους του MS Office, με εύρος από μερικές μέχρι πλήρεις υλοποιήσεις των διαθέσιμων εφαρμογών σε σταθμούς εργασίας MS Windows. Αυτές οι πρωτοβουλίες βοήθησαν πολύ να γίνει το Linux αποδεκτό στην αγορά υπολογιστών γραφείου, επειδή οι χρήστες δεν χρειάζονται επιπλέον εκπαίδευση να μάθουν πως να δουλεύουν με το νέο τους σύστημα. Με τους υπολογιστές γραφείου έρχονται τα εγκώμια από τους συνήθεις χρήστες τους, και όχι μόνο τα εγκώμια, αλλά και οι συγκεκριμένες απαιτήσεις τους, οι οποίες γίνονται πιο περίπλοκες και απαιτητικές μέρα με τη μέρα.
Η κοινότητα του Ανοικτού Κώδικα, η οποία περιέχει πολλούς ανθρώπους που συνεισφέρουν για σχεδόν δέκα χρόνια, διασφαλίζει τη θέση του Linux' ως έναν σημαντικό ανταγωνιστή στην αγορά υπολογιστών όπως και γενικά στις εφαρμογές πληροφορικής. Μισθωτοί υπάλληλοι και εθελοντές δουλεύουν επιμελώς έτσι ώστε το Linux να μπορεί να διατηρήσει μια θέση στην αγορά. Όσο περισσότεροι είναι οι χρήστες, τόσο περισσότερες είναι οι ερωτήσεις. Η κοινότητα του Ανοικτού Κώδικα διασφαλίζει ότι απαντήσεις θα συνεχίσουν να φτάνουν, και παρατηρεί την ποιότητα των απαντήσεων με καχύποπτο μάτι, καταλήγοντας σε ακόμα περισσότερη σταθερότητα και προσβασιμότητα.
Η απαρίθμηση όλου του διαθέσιμου λογισμικού σε Linux είναι πέρα από την πρόθεση αυτού του οδηγού, εφόσον υπάρχουν δεκάδες χιλιάδες πακέτα. Κατά τη διάρκεια αυτής της σειράς μαθημάτων θα σας παρουσιάσουμε τα πιο συνηθισμένα πακέτα, τα οποία είναι σχεδόν όλα διαθέσιμα δωρεάν. Για να αφαιρέσουμε κάποιο από το φόβο του αρχάριου χρήστη, υπάρχει εδώ μια εικόνα από ένα από τα πιο δημοφιλή προγράμματα. Μπορείτε και μόνοι σας να δείτε ότι καταβλήθηκε κάθε προσπάθεια ώστε οι χρήστες που προέρχονται από τα Windows να νιώσουν άνετα.
Εικόνα 1-1. Λογιστικό φύλλο του OpenOffice
Περισσότερα για το OpenOffice.
Πολλά από τα πλεονεκτήματα του Linux αποτελούν συνέπεια της προέλευσης του, που είναι βαθιά ριζωμένη στο UNIX, εκτός από το πρώτο πλεονέκτημα, φυσικά:
Το Linux είναι δωρεάν: Όπως στην δωρεάν μπύρα, λένε. Εάν δεν θέλετε να ξοδέψετε απολύτως τίποτα, δεν χρειάζεται να πληρώσετε ούτε την τιμή του CD. Το Linux μπορεί να μεταφορτωθεί στο σύνολο του από το Διαδίκτυο εντελώς δωρεάν. Ούτε αμοιβές εγγραφής, ούτε δαπάνες ανά χρήστη, δωρεάν αναβαθμίσεις, και δωρεάν διαθέσιμος πηγαίος κώδικας σε περίπτωση που θέλετε να μεταβάλετε τη συμπεριφορά του συστήματος σας.
Κυρίως, το Linux είναι δωρεάν όπως ο ελεύθερος λόγος:
Η άδεια χρήσης που χρησιμοποιείται συχνά είναι η Δημόσια Άδεια GNU (GPL). Η αδειοδότηση αυτή λέει ότι οποιοσδήποτε θελήσει, έχει το δικαίωμα να αλλάξει το Linux και τελικά να επαναδιανείμει μια διαφοροποιημένη έκδοση, με τον όρο ότι ο κώδικας θα είναι ακόμα διαθέσιμος μετά την επαναδιανομή. Πρακτικά, είστε ελεύθεροι να αρπάξετε μια εικόνα του πυρήνα, για παράδειγμα να προσθέσετε υποστήριξη για μηχανές τηλεμεταφοράς ή ταξιδιών στο χρόνο και να πουλήσετε το νέο σας κώδικα, εφόσον οι πελάτες σας μπορούν να έχουν ακόμη ένα αντίγραφο αυτού του κώδικα.
Το Linux είναι μεταφέρσιμο σε κάθε πλατφόρμα υλικού: Ένας πωλητής που θέλει να πουλήσει έναν νέο τύπο υπολογιστή και δε γνωρίζει τι τύπο λειτουργικού συστήματος θα τρέξει το νέο μηχάνημα (ας πούμε η CPU στο αυτοκίνητο ή στο πλυντήριο σας), μπορεί να πάρει έναν πυρήνα Linux και να τον κάνει να δουλέψει στο υλικό του, επειδή η τεκμηρίωση που σχετίζεται με αυτήν την δραστηριότητα είναι διαθέσιμη δωρεάν.
Το Linux φτιάχτηκε για να συνεχίσει να εκτελείται: Όπως με το UNIX, ένα σύστημα Linux αναμένεται να εκτελείται χωρίς να χρειάζεται επανεκκίνηση όλη την ώρα. Αυτός είναι ο λόγος που πολλές εργασίες εκτελούνται τη νύχτα ή προγραμματίζονται αυτόματα για άλλες ήρεμες στιγμές, καταλήγοντας σε μεγαλύτερη διαθεσιμότητα κατά τη διάρκεια πολυάσχολων περιόδων και σε πιο ισορροπημένη χρήση του υλικού. Η ιδότητα αυτή επιτρέπει στο Linux να είναι επίσης εφαρμόσιμο σε περιβάλλοντα όπου οι άνθρωποι δεν έχουν το χρόνο ή τη δυνατότητα να ελέγχουν τα συστήματα τους μέρα νύχτα.
Το Linux είναι ασφαλές και ευπροσάρμοστο: Το μοντέλο ασφαλείας που χρησιμοποιείται στο Linux βασίζεται στην ιδέα του UNIX για ασφάλεια, που είναι γνωστό ότι είναι δυνατή και αποδεδειγμένης ποιότητας. Όμως το Linux δεν ταιριάζει μόνο για χρήση ως οχυρό εναντίων εχθρικών επιθέσεων από το Διαδίκτυο: θα προσαρμοστεί εξίσου και σε άλλες καταστάσεις, χρησιμοποιώντας τα ίδια υψηλά πρότυπα ασφαλείας. Το μηχάνημα που χρησιμοποιείτε ή ο σταθμός ελέγχου σας θα είναι τόσο ασφαλής όσο το τείχος προστασίας(firewall) σας.
Το Linux είναι κλιμακωτό: Από ένα Palmtop με μνήμη 2 MB μέχρι ένα συγκρότημα αποθήκευσης σε petabyte με εκατοντάδες κόμβους: προσθέστε ή αφαιρέστε τα κατάλληλα πακέτα και το Linux ταιριάζει παντού. Δεν χρειάζεστε ένα σούπερ-υπολογιστή πια, επειδή μπορείτε να χρησιμοποιήσετε το Linux να κάνει τα δύσκολα πράγματα χρησιμοποιώντας τούς οικοδομικούς λίθους που παρέχονται από το σύστημα. Εάν θέλετε να κάνετε μικρά πράγματα, όπως να φτιάξετε ένα λειτουργικό σύστημα για έναν ενσωματωμένο επεξεργαστή η να ανακυκλώσετε το παλιό σας 486, το Linux θα το κάνει επίσης και αυτό.
Το λειτουργικό σύστημα Linux και αρκετές Linux εφαρμογές αποσφαλματώνονται σε πολύ σύντομο χρόνο: Επειδή το Linux αναπτύχθηκε και εξετάστηκε από χιλιάδες ανθρώπους, τόσο τα λάθη όσο και οι άνθρωποι που τα διορθώνουν εντοπίζονται συνήθως αρκετά γρήγορα. Μερικές φορές συμβαίνει να υπάρχουν μόνο δύο ώρες διαφορά μεταξύ την εύρεση και τη διόρθωση του σφάλματος.
Υπάρχουν πολλές διαφορετικές διανομές: "Quot capites, tot rationes", όπως έχουν ήδη πει οι Ρωμαίοι: όσο περισσότεροι οι άνθρωποι, τόσο περισσότερες οι γνώμες. Με μια πρώτη ματιά, ο αριθμός των διανομών Linux μπορεί να είναι τρομακτικός, ή γελοίος· εξαρτάται από την οπτική σας γωνία. Αυτό όμως σημαίνει επίσης ότι ο καθένας θα βρει αυτό που χρειάζεται. Δεν χρειάζεται να είστε ειδήμονες για να βρείτε την κατάλληλη έκδοση.
Όταν ερωτάται, γενικά κάθε χρήστης Linux θα πει ότι η καλύτερη διανομή είναι η συγκεκριμένη διανομή που χρησιμοποιεί. Οπότε ποια θα έπρεπε να επιλεγεί? Μην ανησυχείτε τόσο γι' αυτό: όλες οι εκδόσεις περιέχουν πάνω κάτω το ίδιο σετ βασικών πακέτων. Πάνω από τα βασικά πακέτα, προστίθεται ειδικό έμμεσα συσχετιζόμενο λογισμικό κάνοντας, για παράδειγμα, το TurboLinux καταλληλότερο για μικρές και μεσαίες επιχειρήσεις, το RedHat για διακομιστές και τα SuSE(, Mandriva, Ubuntu StM) για σταθμούς εργασίας. Παρόλα αυτά, οι διαφορές τείνουν να είναι επιπόλαιες. Η καλύτερη στρατηγική είναι να εξετάσετε μερικές διανομές· δυστυχώς δεν έχουν όλοι το χρόνο για αυτό. Ευτυχώς, υπάρχει πληθώρα συμβουλών για το θέμα της επιλογής του Linux σας. Μια γρήγορη αναζήτηση στο Google, χρησιμοποιώντας τις λέξεις-κλειδιά "choosing your distribution"(“επιλέγοντας τη διανομή σας”) φέρνει δεκάδες link με καλές συμβουλές. Το Installation HOWTO επίσης συζητά για την επιλογή της διανομής σας.
Το Linux δεν είναι πολύ φιλικό για το χρήστη και μπερδεύει τους πρωτάρηδες: Πρέπει να ειπωθεί ότι το Linux, τουλάχιστον το σύστημα του πυρήνα, είναι λιγότερο φιλικό προς το χρήστη από το MS Windows και σίγουρα πιο δύσκολο από το MacOS, αλλά... Στον απόηχο της δημοτικότητας του, έχει γίνει αξιοσημείωτη προσπάθεια να γίνει το Linux ακόμα ευκολότερο στη χρήση, ειδικά για νέους χρήστες. Περισσότερες πληροφορίες εμφανίζονται καθημερινά, όπως αυτός ο οδηγός, για να βοηθήσουν να μειωθεί το κενό από χρήστες με διαθέσιμη τεκμηρίωση σε χρήστες όλων των επίπεδων.
Είναι ένα προϊόν Ανοικτού Κώδικα αξιόπιστο? Πως μπορεί κάτι που είναι δωρεάν να είναι επίσης και αξιόπιστο? Οι χρήστες Linux έχουν την επιλογή ή να χρησιμοποιήσουν Linux ή όχι, που τους δίνει ένα τεράστιο πλεονέκτημα σε σύγκριση με χρήστες ιδιόκτητου λογισμικού, που δεν έχουν αυτού του είδους την ελευθερία. Μετά από μακρές περιόδους δοκιμών, οι περισσότεροι χρήστες Linux φτάνουν στο συμπέρασμα ότι το Linux δεν είναι μόνο το ίδιο καλό, αλλά πολλές φορές καλύτερο και ταχύτερο από τις παραδοσιακές λύσεις. Εάν το Linux δεν ήταν αξιόπιστο, θα χανόταν σύντομα, χωρίς να γνωρίσει τη δημοτικότητα που έχει τώρα, με εκατομμύρια χρήστες. Τώρα οι χρήστες μπορούν να επηρεάσουν τα συστήματα τους και να μοιραστούν τις παρατηρήσεις τους με την κοινότητα, έτσι ώστε το σύστημα να βελτιώνεται κάθε μέρα. Είναι ένα σχέδιο που δεν είναι ποτέ τελειωμένο, αυτό είναι αλήθεια, αλλά σε ένα διαρκώς μεταβαλλόμενο περιβάλλον, το Linux είναι επίσης ένα σχέδιο που συνεχίζει να αγωνίζεται για τελειότητα.
Παρόλο που υπάρχει μεγάλος αριθμός υλοποιήσεων Linux, θα βρείτε πολλές ομοιότητες σε διαφορετικές διανομές, επειδή κάθε μηχάνημα Linux είναι ένα κτίσμα με οικοδομικούς λίθους τα οποία μπορείτε να ενώσετε ακολουθώντας τις ανάγκες και την κρίση σας. Η εγκατάσταση του συστήματος είναι μόνο η αρχή μιας μακρόχρονης σχέσης. Ακριβώς όταν νομίσετε ότι έχετε ένα ωραίο λειτουργικό σύστημα, το Linux θα διεγείρει τη φαντασία και τη δημιουργικότητα σας, και όσο περισσότερο αντιλαμβάνεστε τη δύναμη που μπορεί να σας δώσει το σύστημα, τόσο περισσότερο θα προσπαθήσετε να επαναπροσδιορίσετε τα όρια του.
Το Linux μπορεί να φαίνεται διαφορετικό ανάλογα με τη διανομή, το υλικό και το προσωπικό σας γούστο, αλλά οι βασικές αρχές στις οποίες χτίζονται όλες οι γραφικές και οι άλλες διασυνδέσεις, παραμένουν οι ίδιες. Το σύστημα Linux βασίζεται στα GNU εργαλεία (το Gnu Δεν είναι UNIX), που παρέχουν ένα σύνολο από καθορισμένους τρόπους χειρισμού και χρήσης του συστήματος. Όλα τα εργαλεία GNU είναι Ανοιχτού Κώδικα, οπότε μπορούν να εγκατασταθούν σε κάθε σύστημα. Οι περισσότερες διανομές προσφέρουν προ-μεταγλωττισμένα πακέτα από τα πιο συχνά εργαλεία, όπως πακέτα RPM σε RedHat και πακέτα Debian (αποκαλούμενα επίσης deb ή dpkg) σε Debian, οπότε δεν χρειάζεται να είστε προγραμματιστές για να εγκαταστήσετε ένα πακέτο στο σύστημα σας. Παρόλαυτα, αν κάνετε και σας αρέσει να κάνετε πράγματα μόνοι σας, θα απολαύσετε το Linux ακόμα περισσότερο, εφόσον οι περισσότερες διανομές περιέχουν ένα πλήρες σετ από εργαλεία ανάπτυξης, επιτρέποντας την εγκατάσταση νέου λογισμικού καθαρά από τον πηγαίο κώδικα. Το στήσιμο αυτό σας επιτρέπει επίσης να εγκαταστήσετε λογισμικό ακόμα και αν δεν υπάρχει σε προ-πακεταρισμένη μορφή κατάλληλη για το σύστημα σας.
Μία λίστα συνηθισμένου GNU λογισμικού:
Bash: Ο φλοιός GNU
GCC: Ο GNU Μεταγλωττιστής C
GDB: Ο Αποσφαλματωτής GNU
Coreutils: ένα σετ βασικών βοηθημάτων του UNIX στυλ, όπως ls, cat και chmod
Findutils: για αναζήτηση και εύρεση αρχείων
Fontutils: για μετατροπή γραμματοσειρών από μια μορφοποίηση σε άλλη ή για δημιουργία νέων γραμματοσειρών
Το Gimp: GNU Image Manipulation Program (Πρόγραμμα Χειρισμού Εικόνων GNU)
Gnome: Το περιβάλλον επιφάνειας εργασίας GNU
Emacs: ένας πολύ δυνατός επεξεργαστής κειμένου
Ghostscript και Ghostview: διερμηνευτής και γραφικό frontend για αρχεία PostScript.
GNU Photo: λογισμικό για αλληλεπίδραση με ψηφιακές κάμερες
Octave: μια γλώσσα προγραμματισμού, με κύριο σκοπό την πραγματοποίηση αριθμητικών υπολογισμών και την επεξεργασία εικόνων.
GNU SQL: συσχετιστικό σύστημα βάσεων δεδομένων
Radius: ένας απομακρυσμένος server πιστοποίησης και υπολογισμών
...
Πολλές εμπορικές εφαρμογές είναι διαθέσιμες για Linux, και για περισσότερες πληροφορίες σχετικά με αυτά τα πακέτα αναφερόμαστε στην ειδική τους τεκμηρίωση. Σε αυτό τον οδηγό θα συζητήσουμε μόνο για δωρεάν διαθέσιμο λογισμικό, το οποίο υπάρχει (στις περισσότερες περιπτώσεις) με αδειοδότηση GNU.
Για να εγκαταστήσετε παραλειπόμενα ή νέα πακέτα, θα χρειαστείτε κάποιο τύπο διαχείρισης λογισμικού. Οι πιο κοινές υλοποιήσεις περιλαμβάνουν τα RPM και dpkg. Το RPM είναι ο διαχειριστής πακέτων του RedHat (RedHat Package Manager), που χρησιμοποιείται σε πληθώρα συστημάτων Linux, ακόμα και αν το όνομα του δεν το υποδηλώνει αυτό. Το Dpkg είναι το σύστημα διαχείρισης πακέτων του Debian, το οποίο χρησιμοποιεί μια διασύνδεση που ονομάζεται apt-get, η οποία μπορεί επίσης να διαχειριστεί και τα πακέτα RPM. Το Novell Ximian Red Carpet είναι μια έμμεσα συσχετιζόμενη υλοποίηση του RPM με γραφικό front-end. Άλλοι πωλητές σχετικού λογισμικού μπορεί να έχουν τις δικές τους διαδικασίες εγκατάστασης, που μερικές φορές παρομοιάζονται με το InstallShield και άλλα, όπως είναι γνωστό για το MS Windows και άλλες πλατφόρμες (πχ ο Synaptic Package Manager του Ubuntu, ΣτΜ). Όσο προχωράτε με το Linux, πιθανόν θα έρθετε σε επαφή με ένα ή περισσότερα από αυτά τα προγράμματα.
Ο πυρήνας Linux (ο σκελετός του συστήματος σας, δείτε την Ενότητα 3.2.3.1) δεν είναι τμήμα του σχεδίου GNU αλλά χρησιμοποιεί την ίδια αδειοδότηση με το GNU λογισμικό. Μία πληθώρα βοηθημάτων και εργαλείων ανάπτυξης (η σάρκα του συστήματος σας), τα οποία δεν είναι ειδικευμένα για το Linux, έχουν ληφθεί από το σχέδιο GNU. Επειδή κάθε χρησιμοποιήσιμο σύστημα πρέπει να περιέχει τόσο τον πυρήνα όσο και ένα ελάχιστο σετ από βοηθήματα, μερικοί υποστηρίζουν ότι ένα τέτοιο σύστημα πρέπει να αποκαλείται GNU/Linux σύστημα.
Για να διατηρηθεί ο μεγαλύτερος δυνατός βαθμός ανεξαρτησίας μεταξύ των διανομών, αυτό θα είναι το είδος του Linux που θα συζητήσουμε σ' αυτήν την σειρά μαθημάτων. Εάν δεν μιλάμε για ένα γενικό GNU/Linux σύστημα, τότε θα αναφέρεται το όνομα της συγκεκριμένης διανομής, έκδοσης ή προγράμματος.
Πριν την εγκατάσταση, ο σημαντικότερος παράγοντας είναι το υλικό σας. Εφόσον κάθε διανομή Linux περιέχει τα βασικά πακέτα και και μπορεί να διαμορφωθεί για να ανταποκρίνεται σε όλες τις απαιτήσεις (επειδή όλες χρησιμοποιούν τον πυρήνα Linux), χρειάζεται μόνο να σκεφτείτε αν η διανομή θα εκτελεστεί στο υλικό σας. Το LinuxPPC για παράδειγμα έχει δημιουργηθεί για να εκτελείται σε MacIntosh και άλλα PowerPCs και δεν εκτελείται σε ένα συνηθισμένο x86 PC. Το LinuxPPC εκτελείται στο νέο Mac, αλλά δεν μπορείτε να το χρησιμοποιήσετε σε κάποιο από τα παλαιότερα με την πολύ παλιά τεχνολογία διαύλου. Μια ακόμα περίπλοκη περίπτωση είναι το υλικό της Sun, το οποίο θα μπορούσε να είναι μια παλιά SPARC CPU ή μια νεότερη UltraSparc, όπου και οι δύο απαιτούν διαφορετικές εκδόσεις του Linux.
Σύμφωνα με τη Wikipedia (http://en.wikipedia.org/wiki/Linux_distributions), σήμερα έχουν καταγραφεί περισσότερες από 300 διανομές Linux, οι οποίες είναι στην πλειοψηφία τους ενεργές (βρίσκονται υπό ανάπτυξη). Κάποιες διανομές Linux είναι βελτιστοποιημένες για συγκεκριμένους επεξεργαστές, όπως οι Athlon CPU, ενώ ταυτόχρονα θα τρέχουν αρκετά ευπρεπώς σε κλασικούς 486, 586 και 686 επεξεργαστές Intel. Μερικές φορές διανομές για ειδικές CPU δεν είναι τόσο αξιόπιστες, εφόσον έχουν εξεταστεί από λιγότερα άτομα.
Οι περισσότερες διανομές Linux προσφέρουν ένα σύνολο προγραμμάτων για γενικής χρήσης PC με ειδικά πακέτα που περιέχουν βελτιστοποιημένους πυρήνες για τις x86 Intel CPU. Οι διανομές αυτές είναι πολύ καλά δοκιμασμένες και συντηρούμενες σε τακτική βάση, ενώ εστιάζονται σε αξιόπιστες υλοποιήσεις διακομιστών και εύκολη εγκατάσταση και διαδικασίες αναβάθμισης. Παραδείγματα είναι τα Debian, Ubuntu, Fedora, SuSE, Mandriva (και Ubuntu ΣτΜ) τα οποία είναι μακράν τα πιο δημοφιλή συστήματα Linux και θεωρούνται γενικά εύκολα στη χρήση για τους αρχάριους χρήστες, χωρίς να εμποδίζουν τους επαγγελματίες να πάρουν τη μέγιστη απόδοση από τις Linux μηχανές τους. Το Linux τρέχει επίσης ευπρεπώς σε φορητούς και διακομιστές. Οι οδηγοί για νέο υλικό περιλαμβάνονται μόνο μετά από εκτεταμένες δοκιμές, το οποίο συμβάλλει στη σταθερότητα του συστήματος.
Ενώ η πρότυπη επιφάνεια εργασίας μπορεί να είναι Gnome σε ένα σύστημα, ένα άλλο μπορεί να προσφέρει KDE προεπιλεγμένα. Γενικά, τόσο το Gnome όσο και το KDE είναι διαθέσιμα για όλες τις σημαντικές διανομές Linux. Άλλοι διαχειριστές παραθύρων και επιφάνειας εργασίας είναι διαθέσιμοι για πιο προχωρημένους χρήστες.
Η πρότυπη διαδικασία εγκατάστασης επιτρέπει στους χρήστες να επιλέξουν μεταξύ διαφορετικών βασικών συστημάτων, όπως ένας σταθμός εργασίας, όπου όλα τα πακέτα που χρειάζονται για καθημερινή χρήση και ανάπτυξη είναι εγκατεστημένα, ή μια εγκατάσταση server, όπου μπορούν να επιλεγούν διαφορετικές υπηρεσίες δικτύου. Οι έμπειροι χρήστες μπορούν να εγκαταστήσουν όποιον συνδυασμό πακέτων θέλουν κατά τη διάρκεια της αρχικής διαδικασίας εγκατάστασης.
Ο στόχος του οδηγού αυτού είναι να εφαρμόζεται σε όλες τις διανομές Linux. Ωστόσο, για τη δική σας διευκόλυνση, προτείνεται ανεπιφύλακτα στους πρωτάρηδες να εμμείνουν σε μια κύρια διανομή, που υποστηρίζει προεπιλεγμένα όλο το συνηθισμένο υλικό και τις εφαρμογές. Η λίστα που ακολουθεί περιλαμβάνει κάποιες δημοφιλείς διανομές Linux:
ISO-εικόνες που μπορούν να φορτωθούν από το Ίντερνετ μπορούν να ληφθούν από το LinuxISO.org. Οι κύριες διανομές μπορούν να αποκτηθούν από κάθε αξιπρεπές κατάστημα υπολογιστών.
Μπορείτε να επισκεφθείτε την σελίδα distrowatch.com, και να δείτε ειδήσεις, την ταξινόμηση δημοτικότητας, και άλλες γενικές πληροφορίες για τις διάφορες διανομές Linux.Σε αυτό το κεφάλαιο, ότι:
Το Linux είναι μια υλοποίηση του UNIX.
Το λειτουργικό σύστημα Linux είναι γραμμένο στη γλώσσα προγραμματισμού C.
"De gustibus et coloribus non disputandum est": υπάρχει ένα Linux για τον καθένα.
Το Linux χρησιμοποιεί εργαλεία GNU, ένα σετ από δωρεάν διαθέσιμα κύρια εργαλεία χειρισμού του λειτουργικού συστήματος.
Μια πρακτική άσκηση για αρχάριους: εγκαταστήστε το Linux στο PC σας. Διαβάστε το εγχειρίδιο εγκατάστασης για τη διανομή σας και/ή το Installation HOWTO και κάντε το:
|
|
---|---|
|
|
Διαβάστε τη τεκμηρίωση! |
|
---|---|
|
Τα περισσότερα λάθη προέρχονται από τη μη ανάγνωση των πληροφοριών που παρέχονται κατά τη διάρκεια της εγκατάστασης. Η προσεκτική ανάγνωση των μηνυμάτων εγκατάστασης είναι το πρώτο βήμα στο δρόμο της επιτυχίας. |
Πράγματα που πρέπει να γνωρίζετε ΠΡΙΝ ξεκινήσετε την εγκατάσταση του Linux:
Θα τρέξει η διανομή αυτή στο υλικό μου?
Ελέγξτε στο http://www.tldp.org/HOWTO/Hardware-HOWTO/index.html αν αμφιβάλλετε για τη συμβατότητα του υλικού σας.
Τι είδους πληκτρολόγιο έχω (αριθμό πλήκτρων, διάταξη)? Τι είδους ποντίκι (σειριακό/παράλληλο, αριθμό κουμπιών)? Πόσα MB της RAM?
Θα εγκαταστήσω ένα βασικό σταθμό εργασίας ή ένα διακομιστή, ή θα χρειαστεί να επιλέξω συγκεκριμένα πακέτα μόνος μου?
Θα το εγκαταστήσω από το σκληρό μου δίσκο, από το CD-ROM, ή χρησιμοποιώντας το διαδίκτυο? Θα πρέπει να προσαρμόσω το BIOS για κανένα από αυτά? Περιλαμβάνει η μέθοδος εγκατάστασης επανεκκίνηση δίσκου?
Θα είναι το Linux το μόνο σύστημα σε αυτόν τον υπολογιστή, ή θα είναι μια διπλή εγκατάσταση? Θα πρέπει να φτιάξω ένα μεγάλο διαμέρισμα για να εγκαταστήσω εικονικά συστήματα αργότερα, ή είναι αυτή μια εικονική εγκατάσταση από μόνη της?
Είναι αυτός ο υπολογιστής στο δίκτυο? Ποιο είναι το όνομα του διακομιστή του, η διεύθυνση IP? Υπάρχουν καθόλου gateway servers ή άλλες σημαντικές μηχανές στο διαδίκτυο που το κουτί μου θα πρέπει να επικοινωνεί?
Το Linux περιμένει να δικτυωθεί. |
|
---|---|
|
Η μη χρήση Διαδικτύου ή η λάθος διαμόρφωσή του μπορεί να προκαλεί καθυστέρηση στην εκκίνηση. |
Είναι ο υπολογιστής αυτός ένα gateway/router/firewall? (Εάν χρειάζεται να σκεφτείτε για αυτή την ερώτηση, πιθανόν δεν είναι)
Διαμέριση: αφήστε το πρόγραμμα εγκατάστασης να το κάνει για σας αυτή τη φορά, θα συζητήσουμε τα διαμερίσματα λεπτομερώς στο Κεφάλαιο 3. Υπάρχει μια, ειδική για συστήματα, διαθέσιμη τεκμηρίωση αν θέλετε να γνωρίζετε τα πάντα γι' αυτό. Αν η διανομή Linux σας δεν προσφέρει προεπιλεγμένη διαμέριση, αυτό μάλλον σημαίνει ότι δεν είναι κατάλληλη για αρχάριους.
Θα ξεκινήσει αυτό το μηχάνημα σε κατάσταση κειμένου ή σε γραφική μορφή?
Σκεφτείτε έναν καλό κωδικό για το διαχειριστή του μηχανήματος αυτού (root). Δημιουργείστε έναν μη-root λογαριασμό χρήστη (μη-προνομιακή πρόσβαση στο σύστημα).
Χρειάζομαι έναν δίσκο διάσωσης? (προτεινόμενο)
Ποιες γλώσσες θέλω?
Η πλήρης λίστα μπορεί να βρεθεί στο http://www.tldp.org/HOWTO/Installation-HOWTO/index.html.
Στα επόμενα κεφάλαια θα ανακαλύψουμε εάν η εγκατάσταση ήταν επιτυχής.
Για να αποκομίσετε τα μέγιστα από αυτό τον οδηγό, ξεκινούμε αμέσως με ένα πρακτικό κεφάλαιο σχετικό με τη σύνδεση σε ένα σύστημα Linux και την εκτέλεση μερικών βασικών δραστηριοτήτων.
Θα συζητήσουμε τα παρακάτω:
Για να δουλέψετε σε ένα σύστημα Linux αμέσως, θα χρειαστεί να ορίσετε ένα όνομα χρήστη (login name) και ένα συνθηματικό (password). Πάντα πρέπει να πιστοποιείτε την ταυτότητά σας στο σύστημα. Οι περισσότεροι υπολογιστές που είναι βασισμένοι σε συστήματα Linux έχουν δύο βασικές επιλογές διεπαφής χρήστη, μια γρήγορη και λιτή στη μορφή κειμένου σε γραμμή εντολών (κονσόλα) -που μοιάζει σαν DOS με ποντίκι, με χαρακτηριστικά πολυδιεργασίας και πολυχρησίας- και μια γραφική, που φαίνεται καλύτερη αλλά δαπανά περισσότερους πόρους του συστήματος.
Στις μέρες μας αυτή είναι η προεπιλογή στους περισσότερους υπολογιστές. Γνωρίζετε ότι θα συνδεθείτε στο σύστημα χρησιμοποιώντας γραφική μορφή όταν πρώτα το σύστημα σας ζητά το όνομα χρήστη, και μετά, πιθανώς σε ένα καινούργιο παράθυρο, να πληκτρολογήσετε τον συνθηματικό σας.
Για να συνδεθείτε, βεβαιωθείτε ότι ο δείκτης του ποντικιού βρίσκεται μέσα στο παράθυρο εισόδου, δώστε το όνομα χρήστη και τον συνθηματικό σας στο σύστημα και κάντε κλικ στο OK ή πατήστε Enter.
Προσοχή με το λογαριασμό (υπερ-χρήστη) root !Αφού εισάγετε τον συνδυασμό ονόματος/συνθηματικού σας, μπορεί να πάρει λίγο χρόνο πριν το γραφικό περιβάλλον ξεκινήσει, εξαρτάται από την ταχύτητα της CPU του υπολογιστή σας, το λογισμικό που χρησιμοποιείτε και τις προσωπικές σας ρυθμίσεις.
Για να συνεχίσετε θα χρειαστεί να ανοίξετε ένα παράθυρο τερματικού, terminal window ή xterm για συντομία (X είναι το όνομα του λογισμικού που υποστηρίζει το γραφικό περιβάλλον). Το πρόγραμμα βρίσκεται στη θέση Εφαρμογές->Βοηθήματα->Τερματικό (σε linux Ubuntu) ή και κάπου αλλού, εξαρτάται και από το διαχειριστή παραθύρων που χρησιμοποιείται. Μπορεί να υπάρχουν εικονίδια τα οποία μπορείτε να χρησιμοποιήσετε σαν συντόμευση για να ανοίξετε ένα τερματικό εξίσου καλά, και κάνοντας δεξί κλικ στην επιφάνεια εργασίας συνήθως εμφανίζεται ένα μενού που μπορεί να περιέχει και την εκκίνηση παραθύρου τερματικού.
Καθώς περιηγείστε στα μενού, θα παρατηρήσετε πως πολλά πράγματα μπορούν να γίνουν χωρίς να εισάγετε εντολές από το πληκτρολόγιο. Για τους περισσότερους χρήστες, η παλιά καλή μέθοδος επικοινωνίας με point-n-click ισχύει, αλλά αυτός ο οδηγός απευθύνεται σε μελλοντικούς διαχειριστές συστημάτων και δικτύων, οι οποίοι θα χρειάζεται να επεμβαίνουν στην «καρδιά» του συστήματος. Χρειάζονται ένα πιο ισχυρό εργαλείο από ένα ποντίκι για να χειρίζονται όλες τις δυσκολίες που θα αντιμετωπίσουν. Αυτό το εργαλείο είναι το κέλυφος, και όταν βρισκόμαστε σε γραφική μορφή, ενεργοποιούμε το κέλυφός μας ανοίγοντας ένα τερματικό.
Το κέλυφος εντολών αποτελεί επίσης μια διεπαφή προς τους χρήστες του υπολογιστή (όπως και το περιβάλλον επιφάνειας εργασίας), η οποία ωστόσο δεν περιλαμβάνει γραφικά. Ο χρήστης αλληλεπιδρά με το σύστημα πληκτρολογώντας εντολές των οποίων τη σύνταξη πρέπει να γνωρίζει ή να είναι σε θέση να την εντοπίσει στο σύστημα βοήθειας. Κάθε κέλυφος εντολών χαρακτηρίζεται από το σύνολο των εντολών και των λοιπών δυνατοτήτων σύνταξης που παρέχει στους χρήστες και για το λόγο αυτό υπάρχουν διαφορετικών είδη shells.Το τερματικό είναι ο πίνακας ελέγχου σας για το σύστημα. Στο παράθυρο που εμφανίζεται μπορείτε να πληκτρολογείτε τις εντολές και να λαμβάνετε την απόκριση από το σύστημα. Η ένδειξη ubuntu@ubuntu:~$ αποτελεί το προτρεπτικό σήμα (prompt) του κελύφους εντολών και εξηγείται ως εξής:
[όνομα_χρήστη]@[όνομα_υπολογιστή]:[τρέχων κατάλογος][σύμβολο_προτροπής]Εικόνα 2-1. Παράθυρο τερματικού
Μια άλλη κοινή μορφή προτροπής είναι η:
[user@host dir]Στο παραπάνω παράδειγμα, user θα είναι το όνομα χρήστη, host το όνομα του υπολογιστή στο οποίο εργάζεστε , και dir μια ένδειξη για την τρέχουσα θέση σας στο σύστημα.
Αργότερα θα συζητήσουμε τις προτροπές και τη συμπεριφορά τους με λεπτομέρειες. Προς το παρόν, φτάνει να γνωρίζουμε ότι οι προτροπές μπορούν να εμφανίσουν όλα τα είδη πληροφορίας, πλην εκείνων που δεν είναι μέρος εντολών που δίνεται στο σύστημα.
Για να αποσυνδεθείτε από το σύστημα στην γραφική μορφή, χρειάζεται να κλείσετε όλα τα τερματικά και άλλες εφαρμογές. Κατόπιν πατήστε το κουμπί της εξόδου ή βρείτε την Αποσύνδεση στο μενού. Στην πραγματικότητα δεν είναι απαραίτητο να κλείσετε τα πάντα, μπορεί και το σύστημα να το κάνει αυτό για εσάς, αλλά η διαχείριση συνόδου πρέπει να βάλει όλες τις τρέχουσες εφαρμογές πίσω στην οθόνη μόλις συνδεθείτε ξανά, το οποίο παίρνει περισσότερο χρόνο και δεν έχει πάντα το επιθυμητό αποτέλεσμα. Ωστόσο, αυτή η συμπεριφορά είναι διαμορφώσιμη.
Αν δείτε την οθόνη εισόδου ξανά, ζητώντας σας να εισάγετε πάλι όνομα χρήστη και συνθηματικό, η αποσύνδεση έγινε με επιτυχία.
Gnome ή KDE; |
|
---|---|
|
Αναφέραμε τις δύο επιφάνειες εργασίας, Gnome και KDE, ήδη μια-δυο φορές. Αυτοί είναι οι δύο πιο δημοφιλείς τρόποι διαχείρισης της επιφάνειας εργασίας του υπολογιστή σας, αν και υπάρχουν πολλοί, πολλοί άλλοι. Με οποιοδήποτε διαχειριστή και αν επιλέξετε να εργαστείτε είναι το ίδιο – εφόσον γνωρίζετε πώς να ανοίξετε ένα παράθυρο τερματικού. Ωστόσο, θα συνεχίσουμε να αναφερόμαστε στα Gnome και KDE ως τις πιο δημοφιλείς μεθόδους για την εκτέλεση συγκεκριμένων εργασιών. |
Γνωρίζετε ότι βρίσκεστε σε κατάσταση διεπαφής κειμένου όταν ολόκληρη η οθόνη είναι μαύρη, εμφανίζοντας (τις περισσότερες φορές λευκούς) χαρακτήρες. Μια οθόνη εισόδου σε μορφή κειμένου τυπικά εμφανίζει μερικές πληροφορίες για το μηχάνημα στο οποίο εργάζεστε, το όνομά του και μια προτροπή η οποία περιμένει από εσάς να συνδεθείτε:
RedHat Linux Release 8.0 (Psyche) blast login: _ |
Η σύνδεση είναι διαφορετική από την είσοδο σε γραφική μορφή, εδώ πρέπει να πατήσετε Enter αφού πρώτα δώσετε το όνομα χρήστη, επειδή δεν υπάρχουν κουμπιά στην οθόνη τα οποία μπορείς να κάνεις κλικ με το ποντίκι. Εν συνεχεία πρέπει να πληκτρολογήσετε το συνθηματικό σας, ακολουθούμενο από ένα ακόμα Enter. Δεν πρόκειται να δείτε κάποια ένδειξη ότι έχετε εισάγει κάτι, ούτε καν έναν αστερίσκο, και δεν θα δείτε τον δρομέα να κινείται. Αλλά αυτό είναι λογικό στο Linux και γίνεται για λόγους ασφαλείας.
Όταν το σύστημα σας δεχτεί ως έγκυρο χρήστη μπορείτε να πάρετε κάποιες πληροφορίες , το αποκαλούμενο μήνυμα της ημέρας, το οποίο μπορεί να είναι οτιδήποτε. Επιπλέον, είναι δημοφιλές στα συστήματα UNIX να εμφανίζεται ένα 'μπισκοτάκι της τύχης', το οποίο περιέχει κάποιες γενικές λογικές ή παράλογες (αυτό εξαρτάται από εσάς) ιδέες. Κατόπιν θα σας δοθεί ένα κέλυφος, υποδεικνύοντας την ίδια προτροπή που θα είχατε στο παράθυρο τερματικού σε γραφική μορφή.
Μην συνδέεστε σαν υπερ-χρήστης (root)Η αποσύνδεση γίνεται εισάγοντας την εντολή logout, ακολουθούμενη από Enter. Έχετε αποσυνδεθεί επιτυχώς από το σύστημα όταν δείτε την οθόνη εισόδου ξανά.
Ο διακόπτης παροχής ρεύματος |
|
---|---|
|
Αν και το Linux δε σχεδιάστηκε να σταματά την λειτουργία του χωρίς εφαρμογή των κατάλληλων διαδικασιών τερματισμού, το πάτημα του διακόπτη ρεύματος ισοδυναμεί με την εκκίνηση αυτών των διαδικασιών σε πιο καινούργια συστήματα. Ωστόσο το κλείσιμο ενός παλιού συστήματος χωρίς να γίνει αυτή η διαδικασία μπορεί να προκαλέσει σοβαρή ζημιά! Αν θέλετε να είστε σίγουροι, χρησιμοποιήστε πάντα την επιλογή απενεργοποίηση όταν αποσυνδέεστε από τη γραφική διασύνδεση, ή, όταν είστε στην οθόνη εισόδου (όπου πρέπει να δώσετε το όνομα χρήστη και τον συνθηματικό) ψάξτε για το κουμπί τερματισμού. |
Τώρα που γνωρίζουμε πώς να συνδεθούμε και να αποσυνδεθούμε, είμαστε έτοιμοι για τις πρώτες μας εντολές.
Αυτές είναι οι γρήγορες και εύκολες, τις οποίες χρειαζόμαστε για να ξεκινήσουμε. Θα τις συζητήσουμε στη συνέχεια με περισσότερες λεπτομέρειες.
Πίνακας 2-1. Εντολές γρήγορης εκκίνησης
Εντολή |
Σημασία |
---|---|
ls |
Εμφανίζει μια λίστα αρχείων στον τρέχοντα κατάλογο εργασίας, όπως η εντολή dir στο DOS |
cd directory |
Αλλάζει καταλόγους |
passwd |
Αλλάζει το συνθηματικό του τρέχοντα χρήστη |
file filename |
Εμφανίζει τον τύπο του αρχείου με όνομα filename |
cat textfile |
Εμφανίζει τα περιεχόμενα του textfile στην οθόνη |
pwd |
Εμφανίζει τον τρέχοντα κατάλογο εργασίας |
exit or logout |
Αποσύνδεση |
man command |
Διαβάζει τις σελίδες του man για την command |
info command |
Διαβάζει τις σελίδες του Info για την command |
apropos string |
Ψάχνει τη βάση δεδομένων whatis για αλφαριθμητικά string |
Η εντολή ls
Όπως αναφέρθηκε και παραπάνω, η εντολή ls εμφανίζει τα περιεχόμενα (αρχεία και καταλόγους) του τρέχοντος καταλόγου. Στη βασική της σύνταξη δεν απαιτεί ορίσματα (το όρισμα μιας εντολής είναι εξειδίκευση του αντικειμένου που θέλετε εκτελέσει η εντολή). Για παράδειγμα, αν εκτελέσετε την εντολή ls μόλις ανοίξετε το τερματικό θα εμφανίσετε τα περιεχόμενα του αρχικού καταλόγου (home directory):
Εάν τρέξετε την ίδια εντολή με την επιλογή (switch) -l, τα περιεχόμενα του καταλόγου εμφανίζονται σε μια λίστα:
Σε αυτή την προβολή εμφανίζονται περισσότερες πληροφορίες όπως ο τύπος κάθε στοιχείου (αρχείο ή κατάλογος), τα δικαιώματα πρόσβασης σε αυτό που έχουν οι χρήστες του συστήματος, κ.α.
Η εντολή ls δεν εμφανίζει τα κρυφά αρχεία και φακέλους. Για να εμφανιστούν τα κρυφά στοιχεία, θα πρέπει να προσθέσετε την επιλογή -a. Επίσης, εάν θέλετε να εμφανίσετε τα περιεχόμενα ενός άλλου καταλόγου και όχι του τρέχοντα θα πρέπει να προσθέσετε και τη διαδρομή προς αυτόν τον κατάλογο στην εντολή. Για παράδειγμα, εάν επιθυμείτε να εμφανίσετε τα περιεχόμενα του καταλόγου /var σε μια λίστα η οποία θα περιλαμβάνει και τα κρυφά αρχεία/ καταλόγους θα πρέπει να πληκτρολογήσετε ls -la /var. Το αποτέλεσμα της εντολής φαίνεται στο στιγμιότυπο που ακολουθεί:
Η εντολή pwd
Η εντολή pwd δεν έχει ορίσματα και εμφανίζει τον τρέχοντα κατάλογο εργασίας. Για παράδειγμα, εάν εκτελέσετε την εντολή pwd μόλις ανοίξετε το τερματικό θα εμφανιστεί η διαδρομή προς τον αρχικό κατάλογο του χρήστη με τον οποίο έχετε συνδεθεί στο σύστημα.
Η εντολή cd
Η εντολή cd αλλάζει τον τρέχοντα κατάλογο εργασίας. Το βασικό (και απαραίτητο) όρισμά της είναι η διαδρομή προς τον κατάλογο στον οποίο θα γίνει μετάβαση. Για παράδειγμα, για να μεταβείτε στον κατάλογο /var/games θα πρέπει να πληκτρολογήσετε cd /var/games. Ιδιαίτερη προσοχή απαιτείται στο αν μια διαδρομή είναι απόλυτη ή σχετική. Για παράδειγμα, στην εντολή cd var/games, η διαδρομή (var/games) είναι σχετική, πράγμα που σημαίνει ότι η εντολή θα ψάξει για έναν κατάλογο var/games μέσα στον τρέχοντα. Αντίθετα, στην εντολή cd /var/games η διαδρομή είναι απόλυτη (ξεκινά με /) πράγμα που σημαίνει ότι θα αναζητήσει έναν κατάλογο var/games στη ρίζα του συστήματος αρχείων.
Για να μεταβείτε ένα επίπεδο πιο πάνω στο σύστημα αρχείων (δηλαδή στον κατάλογο που περιέχει τον τρέχοντα), θα πρέπει να πληκτρολογήσετε cd ..
Για παράδειγμα, εάν ο τρέχων κατάλογος είναι ο /home/ubuntu, η εντολή cd .. θα έχει ως αποτέλεσμα τη μετάβαση στον κατάλογο /home.
Ένας σύντομος τρόπος να μεταβείτε στον αρχικό σας κατάλογο είναι να πληκτρολογήσετε την εντολή cd ~
Η εντολή passwd
Η εντολή αυτή αλλάζει τον κωδικό πρόσβασης του τρέχοντα χρήστη. Αρχικά ζητά να πληκτρολογήσετε τον ισχύοντα κωδικό προκειμένου να πιστοποιήσετε την ταυτότητά σας και στη συνέχεια το νέο κωδικό (2 φορές για επιβεβαίωση).
Οι εντολές logout και exit
Η εντολή logout αποσυνδέει τον τρέχοντα χρήστη από το σύστημα (με την προϋπόθεση ότι ανοίγοντας το τερματικό είχε κάνει login) ενώ η εντολή exit κλείνει το παράθυρο του τερματικού ή τερματίζει τη σύνδεση (αν πρόκειται για σύνδεση σε απομακρυσμένο υπολογιστή).
Οι εντολές su και sudo
Η εντολή su αλλάζει τον τρέχοντα χρήστη σε αυτόν που της δίνεται ως όρισμα. Για παράδειγμα, η εκτέλεση της εντολής su root θα έχει ως αποτέλεσμα την αλλαγή του τρέχοντα χρήστη σε root, δηλαδή στον υπέρ-χρήστη (superuser) ο οποίος έχει πλήρη δικαιώματα διαχείρισης στον υπολογιστή. Φυσικά, για να γίνει η εναλλαγή σε κάποιον χρήστη θα χρειαστεί να πληκτρολογήσετε τον κωδικό πρόσβασης για τον αντίστοιχο χρήστη.
Η εντολή sudo σας επιτρέπει να εκτελέσετε μια εντολή με δικαιώματα ενός άλλου χρήστη. Εάν δεν πληκτρολογήσετε κάποιον χρήστη, η εντολή υποθέτει τον χρήστη root. Η βασική σύνταξη της εντολής έχει ως εξής:
sudo -u user commandΘα εμφανίσει στην οθόνη τα περιεχόμενα του αρχείου file1.txt για το οποίο πιθανώς ο τρέχων χρήστης να μην είχε δικαίωμα ανάγνωσης (ενώ ο χρήστης root θα έχει σίγουρα).
Πληκτρολογείτε αυτές τις εντολές μετά την προτροπή εντολής, σε ένα τερματικό είτε σε γραφική μορφή είτε σε μορφή κειμένου, ακολουθούμενες από Enter.
Οπώς ειδαμε και παραπάνω, οι εντολές μπορεί να εισάγονται μόνες τους, όπως η ls. Μια εντολή συμπεριφέρεται διαφορετικά όταν ορίζετε κάποια επιλογή, συνήθως προηγείται μια παύλα (-), όπως στην ls -a. Η ίδια επιλογή χαρακτήρα μπορεί να έχει διαφορετική σημασία σε άλλη εντολή. Τα προγράμματα GNU δέχονται μακροσκελέστερες επιλογές, προηγούμενες από δύο παύλες (--), όπως ls --all. Μερικές εντολές δεν έχουν επιλογές.
Το όρισμα(ορίσματα) μιας εντολής είναι εξειδίκευση του αντικειμένου(αντικειμένων) που θέλετε εκτελέσει η εντολή. Ένα παράδειγμα είναι ls /etc, όπου ο κατάλογος /etc είναι ένα όρισμα της εντολής ls. Αυτό δηλώνει ότι θέλετε να δείτε το περιεχόμενο αυτού του καταλόγου, αντί του προεπιλεγμένου, το οποίο θα είναι το περιεχόμενο του τρέχοντα καταλόγου, που θα το πετυχαίναμε απλά πληκτρολογώντας ls ακολουθούμενο από Enter. Μερικές εντολές απαιτούν ορίσματα, για άλλες είναι προαιρετικά.
Μπορείτε να ανακαλύψετε πότε μια εντολή δέχεται επιλογές και ορίσματα, και ποια είναι έγκυρα, ελέγχοντας την online βοήθεια για την εντολή, δείτε Ενότητα 2.3.
Στο Linux, όπως και στα UNIX, οι κατάλογοι χωρίζονται χρησιμοποιώντας καθέτους(/), σαν αυτές που χρησιμοποιούμε στις ηλεκτρονικές διευθύνσεις (URLs). Θα συζητήσουμε τη δομή των καταλόγων σε βάθος αργότερα.
Τα σύμβολα . και .. έχουν ιδιαίτερη σημασία όταν αφορούν καταλόγους. Θα προσπαθήσουμε να τα ανακαλύψουμε αυτά κατά τη διάρκεια των ασκήσεων, και περισσότερα στο επόμενο κεφάλαιο.
Προσπαθήστε να αποφύγετε την σύνδεση ως υπερ-χρήστης ή διαχειριστής (root). Πέρα από την κανονική σας εργασία, τα περισσότερα καθήκοντα ελέγχου του συστήματος, συλλογής πληροφοριών κλπ., μπορεί να εκτελεστούν χρησιμοποιώντας έναν κανονικό λογαριασμό χρήστη χωρίς ιδιαίτερα προνόμια . Αν χρειαστεί, για παράδειγμα να δημιουργείτε έναν νέο χρήστη, ή εγκαταστήσετε νέο λογισμικό, η προτεινόμενη μέθοδος απόκτησης δικαιωμάτων υπερ-χρήστη είναι η αλλαγή ταυτότητας χρήστη (user ID), δείτε Ενότητα 3.2.1 για ένα παράδειγμα.
Σχεδόν όλες οι εντολές αυτού του βιβλίου μπορούν να εκτελεστούν χωρίς δικαιώματα διαχειριστή συστήματος. Στις περισσότερες περιπτώσεις, όταν θέτετε μια εντολή ή ξεκινάτε ένα πρόγραμμα ως ένας μη-προνομιούχος χρήστης, το σύστημα θα σας προειδοποιήσει ή θα σας εμφανίσει μια προτροπή για το συνθηματικό υπερ-χρήστη όταν απαιτείται. Αφού τελειώσετε, εγκαταλείψτε αμέσως αυτή την εφαρμογή ή ενότητα που σας δίνει δικαιώματα υπερ-χρήστη.
H ανάγνωση της τεκμηρίωσης πρέπει να γίνει η δεύτερη φύση σας. Ειδικά στην αρχή, είναι σημαντικό να διαβάζετε τη τεκμηρίωση του συστήματος, και τα εγχειρίδια για τις βασικές εντολές, τα HOWTOs κ.λ.π. Επειδή το μέγεθος της τεκμηρίωσης είναι τεράστιο, είναι αδύνατο να συμπεριλάβουμε όλο τη σχετική τεκμηρίωση. Αυτό το βιβλίο θα προσπαθήσει να σας καθοδηγήσει με τη καταλληλότερη τεκμηρίωση σε κάθε θέμα που συζητείται, με σκοπό να σας προκαλέσει την συνήθεια να διαβάζετε τις σελίδες του man.
Αρκετοί συνδυασμοί πλήκτρων σας επιτρέπουν να κάνετε πράγματα ευκολότερα και γρηγορότερα με το φλοιό Bash του GNU, που είναι το προκαθορισμένο σχεδόν σε κάθε σύστημα Linux, δείτε Ενότητα 3.2.3.2. Παρακάτω υπάρχει μια λίστα με τα χαρακτηριστικά που χρησιμοποιούνται συχνότερα, πρέπει οπωσδήποτε να σας γίνει συνήθεια η χρήση τους, έτσι ώστε να αποκομίσετε όσο το δυνατόν περισσότερα από την εμπειρία σας στο Linux από πολύ νωρίς.
Πίνακας 2-2. Συνδυασμοί πλήκτρων στο Bash
Πλήκτρο ή συνδυασμός |
Λειτουργία |
---|---|
Ctrl+A ή Home |
Μετακινεί τον δρομέα στην αρχή της γραμμής. |
Ctrl+C |
Τερματίζει ένα πρόγραμμα που εκτελείται και επιστρέφει στην προτροπή εντολής, δείτε Κεφάλαιο 4. |
Ctrl+D |
Εξέρχεται από την τρέχουσα σύνοδο του φλοιού, ίδιο με την πληκτρολόγηση exit ή logout. |
Ctrl+E ή End |
Μετακινεί τον δρομέα στο τέλος της γραμμής εντολών. |
Ctrl+H ή Backspace |
Δημιουργεί τον χαρακτήρα backspace. |
Ctrl+L |
Καθαρίζει το τερματικό. |
Ctrl+R |
Ψάχνει το ιστορικό εντολών, δείτε Ενότητα 3.3.3.4. |
Ctrl+Z |
Σταματά προσωρινά ένα πρόγραμμα, δείτε Κεφάλαιο 4. |
ArrowLeft και ArrowRight |
Μετακινεί τον δρομέα μια θέση στα αριστερά ή στα δεξιά στη γραμμή εντολής, έτσι ώστε να μπορείτε να εισάγειτε χαρακτήρες σε άλλες θέσεις όχι μόνο στην αρχή και το τέλος. |
ArrowUp και ArrowDown |
Ψάχνει στο ιστορικό. Πηγαίνετε στη γραμμή που σας ενδιαφέρει να επαναλάβετε, δώστε λεπτομέρειες αν είναι απαραίτητο, και πατήστε Enter για να γλιτώσετε χρόνο. |
Shift+PageUp και Shift+PageDown |
Ψάχνει τον απομονωτή τερματικού (για να δείτε το κείμενο που έχει "φύγει (σκρολάρει)" την οθόνη). |
Tab |
Συμπλήρωση εντολής ή ονόματος αρχείου; όταν είναι πιθανές πολλαπλές επιλογές, το σύστημα θα σας ειδοποιήσει με ένα ακουστικό ή οπτικό κουδούνισμα, ή, αν είναι τόσες πολλές πιθανές επιλογές, σας ρωτά αν επιθυμείτε να τις δείτε όλες. |
Tab Tab |
Εμφανίζει τις δυνατότητες τελειοποίησης αρχείου ή εντολής. |
Τα δύο τελευταία αντικείμενα του παραπάνω πίνακα χρειάζονται κάποιες επιπλέον εξηγήσεις. Για παράδειγμα, αν θέλετε να αλλάξετε τον κατάλογο σε directory_with_a_very_long_name, δεν θα πληκτρολογήσετε αυτό το πολύ μεγάλο όνομα, όχι. Απλά πληκτρολογείστε στη γραμμή εντολών cd dir, μετά πατήστε Tab και το κέλυφος συμπληρώνει το όνομα για εσάς, αν δε υπάρχουν άλλα αρχεία με τους τρεις πρώτους χαρακτήρες ίδιους. Φυσικά, αν δεν υπάρχουν άλλα αντικείμενα που να αρχίζουν από "d", τότε μπορείτε εξίσου απλά να πληκτρολογήσετε cd d και μετα Tab. Αν παραπάνω από ένας φάκελοι ξεκινούν με τους ίδιους χαρακτήρες, το κέλυφος θα σας το δείξει, σύμφωνα με αυτά μπορείτε να πατήσετε Tab δύο φορές με μια μικρή παύση ανάμεσα, και το κέλυφος θα σας παρουσιάσει τις επιλογές που έχετε:
your_prompt> cd st starthere stuff stuffit |
Στο παραπάνω παράδειγμα, αν πληκτρολογήσετε "a" μετά τους δύο πρώτους χαρακτήρες και πατήσετε Tab ξανά, δεν έχουν μείνει άλλες επιλογές, και το κέλυφος συμπληρώνει το όνομα καταλόγου, χωρίς να πρέπει να πληκτρολογήσετε το αλφαριθμητικό "rthere":
your_prompt> cd starthere |
Φυσικά, πρέπει να πατήσετε Enter ώστε να δεχτεί αυτή την επιλογή.
Στο ίδιο παράδειγμα, αν πληκτρολογήσετε "u", και μετά πατήσετε Tab, το κέλυφος θα προσθέσει το "ff" για σας, αλλά μετά διαμαρτύρεται ξανά, γιατί είναι πιθανές πολλαπλές επιλογές. Αν πληκτρολογήσετε Tab Tab ξανά, θα δείτε τις επιλογές, αν πληκτρολογήσετε έναν ή περισσότερους χαρακτήρες κάνει την επιλογή ξεκάθαρη στο σύστημα , και Tab ξανά, ή Enter όταν έχετε φτάσει στο τέλος του ονόματος του αρχείου που θέλετε να επιλέξετε, ο φλοιός συμπληρώνει το όνομα αρχείου και το αλλάζει σε εκείνο τον κατάλογο – αν στην πραγματικότητα είναι ένα όνομα καταλόγου.
Αυτό λειτουργεί για όλα τα ονόματα αρχείων που είναι ορίσματα εντολών.
Το ίδιο συμβαίνει με την συμπλήρωση ονόματος της εντολής. Πληκτρολογώντας ls και μετά πατώντας Tab δύο φορές, καταγράφει σε μια λίστα όλες τις εντολές στο PATH σας (δείτε Ενότητα 3.2.1) που ξεκινούν με αυτούς τους δύο χαρακτήρες:
your_prompt> ls ls lsdev lspci lsraid lsw lsattr lsmod lspgpot lss16toppm lsb_release lsof lspnp lsusb |
Η ενασχόληση με το GNU/Linux πρέπει να σας κάνει πιο αυτάρκεις. Και όπως συνηθίζεται σε αυτό το σύστημα, υπάρχουν πολλοί τρόποι να επιτύχετε τον στόχο. Ένας κοινός τρόπος να πάρετε βοήθεια είναι να βρείτε κάποιον που γνωρίζει, αλλά όσο υπομονετική και φιλική και αν είναι η κοινότητα των χρηστών Linux, σχεδόν όλοι θα περιμένουν από εσάς να έχετε προσπαθήσει μία ή περισσότερες από τις μεθόδους που παρουσιάζονται σ’ αυτή την ενότητα πριν τους ρωτήσετε, και οι τρόποι με του οποίους εκφράζεται αυτή η άποψη μπορεί να είναι αρκετά σκληρή αν αποδείξετε ότι δεν ακολουθήσατε αυτόν τον βασικό κανόνα.
Πολλοί αρχάριοι χρήστες φοβούνται τις σελίδες του man (manual) , επειδή είναι μια υπερμεγέθης πηγή τεκμηρίωσης. Είναι, ωστόσο, πολύ δομημένες, όπως θα δείτε από το παράδειγμα: man man.
Η ανάγνωση των σελίδων man γίνεται συνήθως σε ένα παράθυρο τερματικού στη γραφική διεπαφή, ή απλά σε διεπαφή κειμένου αν το προτιμάτε. Η εντολή man συντάσσεται ως εξής:
Έαν πληκτρολογήσουμε την εντολή man man, στην οθόνη μας θα εμφανιστεί η τεκμηρίωση για το man.
man(1) man(1) NAME man - format and display the on-line manual pages manpath - determine user's search path for man pages SYNOPSIS man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file] [-M pathlist] [-P pager] [-S section_list] [section] name ... DESCRIPTION man formats and displays the on-line manual pages. If you specify section, man only looks in that section of the manual. name is normally the name of the manual page, which is typically the name of a command, function, or file. However, if name contains a slash (/) then man interprets it as a file specification, so that you can do man ./foo.5 or even man /cd/foo/bar.1.gz. See below for a description of where man looks for the manual page files. OPTIONS -C config_file lines 1-27 |
Προχωρήστε στην επόμενη σελίδα χρησιμοποιώντας τη μπάρα διαστήματος(space). Μπορείτε να πάτε στην προηγούμενη σελίδα χρησιμοποιώντας το πλήκτρο b. Όταν φτάσετε στο τέλος, το man συνήθως σταματά και γυρίζετε πίσω στην προτροπή. Πληκτρολογήστε q αν επιθυμείτε να αφήσετε το man πριν φτάσετε στο τέλος, ή δεν σταματά αυτόματα η προβολή στο τέλος της σελίδας.
Σελιδοποιητές
Οι διαθέσιμοι
συνδυασμοί πλήκτρων για να χειρίζεστε
τις σελίδες του man εξαρτώνται
από τον σελιδοποιητή που
χρησιμοποιείται στη διανομή Linux
που διαθέτετε. Οι περισσότερες
διανομές χρησιμοποιούν το less
για να προβάλουν τις σελίδες του man
και να κινήσουν τον δείκτη κύλισης.
Δείτε Ενότητα
3.3.4.2 για περισσότερες πληροφορίες
για τους σελιδοποιητές.
Κάθε μιά σελίδα του man συνήθως περιέχει μερικές τυπικές παραγράφους, όπως μπορούμε να δούμε και από το παράδειγμα man man:
1 - Η πρώτη γραμμή περιλαμβάνει το όνομα της εντολής για την οποία διαβάζετε, και τη ταυτότητα της παραγράφου στην οποία είναι τοποθετημένη η σελίδα του man. Οι σελίδες του man χωρίζονται σε κεφάλαια. Είναι πολύ πιθανόν εντολές να έχουν πολλαπλές σελίδες, για παράδειγμα η σελίδα του man για την ενότητα χρήστη, η σελίδα του man από την ενότητα διαχείρισης συστήματος, και η σελίδα του man από την ενότητα προγραμματιστή.
2 - Δίνεται το όνομα της εντολής και μια μικρή περιγραφή, που χρησιμοποιούνται για να φτιαχτεί ένα ευρετήριο των σελίδων του man. Μπορείτε να ψάξετε για οποιοδήποτε δοσμένο αλφαριθμητικό αναζήτησης σ’ αυτό το ευρετήριο χρησιμοποιώντας τη εντολή apropos.
3 - Η σύνοψη της εντολής παρουσιάζει μια τεχνική σημειογραφία όλων των επιλογών και/ή των ορισμάτων που μπορεί να πάρει αυτή η εντολή. Μπορείτε να σκεφτείτε μια επιλογή σαν τον τρόπο για να εκτελέσετε μια εντολή. Το όρισμα είναι αυτό το οποίο εκτελέσατε. Μερικές εντολές δεν έχουν επιλογές και ορίσματα. Προαιρετικές επιλογές και ορίσματα βρίσκονται μεταξύ "[" και"]" για να δείξουν ότι μπορούν να παραλειφθούν.
4 - Δίνεται μια μεγαλύτερη περιγραφή της εντολής.
5 - Οι επιλογές με τις περιγραφές τους βρίσκονται σε λίστα. Οι επιλογές συνήθως συνδυάζονται. Αν όχι, αυτή η παράγραφος θα σας ενημερώσει γι’ αυτό.
6 - Το περιβάλλον περιγράφει τις μεταβλητές του κελύφους που επηρεάζουν τη συμπεριφορά αυτής της εντολής (δε συμβαίνει αυτό με όλες τις εντολές).
7 - Μερικές φορές ορίζονται παράγραφοι ειδικά γι’ αυτή την εντολή.
8 - Μια αναφορά στις άλλες σελίδες του man δίνεται στην ενότητα "SEE ALSO". Μεταξύ των παρενθέσεων βρίσκεται ο αριθμός της παραγράφου της σελίδας του man στην οποία μπορείτε να βρείτε την εντολή αυτή. Έμπειροι χρήστες επιστρέφουν στη μεριά του "SEE ALSO" χρησιμοποιώντας την εντολή / ακολουθούμενη από το αλφαριθμητικό αναζήτησης SEE και πατώντας Enter.
9 - Συχνά υπάρχουν πληροφορίες για ανωμαλίες(bugs) και το που πρέπει να αναφέρετε νέα bugs που μπορεί να βρείτε.
10 - Μπορεί ακόμα να υπάρχει συγγραφέας και πληροφορίες πνευματικών δικαιωμάτων.
Μερικές εντολές έχουν πολλαπλές σελίδες στο man. Για παράδειγμα, η εντολή passwd έχει μια σελίδα man στην ενότητα 1 και άλλη μια στην ενότητα 5. Προκαθορισμένα, εμφανίζεται η σελίδα με τον μικρότερο αριθμό. Αν θέλετε να βλέπετε άλλη ενότητα από την προκαθορισμένη, καθορίστε το μετά την εντολή man:
man 5 passwd
Αν θέλετε να βλέπετε όλες τις σελίδες του man για μια εντολή, τη μια μετά την άλλη, χρησιμοποιήστε το -a μετά το man:
man -a passwd
Μ’ αυτό τον τρόπο, όταν φτάσετε στο τέλος της πρώτης σελίδας του man και πατήστε q ξανά, θα εμφανιστεί η σελίδα από την επόμενη ενότητα.
Εκτός από τις σελίδες του man, μπορείτε να διαβάσετε τις σελίδες Info για μια εντολή, χρησιμοποιώντας την εντολή info. Αυτές συνήθως περιέχουν πιο πρόσφατες πληροφορίες και είναι κάπως ευκολότερες στη χρήση. Οι σελίδες man για μερικές εντολές αναφέρονται στις σελίδες Info.
Ας αρχίσουμε πληκτρολογώντας info info σε ένα παράθυρο τερματικού:
File: info.info, Node: Top, Next: Getting Started, Up: (dir) Info: An Introduction ********************* Info is a program, which you are using now, for reading documentation of computer programs. The GNU Project distributes most of its on-line manuals in the Info format, so you need a program called "Info reader" to read the manuals. One of such programs you are using now. If you are new to Info and want to learn how to use it, type the command `h' now. It brings you to a programmed instruction sequence. To learn advanced Info commands, type `n' twice. This brings you to `Info for Experts', skipping over the `Getting Started' chapter. * Menu: * Getting Started:: Getting started using an Info reader. * Advanced Info:: Advanced commands within Info. * Creating an Info File:: How to make your own Info file. --zz-Info: (info.info.gz)Top, 24 lines --Top------------------------------- Welcome to Info version 4.2. Type C-h for help, m for menu item. |
Χρησιμοποιήστε τα βέλη για να ψάξετε μέσα στο κείμενο και μετακινήστε τον δρομέα σε μια γραμμή που αρχίζει με έναν αστερίσκο, και περιλαμβάνει την λέξη κλειδί για την οποία θέλετε πληροφορίες, μετά πατήστε Enter. Χρησιμοποιείστε τα πλήκτρα P και N για να πάτε στην προηγούμενη ή επόμενη εντολή. Η μπάρα διαστήματος σας μετακινεί μια σελίδα ακόμα, άσχετα με το κατά πόσο αυτή ξεκινά ένα καινούργιο θέμα ή μια σελίδα Info για άλλη εντολή. Χρησιμοποιήστε το Q για να παραιτηθείτε. Το πρόγραμμα info έχει περισσότερες πληροφορίες.
Κάθε manual εντολής περιλαμβάνει μια μικρή περιγραφή. Με την εντολή whatis εμφανίζεται αυτή η μικρή περιγραφή. Βλέπουμε παρακάτω ένα παράδειγμα:
[your_prompt] whatis ls ls (1) - list directory contents |
Εμφανίζονται λίγες πληροφορίες για μια εντολή, και η πρώτη ενότητα της συλλογής των σελίδων man που περιέχει την κατάλληλη σελίδα.
Αν δεν γνωρίζετε από πού να ξεκινήσετε και ποια σελίδα man να διαβάσετε, η apropos σας δίνει περισσότερες πληροφορίες. Υποθέστε ότι δεν ξέρετε πώς να ξεκινήσετε έναν περιηγητή (browser), τότε θα μπορούσατε να εισάγετε την ακόλουθη εντολή:
another prompt> apropos browser Galeon [galeon](1) - gecko-based GNOME web browser lynx (1) - a general purpose distributed information browser for the World Wide Web ncftp (1) - Browser program for the File Transfer Protocol opera (1) - a graphical web browser pilot (1) - simple file system browser in the style of the Pine Composer pinfo (1) - curses based lynx-style info browser pinfo [pman] (1) - curses based lynx-style info browser viewres (1x) - graphical class browser for Xt |
Αφού πατήσετε Enter θα δείτε ότι υπάρχει πάρα πολύ υλικό στο μηχάνημά σας που σχετίζεται με περιηγητές: όχι μόνο περιηγητές του παγκόσμιου ιστού, αλλά ακόμη περιηγητές αρχείων και FTP, και περιηγητές τεκμηρίωσης. Αν έχετε εγκατεστημένα πλήρη προγραμματιστικά πακέτα, μπορεί να έχετε ακόμα τις κατάλληλες συνοδευτικές σελίδες του man. Γενικά , μια εντολή με τη σελίδα man στην ενότητα ένα, δηλαδή μια συμβολιζόμενη με "(1)", είναι κατάλληλη για να χρησιμοποιηθεί από απλούς χρήστες. Ο χρήστης που χειρίστηκε την παραπάνω apropos μπορεί συνεπώς να δοκιμάσει να ξεκινήσει τις εντολές galeon, lynx ή opera, αφού αυτές έχουν να κάνουν καθαρά με την πλοήγηση στον παγκόσμιο ιστό.
Οι περισσότερες GNU εντολές υποστηρίζουν την --help, που δίνει μια μικρή επεξήγηση για το πώς να χρησιμοποιήσεις την εντολή και μια λίστα με διαθέσιμες επιλογές. Παρακάτω είναι η έξοδος αυτής της επιλογής με την εντολή cat:
userprompt@host: cat --help Usage: cat [OPTION] [FILE]... Concatenate FILE(s), or standard input, to standard output. -A, --show-all equivalent to -vET -b, --number-nonblank number nonblank output lines -e equivalent to -vE -E, --show-ends display $ at end of each line -n, --number number all output lines -s, --squeeze-blank never more than one single blank line -t equivalent to -vT -T, --show-tabs display TAB characters as ^I -u (ignored) -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB --help display this help and exit --version output version information and exit With no FILE, or when FILE is -, read standard input. Report bugs to <bug-textutils@gnu.org>. |
Μην απελπίζεστε αν προτιμάτε μια γραφική διεπαφή χρήστη. Ο Konqueror, ο προεπιλεγμένος διαχειριστής αρχείων του KDE, εξασφαλίζει μια ανώδυνη και πολύχρωμη πρόσβαση στις σελίδες man και Info. Ίσως θέλετε να δοκιμάσετε "info:info" στη Θέση της μπάρας διευθύνσεων, και θα πάρετε μια περιηγήσιμη σελίδα Info για την εντολή info. Όμοια, η "man:ls" θα σας παρουσιάσει τη σελίδα του man για την εντολή ls. Ακόμη επιτρέπει τη συμπλήρωση του ονόματος της εντολής: θα δείτε τις σελίδες του man για όλες τις εντολές που αρχίζουν από "ls" σε ένα μενού κύλισης προς τα κάτω. Εισάγοντας "info:/dir" στη θέση της εργαλειοθήκης διεύθυνσης εμφανίζονται όλες οι σελίδες Info, τακτοποιημένες σε τυπικές κατηγορίες. Εξαιρετικό περιεχόμενο βοήθειας, συμπεριλαμβανομένου του εγχειριδίου του Konqueror. Ξεκινήστε από το μενού ή πληκτρολογώντας την εντολή konqueror στο τερματικό, ακολουθούμενη από Enter; Δείτε το στιγμιότυπο της οθόνης παρακάτω.
Εικόνα 2-2. Ο Konqueror ως περιηγητής βοήθειας
Ο περιηγτής βοήθειας του Gnome είναι επίσης πολύ φιλικός προς τον χρήστη. Μπορείτε να αρχίσετε επιλέγοντας Σύστημα->Βοήθεια ->Τεκμηρίωση Συστήματος (ΣτΜ στο Ubuntu) για το μενού του Gnome, ή κάνοντας κλικ στο εικονίδιο με το σωσίβιο του ναυαγοσώστη στην επιφάνεια εργασίας (αν υπάρχει) ή εισάγοντας την εντολή gnome-help σε ένα παράθυρο τερματικού. Η τεκμηρίωση του συστήματος και οι σελίδες man είναι εύκολα περιηγήσιμες με μια απλή διασύνδεση.
Ο διαχειριστή αρχείων nautilus παρέχει ένα ερευνήσιμο κατάλογο των σελίδων man και Info, είναι εύκολα περιηγήσιμες και διασυνδεόμενες. Ο nautilus ξεκινά από μια γραμμή εντολής, ή κάνοντας κλικ στο εικονίδιο του αρχικού καταλόγου, ή από το μενού του Gnome.
Το μεγάλο πλεονέκτημα του GUIs για την τεκμηρίωση του συστήματος είναι ότι όλες οι πληροφορίες είναι απολύτως διασυνδεόμενες, έτσι μπορείτε να κάνετε κλικ στις ενότητες "SEE ALSO" και όπου κι αν εμφανίζονται συνδέσεις με άλλες σελίδες του man, και συνεπώς περιηγηθείτε και αποκτήστε γνώση χωρίς διακοπή για ώρες κάθε φορά.
Μερικές εντολές δεν έχουν ξεχωριστή τεκμηρίωση, γιατί είναι μέρος άλλων εντολών. Οι cd, exit, logout και pwd αποτελούν τέτοιες εξαιρέσεις. Είναι μέρος του προγράμματος του κελύφους σας και ονομάζονται ενσωματωμένες εντολές. Για πληροφορίες σχετικά με αυτό, απευθυνθείτε στις σελίδες man ή info του κελύφους σας. Οι περισσότεροι αρχάριοι χρήστες Linux χρησιμοποιούν κέλυφος Bash. Για περισσότερα σχετικά με τα κελύφη δείτε Ενότητα 3.2.3.2 .
Αν έχετε αλλάξει την αυθεντική διαμόρφωση του συστήματος, είναι πιθανό οι σελίδες man να είναι ακόμα εκεί, αλλά να μην είναι ορατές επειδή το περιβάλλον κελύφους σας έχει αλλάξει. Σ’ αυτή την περίπτωση, θα χρειαστεί να ελέγξετε τη μεταβλητή MANPATH. Το πώς να το κάνετε αυτό εξηγείτε στην Ενότητα 7.2.1.2.
Κάποια προγράμματα ή πακέτα έχουν πληροφορίες και αναφορές μόνο στο κατάλογο /usr/share/doc. Δείτε Ενότητα 3.3.4 για το τρόπο εμφάνισής τους.
Στη χειρότερη περίπτωση, μπορεί να έχετε αφαιρέσει την τεκμηρίωση από το σύστημα σας κατά λάθος(ελπίζοντας κατά λάθος, γιατί αν έχει γίνει σκόπιμα είναι πολύ κακή ιδέα). Σ’ αυτή τη περίπτωση, πρώτα σιγουρευτείτε ότι δεν έχει απομείνει τίποτα κατάλληλο χρησιμοποιώντας ένα εργαλείο αναζήτησης, διαβάστε στην Ενότητα 3.3.3. Αν συμβαίνει αυτό, πρέπει να εγκαταστήσετε ξανά το πακέτο που περιέχει την εντολή στην οποία αναφέρεται η τεκμηρίωση, δείτε Ενότητα 7.5.
Το Linux παραδοσιακά λειτουργεί με διεπαφή κειμένου ή με γραφική διεπαφή. Αφού οι δυνατότητες της CPU και της RAM δεν είναι πλέον το θέμα στις μέρες μας, κάθε χρήστης Linux μπορεί να καταφέρει να εργαστεί σε γραφική διεπαφή και συνήθως αυτό κάνει. Αυτό δε σημαίνει ότι δεν πρέπει να γνωρίζετε για τη διεπαφή κειμένου: σε αυτό το βιβλίο θα δουλέψουμε σε περιβάλλον κειμένου, χρησιμοποιώντας παράθυρο τερματικού.
Το Linux ενθαρρύνει τους χρήστες του να αποκτήσουν γνώση και να γίνουν ανεξάρτητοι. Αναπόφευκτα, θα πρέπει να διαβάσετε πολύ από την τεκμηρίωση για να επιτύχετε αυτό τον στόχο. Γι’ αυτό, όπως θα παρατηρήσατε, αναφερόμαστε σε επιπλέον τεκμηρίωση σχεδόν για κάθε εντολή, εργαλεία και προβλήματα που βρίσκονται σε αυτό το βιβλίο. Όσο περισσότερα κείμενα διαβάζετε, τόσο ευκολότερα θα γίνεται και γρηγορότερα θα ξεφυλλίζετε τα εγχειρίδια. Κάντε την ανάγνωση της τεκμηρίωσης μια συνήθεια όσο το δυνατόν συντομότερα. Όταν δε γνωρίζετε την απάντηση σ’ ένα πρόβλημα, η παραπομπή στην τεκμηρίωση θα γίνει η δεύτερη φύση σας.
Έχουμε ήδη μάθει κάποιες εντολές:
Πίνακας 2-3. Νέες εντολές στο κεφάλαιο 2: Βασικά
Εντολή |
Σημασία |
---|---|
apropos |
Ψάχνει πληροφορίες για μια εντολή ή ένα θέμα. |
cat |
Εμφανίζει το περιεχόμενο ενός ή περισσοτέρων αρχείων. |
cd |
Αλλάζει τον τρέχοντα κατάλογο. |
exit |
Αποσυνδέεται από μια σύνοδο φλοιού. |
file |
Δίνει πληροφορίες για το περιεχόμενο ενός αρχείου. |
info |
Διαβάζει τις σελίδες του Info για μια εντολή. |
logout |
Αποσυνδέεται από μια σύνοδο φλοιού. |
ls |
Εμφανίζει τα περιεχόμενα του καταλόγου. |
man |
Διαβάζει τις σελίδες του εγχειριδίου για μια εντολή. |
passwd |
Αλλάζει τον κωδικό πρόσβασής σας. |
pwd |
Εμφανίζει το τρέχοντα κατάλογο. |
Τα περισσότερα που μαθαίνουμε είναι κάνοντας λάθη και βλέποντας γιατί τα πράγματα πάνε λάθος. Αυτές οι ασκήσεις είναι φτιαγμένες έτσι ώστε να σας δώσουν να διαβάσετε κάποια λάθος μηνύματα. Ο σκοπός που κάνετε αυτή την άσκηση είναι σημαντικός.
Μη ξεχάσετε να χρησιμοποιήσετε τα χαρακτηριστικά του Bash στη γραμμή εντολής: προσπαθήστε να κάνετε τις ασκήσεις πληκτρολογώντας όσο το δυνατό λιγότερους χαρακτήρες!
· Καθορίστε εάν εργάζεστε σε γραφική μορφή ή μορφή κειμένου.
Εργάζομαι σε μορφή κειμένου/γραφική μορφή. (υπογραμμίστε αυτό που δεν είναι κατάλληλο)
· Συνδεθείτε με το όνομα χρήστη και τον κωδικό πρόσβασης που δημιουργήσατε για σας κατά τη διάρκεια της εγκατάστασης.
· Αποσυνδεθείτε.
· Συνδεθείτε ξανά, χρησιμοποιώντας ένα ανύπαρκτο όνομα χρήστη.
-> Τι συμβαίνει;
Συνδεθείτε ξανά με το όνομα χρήστη και τον κωδικό πρόσβασης.
· Αλλάξτε τον κωδικό πρόσβασης σε P6p3.aa! και πατήστε το πλήκτρο Enter.
-> Τι συμβαίνει;
· Προσπαθήστε ξανά, αυτή τη φορά εισάγετε έναν κωδικό που είναι γελοία εύκολο, όπως 123 ή aaa.
-> Τι συμβαίνει;
· Προσπαθήστε ξανά, αυτή τη φορά μην εισάγετε έναν κωδικό αλλά απλά πατήστε το πλήκτρο Enter.
-> Τι συμβαίνει;
· Δοκιμάστε την εντολή psswd αντί για passwd
-> Τι συμβαίνει;
Νέος κωδικός πρόσβασης |
|
---|---|
|
Αν δεν αλλάξετε τον κωδικό σας ξανά σε αυτόν που ήταν πριν την άσκηση, θα είναι "P6p3.aa!". Αλλάξτε τον κωδικό σας μετά την άσκηση! Σημειώστε ότι κάποια συστήματα δεν επιτρέπουν την ανακύκλωση κωδικών, δηλαδή να ανακτήσετε έναν παλιότερο κωδικό σε συγκεκριμένο χρονικό διάστημα ή αριθμό αλλαγών κωδικών, ή και τα δύο. |
Αυτές είναι μερικές ασκήσεις εμπέδωσης.
· Εισάγετε την εντολή cd blah
-> Τι συμβαίνει;
· Εισάγετε την εντολή cd ..
Θυμηθείτε το κενό μεταξύ "cd" και ".."! Χρησιμοποιήστε την εντολή pwd.
-> Τι συμβαίνει;
· Εμφανίστε την λίστα με τα περιεχόμενα του καταλόγου με την εντολή ls.
-> Τι βλέπετε?
-> Τι πιστεύετε ότι είναι αυτά;
-> Ελέξτε χρησιμοποιώντας την εντολή pwd.
· Εισάγετε την εντολή cd.
-> Τι συμβαίνει;
· Επαναλάβετε το βήμα 2 δύο φορές.
-> Τι συμβαίνει;
· Εμφανίστε το περιεχόμενο αυτού του καταλόγου.
· Προσπαθήστε την εντολή cd root
-> Τι συμβαίνει;
-> Σε ποιους καταλόγους έχετε πρόσβαση;
· Επαναλάβετε το βήμα 4.
Γνωρίζετε κάποια άλλη δυνατότητα να φτάσετε στο σημείο που είστε τώρα;
· Αλλάξτε τον κατάλογο σε / και μετά σε etc. Πληκτρολογήστε ls; αν η έξοδος είναι μακρύτερη από την οθόνη, μεγαλώστε το παράθυρο, ή δοκιμάστε Shift+PageUp και Shift+PageDown.
Το αρχείο inittab περιέχει την απάντηση της πρώτης ερώτησης σ’αυτή τη λίστα. Δοκίμασε σ’αυτή την εντολή file.
-> Ο τύπος αρχείου του inittab μου είναι .....
· Χρησιμοποιήστε την εντολή cat inittab και διαβάστε το αρχείο.
-> Ποια είναι η προεπιλεγμένη διεπαφή στον υπολογιστή σας;
· Επιστρέψτε στον δικό σας κατάλογο χρησιμοποιώντας την εντολή cd.
· Εισάγετε την εντολή file .
-> Βοηθάει αυτό να βρείτε τη σημασία του "."?
· Μπορείτε να κοιτάξετε το "." χρησιμοποιώντας την εντολή cat;
· Η βοήθεια για το πρόγραμμα cat εμφανίζεται , χρησιμοποιώντας την επιλογή --help. Χρησιμοποιήστε την επιλογή αρίθμησης των γραμμών εξόδου για να μετρήσετε πόσοι χρήστες βρίσκονται στο αρχείο /etc/passwd.
· Διαβάστε man intro
· Διαβάστε man ls
· Διαβάστε info passwd
· Εισάγετε την εντολή apropos pwd.
· Δοκιμάστε man ή info με cd.
-> Πως θα μάθετε περισσότερα για το cd?
· Διαβάστε ls --help και δοκιμάστε το.
Μετά την αρχική εξερεύνηση στο Κεφάλαιο 2, είμαστε έτοιμοι να αναλύσουμε με περισσότερη λεπτομέρεια τα αρχεία και τους καταλόγους σε ένα σύστημα Linux. Πολλοί χρήστες συναντούν δυσκολίες με το Linux διότι τους λείπει μια γενική επισκόπηση για τα είδη των δεδομένων, και τις τοποθεσίες στις οποίες αυτά βρίσκονται. Θα προσπαθήσουμε να ρίξουμε φως στην οργάνωση των αρχείων στο σύστημα αρχείων.
Θα παραθέσουμε επίσης τα πιο σημαντικά αρχεία και καταλόγους και θα χρησιμοποιήσουμε διαφορετικές μεθόδους για την εμφάνιση του περιεχομένου αυτών των αρχείων, ενώ ταυτόχρονα θα μάθουμε με ποιον τρόπο τα αρχεία και οι κατάλογοι μπορούν να δημιουργηθούν, να μετακινηθούν και να διαγραφούν.
Μετά την ολοκλήρωση των ασκήσεων στο κεφάλαιο αυτό θα μπορείτε:
Μια γενική περιγραφή του συστήματος UNIX, που ισχύει και για το Linux, είναι η εξής:
"Σε ένα σύστημα UNIX τα πάντα είναι αρχεία· εάν κάτι δεν είναι αρχείο, τότε είναι διεργασία."
Η δήλωση αυτή είναι αληθής επειδή υπάρχουν ειδικά αρχεία που είναι κάτι παραπάνω από απλά αρχεία (για παράδειγμα ονομασμένοι δίαυλοι και υποδοχές), αλλά για να παραμείνουν τα πράγματα απλά, η διαπίστωση ότι οτιδήποτε είναι αρχείο είναι μια δεκτή γενίκευση. Ένα σύστημα Linux, όπως το UNIX, δεν κάνει διάκριση μεταξύ ενός αρχείου και ενός καταλόγου, εφόσον ένας κατάλογος είναι απλά ένα αρχείο που περιέχει ονόματα άλλων αρχείων. Προγράμματα, υπηρεσίες, κείμενα, εικόνες κλπ. είναι όλα αρχεία. Συσκευές εισόδου και εξόδου, και γενικά όλες οι συσκευές, θεωρούνται ότι είναι αρχεία σύμφωνα με το σύστημα.
Προκειμένου να γίνει διαχείριση όλων αυτών των αρχείων με μεθοδικό τρόπο, θα μπορούσε να τα αντιληφθεί κανείς μέσα σε μία οργανωμένη δενδρική δομή στον σκληρό δίσκο, όπως γνωρίζουμε από το MS-DOS, για παράδειγμα. Τα μεγάλα κλαδιά περιέχουν περισσότερα κλαδιά, και τα κλαδιά στο τέλος περιέχουν τα φύλλα του δέντρου, δηλαδή τα κανονικά αρχεία. Προς το παρόν θα χρησιμοποιήσουμε αυτή την εικόνα του δέντρου, αλλά θα ανακαλύψουμε αργότερα για ποιο λόγο η εικόνα αυτή δεν είναι απόλυτα ακριβής.
Τα περισσότερα αρχεία είναι απλά αρχεία και ονομάζονται κανονικά αρχεία· περιέχουν απλά δεδομένα, για παράδειγμα αρχεία κειμένου, εκτελέσιμα αρχεία ή προγράμματα, δεδομένα εισόδου σε ή εξόδου από ένα πρόγραμμα κλπ .
Παρόλο που είναι σχετικά ασφαλές να θεωρείτε ότι οτιδήποτε συναντάτε σε ένα σύστημα Linux είναι αρχείο, υπάρχουν κάποιες εξαιρέσεις.
Η επιλογή -l στην εντολή ls εμφανίζει τον τύπο αρχείου, χρησιμοποιώντας τον πρώτο χαρακτήρα κάθε γραμμής εισόδου:
jaime:~/Documents> ls -l total 80 -rw-rw-r-- 1 jaime jaime 31744 Feb 21 17:56 intro Linux.doc -rw-rw-r-- 1 jaime jaime 41472 Feb 21 17:56 Linux.doc drwxrwxr-x 2 jaime jaime 4096 Feb 25 11:50 course |
Αυτός ο πίνακας παρέχει μια επισκόπηση των χαρακτήρων που προσδιορίζουν τον τύπο αρχείου:
Πίνακας 3-1. Τύποι αρχείων στην επιλογή -l
Σύμβολο |
Ερμηνεία |
---|---|
- |
Κανονικό αρχείο |
d |
Κατάλογος |
l |
Σύνδεσμος |
c |
Ειδικό αρχείο |
s |
Υποδοχή |
p |
Ονομασμένη σωλήνωση |
b |
Συσκευή δεδομένων |
Προκειμένου να μην απαιτείται να προβαίνετε στην εμφάνιση της μεγάλης λίστας για να βρίσκετε τον τύπο των αρχείων, πολλά συστήματα εξ' ορισμού δεν διανέμουν απλά την ls, αλλά την ls -F, η οποία προσθέτει ως κατάληξη στα ονόματα των αρχείων έναν από τους χαρακτήρες "/=*|@" για να υποδηλώσουν τον τύπο αρχείου. Για να γίνει πιο κατανοητό στον αρχάριο χρήστη, οι επιλογές -F και --color συνήθως συνδυάζονται, βλέπε Ενότητα 3.3.1.1. Θα χρησιμοποιήσουμε την ls -F από την αρχή μέχρι το τέλος αυτού του εγγράφου για ευκολότερη ανάγνωση.
Ως χρήστης, θα χρειαστείτε να ασχοληθείτε άμεσα μόνο με απλά αρχεία, εκτελέσιμα αρχεία, καταλόγους και συνδέσμους. Οι τύποι ειδικών αρχείων υπάρχουν για να υποχρεώνουν το σύστημα να κάνει ό,τι εσείς απαιτείτε από αυτό και διαμορφώνονται από διαχειριστές συστημάτων και προγραμματιστές.
Τώρα, προτού αναφερθούμε στα σημαντικά αρχεία και καταλόγους, είναι ανάγκη να γνωρίζουμε περισσότερα σχετικά με τη διαμέριση.
Οι περισσότεροι έχουμε μια ασαφή εικόνα σχετικά με το τι είναι τα διαμερίσματα, καθώς κάθε λειτουργικό σύστημα έχει την ικανότητα να τις δημιουργεί ή να τις διαγράφει. Μπορεί να εμφανίζεται παράξενο το γεγονός ότι το Linux χρησιμοποιεί περισσότερο από ένα διαμέρισμα στον ίδιο δίσκο, ακόμα και αν χρησιμοποιηθεί η προεπιλεγμένη διαδικασία εγκατάστασης, γι' αυτό το λόγο θα δώσουμε κάποιες εξηγήσεις.
Ένας από τους στόχους των διαφορετικών διαμερισμάτων είναι η υψηλότερη ασφάλεια δεδομένων σε περίπτωση καταστροφής. Με τον διαχωρισμό του σκληρού δίσκου σε διαμερίσματα τα δεδομένα μπορούν να ομαδοποιηθούν και να διαχωριστούν. Όταν συμβαίνει ένα ατύχημα, μόνο τα δεδομένα στο διαμέρισμα που δέχθηκε το πλήγμα θα καταστραφούν, ενώ τα δεδομένα στα υπόλοιπα διαμερίσματα είναι πολύ πιθανό να διασωθούν.
Αυτή η αρχή ανατρέχει στην εποχή που το Linux δεν είχε συστήματα αρχείων καταγραφής και οι διακοπές λειτουργίας μπορεί να οδηγούσαν σε καταστροφή. Η πρακτική των πολλαπλών κατατμήσεων συνεχίζεται ακόμα και τώρα για λόγους ασφάλειας και σταθερότητας· ώστε ένα ρήγμα στο σύστημα αρχείων να μην σημαίνει αυτόματα πως όλο το σύστημα βρίσκεται σε κίνδυνο. Αυτός είναι σήμερα ο σημαντικότερος λόγος για τη διαμέριση. Ένα απλό παράδειγμα: ένας χρήστης δημιουργεί ένα αρχείο σεναρίου, ένα πρόγραμμα ή μια εφαρμογή διαδικτύου που αρχίζει και γεμίζει τον δίσκο. Εάν ο δίσκος περιέχει μόνο ένα μεγάλο διαμέρισμα, ολόκληρο το σύστημα θα σταματήσει να λειτουργεί αν ο δίσκος γεμίσει. Εάν ο χρήστης αποθηκεύει τα δεδομένα σε ξεχωριστό διαμέρισμα, τότε μόνο η λειτουργία αυτού του διαμερίσματος θα επηρεαστεί, ενώ το διαμέρισμα του συστήματος και πιθανόν και άλλα θα εξακολουθούν να λειτουργούν.
Σημειωτέον ότι με ένα σύστημα αρχείων καταγραφής αποκτάτε ασφάλεια δεδομένων μόνο σε περίπτωση διακοπών λειτουργίας και ξαφνικής αποσύνδεσης αποθηκευτικών συσκευών. Αυτό δεν συμπεριλαμβάνει συνεπώς προστασία δεδομένων από μαγνητικά προβλήματα δίσκου και λογικά λάθη στο σύστημα αρχείων. Σε αυτές τις περιπτώσεις χρησιμοποιείται η λύση συστοιχίας RAID (Redundant Array of Inexpensive Disks).
Υπάρχουν δύο είδη κύριων διαμερισμάτων σε ένα σύστημα Linux:
διαμέρισμα δεδομένων: κανονικά δεδομένα συστήματος Linux· συμπεριλαμβανόμενου του διαμερίσματος ρίζας, που περιέχει όλα τα δεδομένα για την εκκίνηση και εκτέλεση του συστήματος , και
διαμέρισμα ανταλλαγής (swap): επέκταση της φυσικής μνήμης του υπολογιστή· επιπλέον μνήμη στον σκληρό δίσκο.
Τα περισσότερα συστήματα περιέχουν ένα διαμέρισμα ρίζας (root), ένα ή περισσότερα διαμερίσματα δεδομένων και ένα ή περισσότερα διαμερίσματα ανταλλαγής. Συστήματα σε μικτά περιβάλλοντα είναι δυνατό να περιέχουν διαμερίσματα για δεδομένα διαφορετικών συστημάτων όπως μία κατάτμηση συστήματος αρχείων FAT ή VFAT (ή NTFS ΣτΜ) για δεδομένα MS Windows.
Τα περισσότερα συστήματα Linux χρησιμοποιούν το fdisk κατά το χρόνο εγκατάστασης για να θέσουν τον τύπο διαμέρισης. Θα έχετε παρατηρήσει κατά την άσκηση του Κεφαλαίου 1 ότι αυτό συνήθως πραγματοποιείται αυτόματα. Όμως σε μερικές περιπτώσεις δεν θα είστε τόσο τυχεροί. Σε τέτοιες περιπτώσεις θα χρειαστεί να επιλέξετε χειροκίνητα τον τύπο διαμέρισης όπως και να δημιουργήσετε το ίδιο το διαμέρισμα. Τα συνηθισμένα διαμερίσδματα Linux έχουν τον αριθμό 82 για το swap και 83 για δεδομένα, όπου μπορεί να είναι είτε διαμέρισμα με καταγραφή (ext3) είτε απλό (ext2, σε παλαιότερα συστήματα). Το εργαλείο fdisk εμπεριέχει βοήθεια, σε περίπτωση που ξεχάσετε αυτές τις τιμές.
Εκτός από αυτούς του δύο τύπους, το Linux υποστηρίζει μια συλλογή από άλλους τύπους συστημάτων αρχείων, όπως το σχετικά πρόσφατο σύστημα Reiser, JFS, NFS, FATxx και πολλά ακόμη συστήματα αρχείων που είναι διαθέσιμα σε άλλα (εμπορικά) λειτουργικά συστήματα.
Το συνηθισμένο διαμέρισμα ρίζας (που υποδεικνύεται με μια αριστερότροπη κάθετο /) είναι περίπου 100-500MB, και περιέχει αρχεία διαμόρφωσης του συστήματος, τις περισσότερες βασικές εντολές και τα προγράμματα διακομιστή, τις βιβλιοθήκες του συστήματος, κάποιο προσωρινό χώρο αποθήκευσης και τον κατάλογο εργασίας του υπερ-χρήστη (διαχειριστή). Μία συνηθισμένη εγκατάσταση απαιτεί περίπου 250MB για το διαμέρισμα ρίζας (root).
Το διαμέρισμα ανταλλαγής (που υποδεικνύεται με το Swap) είναι προσπελάσιμος μόνο από το ίδιο το σύστημα, και είναι κρυμμένος στην κανονική λειτουργία. Το Swap είναι το σύστημα που εξασφαλίζει, όπως στα κανονικά συστήματα UNIX, ότι θα συνεχίσετε να εργάζεστε οτιδήποτε και αν συμβεί. Στο Linux, δε θα συναντήσετε ποτέ ενοχλητικά μηνύματα όπως Μνήμη πλήρης, παρακαλώ κλείστε κάποιες εφαρμογές και ξανα-προσπαθήστε, χάρη σε αυτήν την επιπλέον μνήμη. Η διαδικασία εικονικής μνήμης έχει εδώ και καιρό υιοθετηθεί και από λειτουργικά συστήματα έξω από τον κόσμο του UNIX.
Η χρήση της μνήμης που βρίσκεται στον σκληρό δίσκο απαιτεί περισσότερο χρόνο συγκριτικά προς την χρήση της πραγματικής μνήμης ενός υπολογιστή, αλλά η ύπαρξή της προσδίδει μεγάλη άνεση. Θα μάθουμε περισσότερα για το swap όταν μιλήσουμε για τις διεργασίες στο Κεφάλαιο 4.
Το Linux γενικά βασίζεται στη δημιουργία χώρου swap με μέγεθος διπλάσιο από το αντίστοιχο μέγεθος της φυσικής μνήμης. Όταν εγκαθιστάτε ένα σύστημα, θα πρέπει να γνωρίζετε πως θα το κάνετε αυτό. Ένα παράδειγμα συστήματος με 512MB RAM:
1η επιλογή: μία κατάτμηση swap του 1 GB
2η επιλογή: δύο κατατμήσεις swap των 512 MB
3η επιλογή: σε δύο σκληρούς δίσκους: μία κατάτμηση των 512MB σε κάθε σκληρό δίσκο.
Η τελευταία επιλογή θα έχει την καλύτερη απόδοση όταν έχουμε μεγάλο βαθμό δεδομένων Εισόδου/Εξόδου.
Διαβάστε το εγχειρίδιο του προγράμματος που θέλετε να χρησιμοποιήσετε για συγκεκριμένες οδηγίες. Κάποιες εφαρμογές όπως οι βάσεις δεδομένων, είναι πιθανό να χρειάζονται περισσότερο χώρο ανταλλαγής. Άλλες πάλι, όπως σε μερικά φορητά συστήματα, μπορεί να μην έχουν καθόλου χώρο ανταλλαγής λόγω του περιορισμένου μεγέθους του σκληρού δίσκου. Ο χώρος ανταλλαγής εξαρτάται επίσης από την έκδοση του πυρήνα που χρησιμοποιείτε.
Σε πολλές διανομές ο πυρήνας βρίσκεται σε ξεχωριστό διαμέρισμα, επειδή είναι το πιο σημαντικό αρχείο στο σύστημα αρχείων. Εάν συμβαίνει αυτό, τότε θα ανακαλύψετε ότι έχετε και ένα διαμέρισμα /boot, όπου υπάρχει ο πυρήνας(ή πυρήνες) μαζί και τα άλλα συνοδευτικά αρχεία δεδομένων.
Το υπόλοιπο μέρος του σκληρού δίσκου(ων) είναι γενικά χωρισμένο σε διαμερίσματα δεδομένων, παρόλο που είναι δυνατόν όλα τα μη κρίσιμα δεδομένα για το σύστημα να βρίσκονται σε ένα διαμέρισμα, όπως για παράδειγμα όταν πραγματοποιείτε μία συνηθισμένη εγκατάσταση σταθμού εργασίας. Όταν μη κρίσιμα δεδομένα διαχωρίζονται σε διαφορετικά διαμερίσματα, αυτό πραγματοποιείται συνήθως ακολουθώντας ένα ορισμένο υπόδειγμα:
ένα διαμέρισμα για προγράμματα χρηστών (/usr)
ένα διαμέρισμα που περιέχει τα προσωπικά δεδομένα των χρηστών (/home)
ένα διαμέρισμα που αποθηκεύει προσωρινά δεδομένα όπως ουρές εκτυπώσεων και ταχυδρομείου(/var)
ένα διαμέρισμα για επιπλέον λογισμικό (/opt)
Μετά την ολοκλήρωση της διαμέρισης, μπορείτε μόνο να προσθέσετε διαμερίσματα. Η αλλαγή του μεγέθους και των ιδιοτήτων των υπαρχόντων διαμερισμάτων είναι δυνατή αλλά δεν ενδείκνυται.
Η διαμέριση καθορίζεται από τον διαχειριστή του του συστήματος. Σε μεγαλύτερα συστήματα, ο/η διαχειριστής του συστήματος μπορούν να μοιράσουν ένα διαμέρισμα σε πολλούς σκληρούς δίσκους χρησιμοποιώντας το κατάλληλο λογισμικό. Οι περισσότερες διανομές προσφέρουν πρότυπες εγκαταστάσεις βελτιστοποιημένες για σταθμούς εργασίας (μέσοι χρήστες) και για διακομιστές γενικού σκοπού, αλλά δέχονται και προσαρμοσμένες διαμερίσεις. Κατά την διαδικασία της εγκατάστασης μπορείτε να καθορίσετε την δική σας διαμέριση χρησιμοποιώντας είτε το ειδικό εργαλείο της διανομής, που είναι συνήθως ένα καθαρά γραφικό περιβάλλον, είτε το fdisk, ένα εργαλείο εντολών για διαμέριση και τον καθορισμό των ιδιοτήτων τους.
Μια εγκατάσταση σταθμού εργασίας ή πελάτη επιλέγεται για χρήση κυρίως από τον ίδιο τον χρήστη. Αυτό αντικατοπτρίζεται από το λογισμικό προς εγκατάσταση που δίνει έμφαση στα πακέτα χρήστη, όπως όμορφα θέματα επιφάνειας εργασίας, εργαλεία ανάπτυξης, προγράμματα πελατών για ηλεκτρονικό ταχυδρομείο, λογισμικό πολυμέσων, διαδίκτυο και άλλες υπηρεσίες. Τα πάντα τοποθετούνται μαζί σε ένα μεγάλο διαμέρισμα, προστίθεται χώρος swap διπλάσιος από την RAM και ο σταθμός εργασίας σας είναι ολοκληρωμένος, παρέχοντας το μεγαλύτερο δυνατό μέρος του χώρου του σκληρού δίσκου για προσωπική χρήση, αλλά με το μειονέκτημα της πιθανής απώλειας της ακεραιότητας των δεδομένων σε περίπτωση εμφάνισης προβλημάτων.
Σε έναν διακομιστή, τα δεδομένα του συστήματος βρίσκονται συνήθως χωριστά από τα δεδομένα χρηστών. Προγράμματα που προσφέρουν υπηρεσίες διατηρούνται σε ξεχωριστό μέρος από τα τα δεδομένα που χειρίζεται η ίδια η υπηρεσία. Σε τέτοια συστήματα δημιουργούνται διαφορετικά διαμερίσματα:
ένα διαμέρισμα με όλα τα δεδομένα που απαιτούνται για την εκκίνηση του μηχανήματος
ένα διαμέρισμα με δεδομένα διαμόρφωσης και προγράμματα εξυπηρετητή
ένα ή περισσότερα διαμερίσματα που περιέχουν δεδομένα του διακομιστή όπως πίνακες βάσεων δεδομένων, ταχυδρομεία χρηστών, έναν κατάλογο FTP κλπ.
ένα διαμέρισμα με προγράμματα και εφαρμογές χρηστών
ένα διαμέρισμα για συγκεκριμένα αρχεία χρηστών (προσωπικοί κατάλογοι)
ένα ή περισσότερα διαμερίσματα swap (εικονική μνήμη)
Οι διακομιστές συνήθως έχουν περισσότερη μνήμη και συνακόλουθα χρειάζονται περισσότερο χώρο swap. Συγκεκριμένες διεργασίες του διακομιστή όπως βάσεις δεδομένων, είναι πιθανό να απαιτούν περισσότερο χώρο swap από τον συνηθισμένο· δείτε το συγκεκριμένο εγχειρίδιο για αναλυτικές πληροφορίες. Για καλύτερη απόδοση, το swap χωρίζεται σε διάφορα διαμερίσματα swap.
Όλα τα διαμερίσματα είναι συνδεδεμένα στο σύστημα μέσω ενός σημείου προσάρτησης. Το σημείο προσάρτησης καθορίζει την τοποθεσία μιας συγκεκριμένης σειράς δεδομένων στο σύστημα αρχείων. Συνήθως όλα τα διαμερίσματα συνδέονται μέσω του διαμερίσματος ρίζας. Σε αυτό το διαμέρισμα, που υποδεικνύεται με την αριστερόστροφη κάθετο (/), δημιουργούνται οι κατάλογοι. Αυτοί οι άδειοι κατάλογοι θα είναι το αρχικό σημείο των διαμερισμάτων που συνδέονται. Ένα παράδειγμα: έστω ένα διαμέρισμα που περιέχει τους παρακάτω καταλόγους:
videos/ cd-images/ pictures/ |
Θέλουμε να συνδέσουμε αυτό το διαμέρισμα στο σύστημα αρχείων σε έναν κατάλογο που ονομάζεται /opt/media. Για να γίνει κάτι τέτοιο, ο διαχειριστής συστήματος πρέπει να βεβαιωθεί ότι ο κατάλογος /opt/media υπάρχει στο σύστημα. Κατά προτίμηση θα πρέπει να είναι ένας άδειος κατάλογος. Πώς πραγματοποιείται αυτό αναλύεται παρακάτω στο κεφάλαιο. Στη συνέχεια, χρησιμοποιώντας την εντολή mount, ο διαχειριστής μπορεί να προσαρτήσει το διαμέρισμα στο σύστημα. Εάν κοιτάξετε τα περιεχόμενα του προηγουμένως άδειου καταλόγου /opt/media, θα δείτε ότι περιέχει τους καταλόγους που βρίσκονται στο προσαρτημένο μέσο (σκληρός δίσκος ή διαμέρισμα ενός σκληρού δίσκου, CD,DVD, κάρτα flash, USB stick ή άλλο αποθηκευτικό μέσο).
Κατά την διάρκεια της εκκίνησης του συστήματος, προσαρτώνται τα διαμερίσματα όπως περιγράφεται στο αρχείο /etc/fstab. Κάποια διαμερίσματα δεν προσαρτώνται εξ' ορισμού, για παράδειγμα αυτά που δεν είναι διαρκώς συνδεδεμένα στο σύστημα, όπως το μέσο αποθήκευσης που χρησιμοποιείται από την ψηφιακή σας φωτογραφική μηχανή. Εάν ρυθμιστεί σωστά, η συσκευή θα προσαρτηθεί αμέσως μόλις το σύστημα διαπιστώσει ότι έχει συνδεθεί ή αλλιώς θα εξαρτάται από τον χρήστη της συσκευής, δηλαδή δεν χρειάζεται να είστε απαραίτητα διαχειριστής του συστήματος για να προσαρτήσετε και απο-προσαρτήσετε την συσκευή από το σύστημα. Σχετικό παράδειγμα υπάρχει στην Ενότητα 9.3.
Σε ένα σύστημα που λειτουργεί, πληροφορίες σχετικά με τα διαμερίσματα και τα σημεία προσάρτησής τους μπορούν να εμφανισθούν χρησιμοποιώντας την εντολή df (όπου σημαίνει δίσκος γεμάτος ή δίσκος ελεύθερος). Στο Linux, η εντολή df είναι η έκδοση του GNU, και υποστηρίζει την επιλογή -h(ή αλλιώς human readable- ανθρώπινα κατανοητό), η οποία βελτιώνει κατά πολύ την αναγνωσιμότητα. Παρατηρείστε ότι τα εμπορικά μηχανήματα UNIX συνήθως έχουν δικές τους εκδόσεις του df και πολλών άλλων εντολών. Η συμπεριφορά τους είναι συνήθως η ίδια, αν και οι εκδόσεις των κοινών εργαλείων του GNU έχουν συνήθως περισσότερα και καλύτερα χαρακτηριστικά.
Η εντολή df εμφανίζει μόνο πληροφορίες σχετικά με τα ενεργά διαμερίσματα, εκτός των swap. Αυτά μπορεί να περιλαμβάνουν διαμερίσματα από άλλα συστήματα συνδεδεμένα στο δίκτυο, όπως στο παράδειγμα παρακάτω όπου οι προσωπικοί κατάλογοι είναι προσαρτημένοι από ένα διακομιστή αρχείων στο δίκτυο, μία κατάσταση που συχνά συναντάται σε συλλογικά περιβάλλοντα.
freddy:~> df -h Filesystem Size Used Avail Use% Mounted on /dev/hda8 496M 183M 288M 39% / /dev/hda1 124M 8.4M 109M 8% /boot /dev/hda5 19G 15G 2.7G 85% /opt /dev/hda6 7.0G 5.4G 1.2G 81% /usr /dev/hda7 3.7G 2.7G 867M 77% /var fs1:/home 8.9G 3.7G 4.7G 44% /.automount/fs1/root/home |
Για ευκολία, το σύστημα αρχείων Linux γίνεται αντιληπτό ως μια δενδρική δομή. Σε ένα σύνηθες σύστημα Linux θα διαπιστώσετε ότι η διάταξη ακολουθεί γενικά τον παρακάτω συνδυασμό.
Εικόνα 3-1. Διάταξη συστήματος αρχείων Linux
Αυτή είναι μια διάταξη από σύστημα RedHat. Ανάλογα με τον διαχειριστή του συστήματος, το λειτουργικό σύστημα και την αποστολή του μηχανήματος UNIX, η δομή μπορεί να ποικίλλει, και κατάλογοι μπορούν να παραλειφθούν ή να προστεθούν κατά βούληση. Τα ονόματα δεν είναι προκαθορισμένα· είναι απλώς συμβατικά.
Το δέντρο του συστήματος αρχείων ξεκινά από την κάθετο, που υποδεικνύεται με μια αριστερότροπη κάθετο (/). Αυτός ο κατάλογος περιέχει όλους τους υποκείμενους καταλόγους και αρχεία και επίσης ονομάζεται κατάλογος-ρίζα ή αλλιώς "ρίζα" του συστήματος αρχείων.
Κατάλογοι που βρίσκονται ένα μόνο επίπεδο κάτω από τον κατάλογο ρίζα συχνά συνοδεύονατι από μία κάθετο για να δείξουν τη θέση τους και να αποτρέψουν τη σύγχυση με άλλους καταλόγους που θα μπορούσαν να έχουν το ίδιο όνομα. Ξεκινώντας με ένα νέο σύστημα, είναι πάντα μια καλή ιδέα να ρίχνουμε μια ματιά στο κατάλογο ρίζα. Ας δούμε τι μπορεί να βρείτε εκεί:
emmy:~> cd / emmy:/> ls bin/ dev/ home/ lib/ misc/ opt/ root/ tmp/ var/ boot/ etc/ initrd/ lost+found/ mnt/ proc/ sbin/ usr/ |
Πίνακας 3-2. Υποκατάλογοι του καταλόγου ρίζα
Κατάλογος |
Περιεχόμενο |
---|---|
/bin |
Κοινά προγράμματα, που μοιράζονται το σύστημα, ο υπερ-χρήστης (διαχειριστής) του συστήματος και οι χρήστες. |
/boot |
Τα αρχεία εκκίνησης και ο πυρήνας, vmlinuz. Σε κάποιες πρόσφατες διανομές βρίσκονται και δεδομένα του grub. Τo Grub είναι το GRand Unified Boot loader και είναι μια προσπάθεια για να αποπεμφθούν οι πολλοί και διάφοροι διαχειριστές εκκίνησης που γνωρίζουμε σήμερα. |
/dev |
Περιέχει αναφορές για όλο υλικό των περιφερειακών συσκευών της CPU, οι οποίες παρουσιάζονται σαν αρχεία με ειδικές ιδιότητες. |
/etc |
Τα πιο σημαντικά αρχεία διαμόρφωσης του συστήματος βρίσκονται στον /etc, ο κατάλογος αυτός περιέχει δεδομένα παρόμοια με αυτά στον Πίνακα Ελέγχου των Windows |
/home |
Προσωπικοί κατάλογοι των κοινών χρηστών. |
/initrd |
(σε μερικές διανομές) Πληροφορίες για εκκίνηση. Μη τον διαγράφετε! |
/lib |
Αρχεία βιβλιοθηκών, περιέχει αρχεία για όλα τα είδη των προγραμμάτων που είναι αναγκαία για το σύστημα και τους χρήστες |
/lost+found |
Κάθε διαμέρισμα έχει έναν κατάλογο lost+found στον κύριο κατάλογό της. Αρχεία που διασώζονται σε καταστάσεις διακοπών λειτουργίας βρίσκονται εδώ. |
/misc |
Για διάφορους σκοπούς. |
/mnt |
Συνηθισμένο σημείο προσάρτησης για εξωτερικά συστήματα, όπως ένα CD-ROM ή μία ψηφιακή μηχανή. |
/net |
Συνηθισμένο σημείο προσάρτησης για ολόκληρα απομακρυσμένα συστήματα αρχείων. |
/opt |
Τυπικά, περιέχει επιπλέον λογισμικό και λογισμικό τρίτων εταίρων. |
/proc |
Ένα εικονικό σύστημα αρχείων που περιέχει πληροφορίες σχετικά με τους πόρους του συστήματος. Περισσότερες πληροφορίες σχετικά με τη σημασία των αρχείων στο proc αποκτάτε με την εισαγωγή της εντολής man proc σε ένα παράθυρο τερματικού. Το αρχείο proc.txt αναλύει το εικονικό σύστημα αρχείων λεπτομερώς. |
/root |
Ο προσωπικός κατάλογος τους διαχειριστή του συστήματος. Προσέξτε τη διαφορά μεταξύ του /, του καταλόγου ρίζα και του /root, του προσωπικού καταλόγου του χρήστη root. |
/sbin |
Προγράμματα για χρήση από το σύστημα και τον διαχειριστή του συστήματος. |
/tmp |
Προσωρινός χώρος για χρήση από το σύστημα, αδειάζει κατά την εκκίνηση, γι' αυτό τον λόγο μη τον χρησιμοποιείτε για να αποθηκεύετε κάποια εργασία! |
/usr |
Προγράμματα, βιβλιοθήκες, εγχειρίδια κλπ. για όλα τα προγράμματα χρηστών. |
/var |
Χώρος αποθήκευσης όλων των αρχείων μεταβλητών και προσωρινών αρχείων που δημιουργούνται από τους χρήστες, όπως αρχεία καταγραφής (log), η ουρά ταχυδρομείου και εκτύπωσης, προσωρινός χώρος αποθήκευσης των αρχείων που κατεβαίνουν από το διαδίκτυο ή για την αποθήκευση μιας εικόνας ενός CD πριν την εγγραφή του. |
Πώς μπορείτε να βρείτε σε ποιο διαμέρισμα βρίσκεται ο κατάλογος που είστε; Χρησιμοποιώντας την εντολή df με μία τελεία (.) ως επιλογή εμφανίζει το διαμέρισμα, στο οποίο ανήκει ο κατάλογος στον οποίο βρισκόμαστε, και μας πληροφορεί για το μέγεθος του χώρου που χρησιμοποιείται στο διαμέρισμα:
sandra:/lib> df -h . Filesystem Size Used Avail Use% Mounted on /dev/hda7 980M 163M 767M 18% / |
Ως γενικός κανόνας, κάθε κατάλογος κάτω από τον κατάλογο ρίζα βρίσκεται στο διαμέρισμα ρίζα (root), εκτός εάν έχει ξεχωριστή καταχώρηση στην πλήρη λίστα από το df (ή το df -h χωρίς άλλες επιλογές).
Διαβάστε περισσότερα με την εντολή man hier.
Για τους περισσότερους χρήστες και για τις πιο κοινές εργασίες της διαχείρισης του συστήματος, είναι αποδεκτό να θεωρούμε ότι τα αρχεία και οι κατάλογοι είναι οργανωμένοι σε μία δενδρική δομή. Όμως ο υπολογιστής δεν κατανοεί τα δένδρα και τις δενδρικές δομές.
Κάθε διαμέρισμα έχει το δικό της σύστημα αρχείων. Εάν φανταστούμε όλα αυτά τα συστήματα αρχείων μαζί, μπορούμε να σχηματίσουμε μια ιδέα της δενδρικής δομής για το πλήρες σύστημα, αλλά δεν είναι τόσο απλό. Σε ένα σύστημα αρχείων, το αρχείο αναπαριστάται ως ένας inode, ένα είδος σειριακού αριθμού που περιέχει πληροφορίες σχετικά με τα πραγματικά δεδομένα που αποτελούν το αρχείο: σε ποιον ανήκει αυτό το αρχείο και πού βρίσκεται στον σκληρό δίσκο.
Κάθε διαμέρισμα έχει την δική του σειρά από inodes· σε όλη την έκταση ενός συστήματος με πολλαπλά διαμερίσματα, μπορούν να υπάρχουν αρχεία με τον ίδιο αριθμό inode.
Κάθε inode περιγράφει μια δομή δεδομένων στον σκληρό δίσκο, καταγράφοντας τις ιδιότητες του αρχείου, συμπεριλαμβανομένης της φυσικής τοποθεσίας των δεδομένων του αρχείου. Όταν ένας σκληρός δίσκος αρχικοποιείται ώστε να δεχθεί αποθήκευση δεδομένων, συνήθως κατά την εγκατάσταση του αρχικού συστήματος ή όταν προστίθενται επιπλέον δίσκοι σε ένα υπάρχον σύστημα, ένας σταθερός αριθμός inodes δημιουργείται ανά διαμέρισμα. Συνήθως βασιζόμαστε στο ότι υπάρχει 1 inode ανά 2 με 8 kilobytes αποθηκευτικού μέσου.
Την στιγμή που ένα νέο αρχείο δημιουργείται, αποκτά ένα ελεύθερο inode. Σε αυτό τον inode αποθηκεύονται οι ακόλουθες πληροφορίες:
Ιδιοκτήτης και ομάδα του ιδιοκτήτη του αρχείου
Τύπος αρχείου (απλός, κατάλογος, ...)
Δικαιώματα πρόσβασης στο αρχείο Ενότητα 3.4.1
Ημερομηνία και ώρα δημιουργίας, τελευταίας ανάγνωσης και μετατροπής.
Ημερομηνία και ώρα που άλλαξαν αυτές οι πληροφορίες στον κόμβο-D.
Αριθμός συνδέσμων σε αυτό το αρχείο (βλέπε αργότερα στον κεφάλαιο).
Μέγεθος αρχείου
Μία διεύθυνση που καθορίζει τη φυσική τοποθεσία των δεδομένων του αρχείου.
Οι μόνες πληροφορίες που δεν περιέχονται σε έναν inode είναι το όνομα αρχείου και και ο κατάλογος στον οποίο βρίσκεται. Αυτές αποθηκεύονται στα ειδικά αρχεία καταλόγου. Συγκρίνοντας τα ονόματα αρχείων και τους αριθμούς inode, το σύστημα μπορεί να κατασκευάσει μία δενδρική δομή όπου ο χρήστης κατανοεί. Οι χρήστες μπορούν να εμφανίσουν τους αριθμούς inode χρησιμοποιώντας την επιλογή -i στο ls. Οι inodes έχουν τον δικό τους ξεχωριστό χώρο στον δίσκο.
Όταν ζητάτε από το σύστημα την εκτέλεση μιας εντολής, σχεδόν ποτέ δεν χρειάζεται να δώσετε τη πλήρη διαδρομή προς το αντίστοιχο εκτελέσιμο πρόγραμμα. Για παράδειγμα γνωρίζουμε οτι η εντολή ls βρίσκεται στον κατάλογο /bin directory (ελέγξτε το με which -a ls), αλλά δεν χρειάζεται να εισάγουμε την εντολή στη μορφή /bin/ls για να εκτελεστεί.
Η μεταβλητή περιβάλλοντος PATH ασχολείται με αυτό. Αυτή η μεταβλητή κρατά όλους τους καταλόγους του συστήματος όπου μπορεί να υπάρχουν εκτελέσιμα αρχεία, και μας γλυτώνει από το να εισάγουμε πλήρη ονόματα διαδρομής. Επόμένως η PATH περιέχει αρκετούς καταλόγους που ονομάζονται bin, όπως φαίνεται στο παρακάτω παράδειγμα.. Η εντολή echo χρησιμοποιείται για την εμφάνιση του περιεχομένου ("$") της μεταβλητής PATH:
rogier:> echo $PATH /opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin |
Σε αυτό το παράδειγμα , οι κατάλογοι /opt/local/bin, /usr/X11R6/bin, /usr/bin, /usr/sbin και /bin εξετάζονατι διαδοχικά για την εύρεση του προς εκτέλεση προγράμματος. Μόλις υπάρξει ταύτιση η αναζήτηση σταματά, ακόμη και αν δεν έχουν ερευνηθεί όλοι οι κατάλογοι. Αυτό μπορεί να οδηγήσει σε περίεργες καταστάσεις. Στο πρώτο παράδειγμα παρακάτω, η χρήστης ξέρει οτι υπάρχει ένα πρόγραμμα που λέγεται sendsms για την αποστολή μηνυμάτων SMS, που το χρησιμοποιεί άλλος χρήστης του συστήματος αλλά αυτή δεν μπορεί. Η διαφορά βρίσκεται στη διαμόρφωση της μεταβλητής PATH:
[jenny@blob jenny]$ sendsms bash: sendsms: command not found [jenny@blob jenny]$ echo $PATH /bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony Password: tony:~>which sendsms sendsms is /usr/local/bin/sendsms tony:~>echo $PATH /home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\ /usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin |
Σημειώστε τη χρήση της εντολής su (switch user, αλλαγή χρήστη), που επιτρέπει την εκτέλεση ενός περιβάλλοντος φλοιού άλλου χρήστη, εφ' όσον φυσικά γνωρίζουμε τον κωδικό πρόσβασης.
Η δεξιόστροφη κάθετος (backslash) υποδεικνύει συνέχεια της γραμμής στην επόμενη, χωρίς τη μεσολάβηση Enter.
Στο επόμενο παράδειγμα, ένας χρήστης θέλει να χρησιμοποιήσει την εντολή wc (μέτρηση λέξεων, word count) για να ελέγξει τον αριθμό γραμμάτων σε ένα αρχείο, αλλά τίποτε δεν συμβαίνει και αναγκάζεται να τερματίσει με το συνδυασμό Ctrl+C:
jumper:~> wc -l test (Ctrl+C) jumper:> which wc wc is hashed (/home/jumper/bin/wc) jumper:~> echo $PATH /home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\ /usr/bin:/usr/sbin:/bin:/sbin |
Η χρήση της εντολής which δείχνει οτι ο χρήστης έχει ένα κατάλογο bin κάτω από τον οικείο του κατάλογο που περιέχει ένα πρόγραμμα που λέγεται επίσης wc. Εφ' όσον ο οικείος κατάλογος βρίσκεται πρώτος στη σειρά αναζήτησης διαδρομών κατά τη κλήση του wc, αυτό το “σπιτικό” πρόγραμμα εκτελείται, με μια είσοδο που πιθανότατα δεν καταλαβαίνει, και έτσι πρέπει να το διακόψουμε. Υπάρχουν διάφοροι τρόποι να λύσουμε το πρόβλημα (έτσι είναι συνήθως στο UNIX/Linux): μια λύση είναι η μετονομασία του προγράμματος wc του χρήστη, μια άλλη είναι να δώσουμε το πλήρες όνομα διαδρομής που μπορούμε να βρούμε με την επιλογή -a στην εντολή which.
Αν ο χρήστης δεν χρησιμοποιεί πολύ τα προγράμματα στον οικείο του κατάλογο μπορεί να τροποποιήσει τη μεταβλητή PATH:
jumper:~> export PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\ /usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin |
Οι αλλαγές δεν είναι μόνιμες!
Σημειώστε οτι η χρήση της
εντολής export σε ένα φλοιό, προκαλούν
προσωρινές μόνο αλλαγές που ισχύουν
μόνο για τη τρέχουσα σύνοδο του φλοιού
(μέχρι την αποσύνδεση). Ακόμη, η εκκίνηση
νέων συνόδων ενώ εκτελείται η τρέχουσα,
δεν έχει ως αποτέλεσμα την ενημέρωση
των νέων συνόδων με τη νέα τιμή της
μεταβλητής περιβάλλοντος. Θα δούμε
στην Ενότητα 7.2 πώς
μπορούμε να καταστήσουμε τέτοιες
αλλαγές μόνιμες, προσθέτοντας τις
κατάλληλες γραμμές στα αρχεία
διαμόρφωσης.
Μια διαδρομή αποτελεί την ακολουθία των διακλαδώσεων στην δενδρική δομή του συστήματος για να προσπελάσουμε ένα αρχείο. Αυτή η διαδρομή μπορεί να ξεκινά από τη ρίζα του δένδρου (το κατάλογο ρίζα ή /). Σε αυτή τη περίπτωση (απόλυτη διαδρομή) δεν μπορεί να γίνει λάθος: υπάρχει μόνο ένας τέτοιος κατάλογος.
Στην άλλη περίπτωση (σχετική διαδρομή) η διαδρομή δεν ξεκινά με / αλλά από τον τρέχοντα κατάλογο και το μπέρδεμα είναι πιθανό, ας πούμε μεταξύ του ~/bin/wc (ξεκινούμε από τον οικείο κατάλογο) και του bin/wc στο /usr, από το προηγούμενο παράδειγμα. Οι διαδρομές που δεν αρχίζουν με κάθετο είναι πάντα σχετικές.
Επίσης στις σχετικές διαδρομές χρησιμοποιούμε τις ενδείξεις . και .. για τον τρέχοντα και τον γονικό κατάλογο. Μερικά πρακτικά παραδείγματα:
Όταν θέλετε να μεταγλωττίσετε πηγαίο κώδικα, συχνά η τεκμηρίωση της εγκατάστασης ζητά να εκτελέσετε την εντολή ./configure, που εκτελεί το σενάριο configure του τρέχοντα καταλόγου (εκεί που βρίσκεται ο νέος κώδικας), και όχι κάποιο πρόγραμμα configure του συστηματος.
Στα αρχεία HTML, συχνά χρησιμοποιούμε σχετικά αρχεία για τους συνδέσμους σχετικών σελίδων ώστε να μπορούν εύκολα να μεταφερθούν:
<img alt="Garden with trees" src="../images/garden.jpg"> |
Ακόμη μια φορά σημειώστε τη διαφορά::
theo:~> ls /mp3 ls: /mp3: No such file or directory theo:~>ls mp3/ oriental/ pop/ sixties/ |
Ο πυρήνας είναι η καρδιά του συστήματος. Διαχειρίζεται την επικοινωνία του λογισμικού με το υλικό και τα περιφερειακά. Επίσης ο πυρήνας διασφαλίζει οτι οι διεργασίες και οι δαίμονες (διεργασίες συστήματος και διακομιστή) ξεκινούν και σταματούν την κατάλληλη στιγμή. Ο πυρήνας περικλείει πολλές σημαντικές διαδικασίες, γι' αυτό υπάρχει ειδική λίστα ταχυδρομείου για την ανάπτυξη του πυρήνα, όπου διακινείται τεράστιος όγκος πληροφοριών. Για την ώρα αρκεί να γνωρίζετε οτι ο πυρήνας είναι το σημαντικότερο αρχείο του συστήματος..
Όταν έψαχνα για μια εξήγηση του όρου φλοιός (shell), προβληματίστηκα περισσότερο από όσο περίμενα. Υπάρχουν διάφοροι ορισμοί, από απλές αναλογίες "σαν το τιμόνι του αυτοκινήτου", τον ασαφή ορισμό του εγχειριδίου Bash που λέει οτι "το bash είναι ένα διερμηνευτής γλώσσας εντολών συμβατών με sh," ή μια ακόμη πιο θολή διατύπωση, "ο φλοιός διαχειρίζεται την αλληλεπίδραση συστήματος και χρηστών". Ο φλοιός είναι περισσότερο από αυτά.
Ένας φλοιός πρέπει να συγκριθεί με ένα τρόπο επικοινωνίας με τον υπολογιστή, μια γλώσσα. Οι περισσότεροι χρήστες γνωρίζουν μια άλλη γλώσσα επικοινωνίας, το point-and-click της επιφάνειας εργασίας. Αλλά σε αυτή τη γλώσσα ο υπολογιστής οδηγά τη συζήτηση, ενώ ο χρήστης έχει τον παθητικό ρόλο της επιλογής μεταξύ των εργασιών που του παρουσιάζονται. Είναι πολύ δύσκολο σε ένα προγραμματιστή να περιλάβει όλες τις επιλογές και πιθανές χρήσεις μιας εντολής σε μια γραφική διεπαφή. Έτσι οι γραφικές διεπαφές είναι σχεδόν πάντα λιγότερο ισχυρές από οτι οι διεπαφές κειμένου που βρίσκονται στο παρασκήνιο.
Ο φλοιός, επομένως, είναι μια ισχυρότερη μέθοδος επικοινωνίας με το σύστημα, επειδή επιτρέπει ισότιμη αμφίδρομη επικοινωνία. Ο χρήστης μπορεί να δοκιμάσει νέες ιδέες, όχι μόνο τις επιλογές που παρουσιάζονται. Ο φλοιός επιτρέπει ευέλικτη και συμπαγή διαχείριση. Επιπρόσθετα ο φλοιός επιτρέπει την αυτοματοποίηση εργασιών.
Όπως υπάρχουν διαφορετικές γλώσσες και διάλεκτοι, υπάρχουν και διαφορετικοί τύποι φλοιών:
sh ή Bourne Shell: ο αρχικός φλοιός του που ακόμη χρησιμοποιείται σε συστήματα και περιβάλλοντα UNIX. Βασικός φλοιός, ένα μικρό πρόγραμμα με λίγες δυνατότητες. Όταν βρίσκεται σε POSIX-συμβατή κατάσταση, το bash προσομοιώνει αυτό το φλοιό.
bash ή Bourne Again SHell: ο τυπικός φλοιός GNU, ευέλικτος και διαισθητικός. Πιθανότατα ο καλύτερος φλοιός για τους αρχάριους αλλά ταυτόχρονα ισχυρός για τους προχωρημένους και τους επαγγελματίες. Στο Linux, το bash είναι ο τυπικός φλοιός του απλού χρήστη. Αποκαλείται και υπερσύνολο του φλοιού Bourne, ένα σύνολο από add-ons και plug-ins. Αυτό σημαίνει οτι το Bourne Again SHell είναι συμβατό με το Bourne shell: εντολές που δουλεύουν στο sh, δουλεύουν επίσης και στο bash. Το αντίθετο όμως δεν ισχύει πάντα. Όλα τα παραδείγματα του βιβλίου είναι σε bash.
csh ή C Shell: το συντακτικό αυτού του φλοιού μοιάζει με αυτό της γλώσσας προγραμματισμού C. Μερικές φορές το ζητούν οι προγραμματιστές..
tcsh ή Turbo C Shell: υπερσύνολο του C Shell, φιλικότερο και ταχύτερο.
ksh ή Korn shell: μερικές φορές προτιμάται από τους έμπειρους χρήστες UNIX. Υπερσύνολο του Bourne, με τυπική διαμόρφωση είναι ένας εφιάλτης για τους αρχαρίους.
Το αρχείο /etc/shells εμφανίζει τους διαθέσιμους φλοιούς του συστήματος:
mia:~> cat /etc/shells /bin/bash /bin/sh /bin/tcsh /bin/csh |
Ψεύτικο Bourne shell
Σημειώστε οτι το /bin/sh
συνήθως είναι σύνδεσμος στο Bash, που
εκτελεί εντολές σε Bourne-συμβατή κατάσταση
όταν καλείται έτσι.
Ο προκαθορισμένος φλοιός σας καθορίζεται στο αρχείο /etc/passwd, όπως παρακάτω για το χρήστη mia:
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash |
Για να αλλάξετε φλοιό, απλά εισάγετε το όνομα του νέου φλοιού στο παράθυρο τερματικού. Το σύστημα αναζητά το όνομα του αρχείου με τη βοήθεια του PATH, και αφού πρόκειται για εκτελέσιμο αρχείο, ο τρέχον φλοιός το εκτελεί και 'καλύπτεται κάτω' από τον νέο φλοιό. Εμφανίζεται μια νέα προτροπή, αφού κάθε φλοιός έχει μια τυπική εμφάνιση:
mia:~> tcsh [mia@post21 ~]$ |
Αν δεν ξέρετε ποιο φλοιό χρησιμοποιείτε, ή ελέγξτε τη γραμμή του λογαριασμού σας στο αρχείο /etc/passwd ή εισάγετε την εντολή:
Ο οικείος κατάλογός σας είναι ο προκαθορισμένος προορισμός σας όταν συνδέεστε στο σύστημα. Τις περισσότερες φορές είναι ένας υπο-κατάλογος του /home, αν και δεν είναι απαραίτητο. Ο οικείος κατάλογός σας μπορεί να βρίσκεται στο σκληρό δίσκο ενός απομακρυσμένου διακομιστή αρχείων, οπότε η διαδρομή θα ήταν κάπως σαν /nethome/your_user_name. Σε κάποια άλλη περίπτωση ο διαχειριστής μπορεί να προτιμούσε μια λιγότερο κατανοητή μορφή διαδρμής οπότε ο οικείος κατάλογος μπορεί να βρίσκεται στο /disk6/HU/07/jgillard.
Όποια και αν είναι η διαδρομή στον οικείο κατάλογό σας, δεν χρειάζεται να ανησυχείτε ιδιαίτερα. Η διαδρομή αποθηκεύεται στη μεταβλητή περιβάλλοντος HOME, για όποιο πρόγραμμα τη χρειάζεται. Με τη εντολή echo μπορείτε να δείτε το περιεχόμενο αυτής της μεταβλητής:
orlando:~> echo $HOME /nethome/orlando |
Μπορείτε να κάνετε ό,τι θέλετε στον οικείο κατάλογο σας. Μπορείτε να βάλετε όσα αρχεία και καταλόγους θέλετε, αν και το συνολικό μέγεθος των δεδομένων συνήθως περιορίζεται από το υλικό και το μέγεθος των διαμερισμάτων, και μερικές φορές από τον διαχειριστή του συστήματος που έχει επιβάλει σύστημα μεριδίων (quota). Παλιότερα, που οι δίσκοι ήταν ακριβοί, οι περιορισμοί χρήσης δίσκων ήταν συνηθισμένοι. Σήμερα, τέτοιοι περιορισμοί τίθενται μόνο σε μεγάλα συστήματα. Μπορείτε να δείτε εάν σας έχει τεθεί κάποιο όριο με την εντολή quota:
pierre@lamaison:/> quota -v Diskquotas for user pierre (uid 501): none |
Εάν έχουν τεθεί κάποιοι περιορισμοί, θα πάρετε μια λίστα των αντιστοίχων διαμερισμάτων και περιορισμών. Συνήθως επιτρέπεται η υπέρβαση των ορίων για κάποια περίοδο χάριτος. Περισσότερες πληροφορίες μπορείτε να βρείτε με χρήση των εντολών info quota ή man quota.
Όχι Quota;
Αν το σύστημά σας δεν μπορεί
να βρει την εντολή quota, τότε δεν
εφαρμόζει σύστημα περιορισμού στο
σύστημα αρχείων.
Ο οικείος κατάλογος σημειώνεται με τη περισπωμένη (~), συντομογραφία για το /path_to_home/user_name. Όπως είπαμε το ίδιο όνομα διαδρομής βρίσκεται στη μεταβλητή περιβάλλοντος HOME. Μια απλή εφαρμογή: μετακίνηση από τον κατάλογο /var/music/albums/arno/2001 στον κατάλογο images στον οικείο κατάλογό σας με μια κομψή εντολή:
rom:/var/music/albums/arno/2001> cd ~/images rom:~/images> pwd /home/rom/images |
Αργότερα στο κεφάλαιο θα μιλήσουμε για εντολές που θα σας βοηθήσουν να διαχειριστείτε τα αρχεία και τους καταλόγους σας.
Όπως είπαμε πριν, τα περισσότερα αρχεία διαμόρφωσης είναι αποθηκευμένα στον κατάλογο /etc. Τα περιεχόμενά τους μπορούμε να τα δούμε με την εντολή cat, που εμφανίζει αρχεία κειμένου στη προκαθορισμένη έξοδο (συνήθως η οθόνη), Η σύνταξη είναι απλή:
cat file1 file2 ... fileN
Σε αυτή την ενότητα θα προσπαθήσουμε να δώσουμε μια περίληψη των πιο συνηθισμένων αρχείων διαμόρφωσης. Η παρακάτω λίστα σίγουρα δεν είναι πλήρης. Η εγκατάσταση νέων λογισμικών έχει ως αποτέλεσμα την δημιουργία νέων αρχείων διαμόρφωσης στο /etc. Αν διαβάσετε ένα αρχείο διαμόρφωσης θα δείτε οτι είναι αρκετά καλά τεκμηριωμένα και αυτο-εξηγούμενο. Μερικά αρχεία έχουν και σελίδες man με επιπλέον τεκμηρίωση, όπως το man group.
Ένα ακόμα σημείο που διαχωρίζει το Linux από τα Windows είναι ο τρόπος που αποθηκεύονται και μπορούν να τροποποιηθούν οι ρυθμίσεις. Ενώ για ένα μέρος των ρυθμίσεων υπάρχει και τρόπος ρύθμισης από το γραφικό περιβάλλον, αυτός είναι ισοδύναμος με την τροποποίηση ενός αρχείου ρυθμίσεων. Το αρχείο ρυθμίσεων, βέβαια, δίνει πολύ περισσότερες δυνατότητες.
Πίνακας 3-3. Συνηθισμένα αρχεία διαμόρφωσης
Αρχείο |
Πληροφορία/υπηρεσία |
---|---|
aliases |
Αρχείο συνωνύμων ονομάτων ταχυδρομείου για τους διακομιστές Sendmail και Postfix. Ο διακομιστής mail είναι συνήθης πρακτική στο κόσμο του UNIX, και σχεδόν κάθε διανομή Linux έρχεται με το λογισμικό Sendmail. Σε αυτό το αρχείο τοπικά ονόματα χρηστών ταυτίζονται με διευθύνσεις E-mail, ή άλλες τοπικές διευθύνσεις. |
apache ή httpd |
Αρχεία διαμόρφωσης για τον διακομιστή ιστού (web server) Apache. |
bashrc |
Αρχεία διαμόρφωσης σε επίπεδο συστήματος για το Bourne Again SHell. Ορίζει λειτουργίες και συνώνυμα για όλους τους χρήστες. Άλλοι φλοιοί μπορεί να έχουν δικά τους αντίστοιχα αρχεία, όπως cshrc. |
crontab και οι κατάλογοι cron.* |
Διαμόρφωση εργασιών που πρέπει να εκτελούνται περιοδικά – εφεδρικά αντίγραφα, ενημερώσεις βάσεων δεδομένων του συστήματος, καθαρισμός του συστήματος, ανακύκλωση αρχείων καταγραφής, κλπ. |
default |
Προκαθορισμένες επιλογές για ορισμένες εντολές, όπως η useradd. |
filesystems |
Γνωστά συστήματα αρχείων: ext3, vfat, iso9660 etc. |
fstab |
Λίστα διαμερισμάτων και των σημείων προσάρτησής τους (mount points). |
ftp* |
Διαμόρφωση του διακομιστή ftp: ποιος μπορεί να συνδεθεί, ποια μέρη του συστήματος είναι προσβάσιμα, κλπ. |
group |
Αρχείο διαμόρφωσης των ομάδων χρηστών. Για τη τροποποίησή του χρησιμοποιούμε τις υπηρεσίες groupadd, groupmod και groupdel. |
hosts |
Λίστα των μηχανημάτων που μπορούν να προσπελαστούν μέσω δικτύου χωρίς τη χρήση υπηρεσίας ονομάτων πεδίων (DNS). |
inittab |
Πληροφορίες εκκίνησης: τύποι, αριθμός τερματικών κειμένου, κλπ. |
issue |
Πληροφορίες για τη διανομή (αριθμός διανομής, πληροφορίες πυρήνα). |
ld.so.conf |
Τοποθεσία των αρχείων βιβλιοθήκης. |
lilo.conf, silo.conf, aboot.conf etc. |
Πληροφορίες εκκίνησης για το LILO ( LInux Loader), παλιότερο σύστημα εκκίνησης που σταδιακά αντικαθίσταται από το GRUB. |
logrotate.* |
Ανακύκλωση των αρχείων καταγραφής, για να αποφεύγεται η συσσώρευση μεγάλου όγκου δεδομένων. |
|
Κατάλογος με οδηγίες για τη συμπεριφορά του διακομιστή ταχυδρομείου. |
modules.conf |
Διαμόρφωση των αρθρωμάτων που χειρίζονται ειδικούς οδηγούς συσκευών. |
motd |
Μήνυμα Της Ημέρας (Message Of The Day): Εμφανίζεται σε όποιον συνδέεται στο σύστημα (σε διεπαφή κειμένου), μπορεί να χρησιμοποιηθεί από το διαχειριστή για ανακοινώσεις σχετικές με το σύστημα. |
mtab |
Συστήματα αρχείων που είναι προσαρτημένα. Ποτέ μην τροποποιείτε αυτό το αρχείο. |
nsswitch.conf |
Σειρά με την οποία γίνεται η αναζήτηση ονομάτων hosts στο δίκτυο. |
pam.d |
Διαμόρφωση των αρθρωμάτων ταυροποίησης. |
passwd |
Λίστα των τοπικών χρηστών. Για τη τροποποίησή του χρησιμοποιούμε τις υπηρεσίες useradd, usermod και userdel. |
printcap |
Ξεπερασμένο αλλά ακόμη συχνά χρησιμοποιούμενο αρχείο διαμόρφωσης εκτυπωτών. Μην τροποποιείτε αυτό το αρχείο. |
profile |
Αρχείο διαμόρφωσης σε επίπεδο συστήματος για τις μεταβλητών περιβάλλοντος του φλοιού, προεπιλεγμένες ιδιότητες νέων αρχείων, κλπ. |
rc* |
Κατάλογοι που καθορίζουν τις ενεργές υπηρεσίες σε κάθε επίπεδο εκκίνησης. |
resolv.conf |
Σειρά επικοινωνίας με διακομιστές DNS (μόνο). |
sendmail.cf |
Κύριο αρχείο διαμόρφωσης για το διακομιστή Sendmail. |
services |
Κατάλογος των θυρών που αντιστοιχούν σε διάφορες υπηρεσίες (όχι μόνο υπάρχουσες). |
sndconfig or sound |
Κατάλογος διαμόρφωσης κάρτας ήχου και σχετικών συμβάντων. |
ssh |
Κατάλογος με αρχεία διαμόρφωσης για το secure shell (ssh) πελάτη και διακομιστή. |
sysconfig |
Κατάλογος με αρχεία διαμόρφωσης συσκευών: πληκτρολόγιο, ποντίκι κλπ (ειδικά στο RedHat) |
X11 |
Κατάλογος διαμόρφωσης για τον διακομιστή γραφικής διεπαφής Χ11 (αλλού μπορεί να είναι Xfree). Επίσης περιλαμβάνονται γενικές κατευθύνσεις για τους διαθέσιμους διαχειριστές παραθύρων, για παράδειμα gdm, fvwm, twm, κλπ. |
xinetd.* or inetd.conf |
Αρχέια διαμόρφωσης των υπηρεσιών Διαδικτύου που εκτελούνται από τον δαίμονα Διαδικτύου του συστήματος (όχι από ανεξάρτητο δαίμονα). |
Καθώς μελετούμε αυτό τον οδηγό θα μιλήσουμε με περισσότερες λεπτομέρειες γι' αυτά τα αρχεία.
Οι συσκευές, γενικά οτιδήποτε είναι συνδεδεμένο σε έναν υπολογιστή αλλά δεν είναι στη CPU, εμφανίζεται στο σύστημα σαν ένα αρχείο στον κατάλογο /dev. Ένα από τα πλεονεκτήματα διαχείρισης των συσκευών με το σύστημα του UNIX είναι οτι ούτε ο χρήστης ούτε το σύστημα χρειάζεται να ανησυχούν ιδιαίτερα για τις προδιαγραφές των συσκευών.
Οι νέοι χρήστες του Linux ή του UNIX γενικά εντυπωσιάζονται από τον μεγάλο αριθμό των νέων ονομάτων και εννοιών που πρέπει να μάθουν. Ο παρακάτω πίνακας ενισχύει αυτή την άποψη.
Πίνακας 3-4. Συνηθισμένες συσκευές
Όνομα |
Συσκευή |
---|---|
cdrom |
οδηγός CD |
console |
Τρέχον τερματικό (κονσόλα) |
cua* |
Συριακές θύρε. |
dsp* |
Συσκευές ψηφιακής επεξεργασίας σήματος (π.χ. ηχογράφηση) |
.fd* |
Τα περισσότερα είδη οδηγών δισκέτας, το προεπιλεγμένο είναι /dev/fd0, οδηγός για δισκέτες 1.44 MB |
hd[a-t][1-16] |
Τυπική υποστήριξη οδηγών σκληρών δίσκων IDE με μέγιστο αριθμό διαμερισμάτων |
ir* |
Οδηγοί υπερύθρων |
isdn* |
Διαχείριση συνδέσεων ISDN |
js* |
Joystick(s) |
lp* |
Εκτυπωτές |
mem |
Μνήμη |
midi* |
αναπαραγωγή midi |
mixer* and music |
Αφηρημένο μοντέλο mixer (συνθέτει και προσθέτει σήματα) |
modem |
Modem |
mouse (also msmouse, logimouse, psmouse, input/mice, psaux) |
Όλα τα είδη ποντικιών |
null |
Καλάθι αχρήστων χωρίς πάτο |
par* |
Υποστήριξη παράλληλων θυρών |
pty* |
Ψευδοτερματικά |
radio* |
Για ραδιο ερασιτέχνες (HAMs). |
ram* |
συσκευή εκκίνησης |
sd* |
Οδηγοί για δίσκους SCSI με τα διαμερίσματά τους |
sequencer |
Για εφαρμογές ήχου με χαρακτηριστικά synthesizer της κάρτας ήχου (MIDI-device controller) |
tty* |
Εικονικές κονσόλες που προσομοιώνουν τερματικά vt100 . |
usb* |
USB κάρτες και σαρωτές |
video* |
Κάρτες γραφικών και υποσήριξη video. |
Στο κατάλογο /var βρίσκουμε ένα σύνολο καταλόγων για την αποθήκευση μη-σταθερών δεδομένων (σε αντίθεση με εντολές, υπηρεσίες ή αρχεία διαμόρφωσης που αλλάζουν πολύ σπάνια ή καθόλου). Όλα τα αρχεία που μεταβάλλονται συχνά όπως αρχεία καταγραφής, ταχυδρομικές θυρίδες, αρχεία κλειδωμάτων, διαχειριστές για ουρές εκτυπωτών κλπ. βρίσκονται σε κάποιο υποκατάλογο του /var.
Για λόγους ασφαλείας κρατούμε αυτά τα αρχεία ξεχωριστά από τα αρχεία συστήματος, έτσι ώστε να τα ελέγχουμε καλύτερα και να μεταβάλλουμε τις πολιτικές ασφαλείας και πρόσβασης αν είναι απαραίτητο. Πολλά από αυτά τα αρχεία απαιτούν περισσότερες άδειες από οτι συνήθως, όπως το /var/tmp, που πρέπει να μπορεί να γράφεται από όλους. Σε αυτό το τμήμα αναμένεται μεγάλη δραστηριότητα χρηστών, αν το σύστημά μας είναι διακομιστής, ακόμη και από ανώνυμους χρήστες του Διαδικτύου (αν υπάρχει δυνατότητα πρόσβασης). Γι' αυτό το λόγο σε μεγάλα συστήματα ο κατάλογος /var με όλους τους υπο-καταλόγους, βρίσκεται συνήθως σε ξεχωριστό διαμέρισμα. Με αυτό το τρόπο, μειώνουμε τον κίνδυνο ενός mail bomb, για παράδειγμα, που θα γεμίσει το σύστημα αρχείων που περιέχει σημαντικότερα πράγματα, όπως προγράμματα και αρχεία διαμόρφωσης.
/var/tmp και /tmp
Τα αρχεία στο /tmp μπορεί
να διαγραφούν χωρίς ειδοποίηση, από
απλές εργασίες του συστήματος ή από
την επανεκκίνηση του συστήματος. Σε
μερικά (ειδικά) συστήματα και το
/var/tmp μπορεί να φερθεί απρόβλεπτα.
Παρ' όλα αυτά, αφού κάτι τέτοιο δεν
είναι γενικευμένο, συνιστούμε την
αποθήκευση προσωρινών αρχείων στο
/var/tmp. Αν δεν είστε σίγουροι ρωτήστε
τον διαχειριστή του συστήματός σας.
Αν διαχειρίζεστε μόνοι σας το σύστημά
σας μπορείτε να είστε λογικά σίγουροι
οτι πρόκειται για ασφαλές σημείο,
εκτός και αν μόνοι σας αλλάξετε τα
settings στο /var/tmp (σαν root, ο απλός
χρήστης δεν μπορεί να το κάνει).
Ότι και αν κάνετε, προσπαθήστε να ακολουθείτε τα δικαιώματα ενός κανονικού χρήστη – μην αποθηκεύετε αρχεία στο κατάλογο ρίζα (/) του συστήματος αρχείων, ούτε στο /usr ή σε άλλο ειδικό μέρος του συστήματος. Αυτό περιορίζει σημαντικά τη πρόσβασή σας σε μη-ασφαλή σημεία του συστήματος αρχείων.
Ένα από τα κύρια συστήματα ασφάλειας του UNIX, που υλοποιείται φυσικά και στο Linux, είναι η υπηρεσία καταγραφής, που καταγράφει τις πράξεις όλων των χρηστών, τις διεργασίες, τα συμβάντα κλπ. Το αρχείο διαμόρφωσης του επονομαζόμενου syslogdaemon καθορίζει πόσο διάστημα κρατείται αυτή η πληροφορία. Η προεπιλεγμένη θέση είναι στο /var/log, με διαφορετικά αρχεία για καταγραφή πρόσβασης, καταγραφή διακομιστή, μηνύματα του συστήματος κλπ.
Στο /var συνήθως βρίσκουμε δεδομένα διακομιστή, που κρατούνται εδώ, ξεχωριστά από άλλα κρίσιμα δεδομένα όπως τα προγράμματα διακομιστή και τα αρχεία διαμόρφωσης του. Ένα τυπικό παράδειγμα σε συστήματα Linux είναι το /var/www, που περιέχει τις ίδιες τις σελίδες HTML, scripts και εικόνες που διανέμει ο διακομιστής. Το δένδρο FTP ενός διακομιστή FTP (τα δεδομένα που μπορούν να μεταφορτωθούν σε ένα απομακρυσμένο πελάτη) είναι καλύτερα να κρατείται σε υπο-κατάλογο του /var. Επειδή αυτά τα δεδομένα είναι δημόσια προσβάσιμα από ανώνυμους χρήστες και συχνά μεταβάλλονται από ανώνυμους χρήστες, είναι ασφαλέστερο να κρατούμε αυτά τα δεδομένα μακριά από ευαίσθητα δεδομένα..
Στις περισσότερες εγκαταστάσεις σταθμών εργασίας το /var/spool θα περιέχει τουλάχιστο ένα at και ένα cron κατάλογο, όπου βρίσκονται χρονο-πορογραμματισμένες εργασίες. Σε περιβάλλοντα γραφείου αυτοί οι κατάλογοι συνήθως περιέχουν και το lpd, που κρατά τις ουρές εκτυπωτών και τα αρχεία διαμόρφωσης και καταγραφής.
Σε συστήματα διακομιστών γενικά θα βρούμε το /var/spool/mail, που περιέχει εισερχόμενο ταχυδρομείο για τοπικούς χρήστες, ένα αρχείο ανά χρήστη, το "inbox" του χρήστη. Ένας σχετικός κατάλογος είναι το mqueue, η περιοχή του spooler (ουράς) για τα μη-αποσταλέντα μηνύματα. Αυτά τα μέρη του συστήματος είναι πολύ δραστήρια αν υπάρχουν πολλοί χρήστες. Οι νέοι διακομιστές επίσης χρησιμοποιούν τον κατάλογο /var/spool για τη διαχείριση μεγάλων μηνυμάτων.
Εκτός από το όνομα του αρχείου, η εντολή ls μπορεί να δώσει πολλές επιπλέον πληροφορίες όπως τον τύπο αρχείου. Μπορεί να δείξει τις άδειες πρόσβασης ενός αρχείου, το μέγεθός του, το inode, την ημερομηνία και ώρα δημιουργίας, τους ιδιοκτήτες και το πλήθος των συνδέσμων στο αρχείο. Προσθέτοντας την επιλογή -a στο ls, εμφανίζονται και τα κρυφά αρχεία που το όνομά τους αρχίζει με τελεία (.) π.χ τα αρχεία ρυθμίσεων του οικείου καταλόγου. Μετά από ένα διάστημα χρήσης ενός συστήματος, παρατηρούμε ότι έχουν δημιουργηθεί δεκάδες αρχείων και καταλόγων που δεν εμφανίζονται αυτόματα. Επιπλέον κάθε κατάλογος περιέχει ένα αρχείο που ονομάζεται με μια τελεία (.) και ένα με δύο τελείες (..) τα οποία χρησιμοποιούνται σε συνδυασμό με το inode για τον καθορισμό της θέσης του στη δομή καταλόγων του συστήματος.
Καλό είναι να διαβάσετε τα κείμενα τεκμηρίωσης (Info) σχετικά με το ls επειδή είναι μια συχνά χρησιμοποιούμενη εντολή με πολύ χρήσιμες επιλογές. Οι επιλογές μπορούν να συνδυαστούν όπως οι περισσότερες εντολές του UNIX. Ένας συχνός συνδυασμός είναι το ls -al, που εμφανίζει μια λίστα (-l) με τα αρχεία και τις ιδιότητές τους όπως και τους προορισμούς που δείχνουν οι σύνδεσμοι. Η ls -latr εμφανίζει τα ίδια αρχεία, όμως με την αντίστροφη σειρά σε σχέση με την τελευταία τροποποίηση έτσι ώστε το πιο πρόσφατα τροποποιημένο αρχείο να βρίσκεται στον τέλος της λίστας. Η επιλογή t ταξινόμηση ανάλογα με την ημερομηνία τροποποίησης) και r (αντιστροφή σειράς ταξινόμησης). Μερικά παραδείγματα
krissie:~/mp3> ls Albums/ Radio/ Singles/ gene/ index.html krissie:~/mp3> ls -a ./ .thumbs Radio gene/ ../ Albums/ Singles/ index.html krissie:~/mp3> ls -l Radio/ total 8 drwxr-xr-x 2 krissie krissie 4096 Oct 30 1999 Carolina/ drwxr-xr-x 2 krissie krissie 4096 Sep 24 1999 Slashdot/ krissie:~/mp3> ls -ld Radio/ drwxr-xr-x 4 krissie krissie 4096 Oct 30 1999 Radio/ krissie:~/mp3> ls -ltr total 20 drwxr-xr-x 4 krissie krissie 4096 Oct 30 1999 Radio/ -rw-r--r-- 1 krissie krissie 453 Jan 7 2001 index.html drwxrwxr-x 30 krissie krissie 4096 Oct 20 17:32 Singles/ drwxr-xr-x 2 krissie krissie 4096 Dec 4 23:22 gene/ drwxrwxr-x 13 krissie krissie 4096 Dec 21 11:40 Albums/ |
Στο τελευταίο παράδειγμα εμφανίζετε μία λίστα που περιέχει τα περιεχόμενα του φακέλου mp3, ο οποίος βρίσκεται στον αρχικό κατάλογο του χρήστη krissie με αύξουσα ημερομηνία τροποποίησης (δηλαδή πρώτα εμφανίζεται αυτό που τροποποιήθηκε παλαιότερα).
Όπως αναφέρθηκε και σε προηγούμενη ενότητα, ο πρώτος χαρακτήρας κάθε γραμμής δηλώνει τον τύπο του συγκεκριμένου στοιχείου. Οι επόμενοι 9 χαρακτήρες αντιστοιχούν στα δικαιώματα που έχουν οι διάφοροι χρήστες σε αυτό το στοιχείο (εξηγούνται αναλυτικά παρακάτω). Επίσης, η λίστα δίνει πληροφορίες για τον ιδιοκτήτη και την ομάδα στην οποία ανήκει το αρχείο, καθώς και για την ημερομηνία τροποποίησής του.
Υπάρχει επίσης η δυνατότητα εκτέλεσης της εντολής ls με την επιλογή F, η οποία προσαρτά έναν χαρακτήρα στο τέλος κάθε γραμμής (επίθεμα), ο οποίος δηλώνει τον τύπο του κάθε στοιχείου. Στον πίνακα που ακολουθεί συνοψίζονται τα επιθέματα αυτά όπως απαντώνται σε μια τυπική εγκατάσταση του Linux.
Πίνακας 3-6. Προεπιλεγμένο σχήμα επιθεμάτων ls
Χαρακτήρας |
Τύπος Αρχείου |
---|---|
τίποτε |
κανονικό αρχείο |
/ |
κατάλογος |
* |
εκτελέσιμο αρχείο |
@ |
σύνδεσμος |
= |
υποδοχή |
| |
ονομασμένη σωλήνωση |
Στις περισσότερες διανομές Linux το ls έχει γίνει συνώνυμο του color-ls. Αυτό επιτρέπει την αναγνώριση του τύπου αρχείου χωρίς την ανάγκη χρήσης κάποιας επιλογής με το ls. Επιτυγχάνεται αναθέτοντας σε κάθε τύπο αρχείου διαφορετικό χρώμα. Για αλλαγή των χρωμάτων δέιτε την εντολή dircolors. Τα προεπιλεγμένα χρώματα είναι:
Πίνακας 3-5. Color-ls προεπιλεγμένο σχήμα
Χρώμα |
Τύπος αρχείου |
---|---|
μπλε |
κατάλογοι |
κόκκινο |
συμπιεσμένα αρχεία |
άσπρο |
αρχεία κειμένου |
ροζ |
εικόνες |
γαλάζιο |
σύνδεσμοι |
κίτρινο |
συσκευές |
πράσινο |
εκτελέσιμα |
κόκκινο που αναβοσβήνει |
σπασμένοι σύνδεσμοι |
Περισσότερες πληροφορίες βρίσκονται με χρήση της man. Η ίδια πληροφορία παλαιότερα εμφανιζόταν χρησιμοποιώντας επιθέματα (καταλήξεις) για κάθε μη τυποποιημένο τύπο αρχείου. Σε μονοχρωμία (π.χ στην εκτύπωση) και για διασφάλιση της αναγνωρισιμότητας το σχήμα αυτό είναι ακόμη σε χρήση:
Μια πλήρη περιγραφή της λειτουργικότητας και των χαρακτηριστικών της εντολής ls μπορεί να βρεθεί με χρήση των κειμένων τεκμηρίωσης με info coreutils ls.
Για να μάθουμε περισσότερα για το είδος των δεδομένων που περιέχουν τα αρχεία χρησιμοποιούμε την εντολή file. Με τη χρήση κάποιων τεστ που ελέγχουν τις ιδιότητες του αρχείου, τη χρήση κάποιων “μαγικών αριθμών” και γλωσσικών ελέγχων η file προσπαθεί να κάνει μια πρόβλεψη σχετικά με τη δομή του αρχείου. Μερικά παραδείγματα :
mike:~> file Documents/ Documents/: directory mike:~> file high-tech-stats.pdf high-tech-stats.pdf: PDF document, version 1.2 mike:~> file Nari-288.rm Nari-288.rm: RealMedia file mike:~> file bijlage10.sdw bijlage10.sdw: Microsoft Office Document mike:~> file logo.xcf logo.xcf: GIMP XCF image data, version 0, 150 x 38, RGB Color mike:~> file cv.txt cv.txt: ISO-8859 text mike:~> file image.png image.png: PNG image data, 616 x 862, 8-bit grayscale, non-interlaced mike:~> file figure figure: ASCII text mike:~> file me+tux.jpg me+tux.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), "28 Jun 1999", 144 x 144 mike:~> file 42.zip.gz 42.zip.gz: gzip compressed data, deflated, original filename, `42.zip', last modified: Thu Nov 1 23:45:39 2001, os: Unix mike:~> file vi.gif vi.gif: GIF image data, version 89a, 88 x 31 mike:~> file slide1 slide1: HTML document text mike:~> file template.xls template.xls: Microsoft Office Document mike:~> file abook.ps abook.ps: PostScript document text conforming at level 2.0 mike:~> file /dev/log /dev/log: socket mike:~> file /dev/hda /dev/hda: block special (3/0) |
Η εντολή file έχει μια σειρά επιλογών μεταξύ των οποίων και η -z για τον έλεγχο συμπιεσμένων αρχείων. Δείτε το info file για αναλυτική περιγραφή. Να έχετε υπόψη ότι τα αποτελέσματα της file δεν παρά μια απλή πρόβλεψη. Δηλαδή η file μπορεί να ξεγελαστεί.
Γιατί όλη αυτή η φασαρία με τους τύπους και τη δομή των αρχείων;
Σύντομα θα συζητήσουμε μερικά
εργαλεία γραμμής εντολών για την
αναζήτηση σε αρχεία απλού κειμένου
(plain text
files). Αυτά τα εργαλεία
δεν λειτουργούν όταν χρησιμοποιούνται
με λάθος τύπο αρχείου. Στη χειρότερη
περίπτωση θα έχουμε αστοχία του
τερματικού και/ή πολλά beep.
Εάν συμβεί κάτι τέτοιο κλείστε το
παράθυρο τερματικούl και ξεκινήστε
νέο. Προσπαθήστε να το αποφύγετε επειδή
είναι πολύ ενοχλητικό για τους
υπόλοιπους.
... δεν είναι ιδιαίτερα δύσκολο. Σήμερα σχεδόν κάθε σύστημα είναι δικτυωμένο, έτσι φυσιολογικά αντιγράφονται αρχεία από τη μια μηχανή στην άλλη. Ειδικά όταν εργάζεσαι με παραθυρικό περιβάλλον, η δημιουργία νέων αρχείων είναι αστεία υπόθεση και πολλές φορές γίνεται χωρίς την έγκριση του χρήστη. Για να γίνει κατανοητό το πρόβλημα, ας εξετάσουμε το πλήρες περιεχόμενο του οικείου καταλόγου:
[newuser@blob user]$ ls -al total 32 drwx------ 3 user user 4096 Jan 16 13:32 . drwxr-xr-x 6 root root 4096 Jan 16 13:32 .. -rw-r--r-- 1 user user 24 Jan 16 13:32 .bash_logout -rw-r--r-- 1 user user 191 Jan 16 13:32 .bash_profile -rw-r--r-- 1 user user 124 Jan 16 13:32 .bashrc drwxr-xr-x 3 user user 4096 Jan 16 13:32 .kde -rw-r--r-- 1 user user 3511 Jan 16 13:32 .screenrc -rw------- 1 user user 61 Jan 16 13:32 .xauthDqztLr |
Με την πρώτη ματιά το περιεχόμενο ενός παλαιού οικείου καταλόγου δε δείχνει πολύ χειρότερο:
olduser:~> ls app-defaults/ crossover/ Fvwm@ mp3/ OpenOffice.org638/ articles/ Desktop/ GNUstep/ Nautilus/ staroffice6.0/ bin/ Desktop1/ images/ nqc/ training/ brol/ desktoptest/ Machines@ ns_imap/ webstart/ C/ Documents/ mail/ nsmail/ xml/ closed/ Emacs@ Mail/ office52/ Xrootenv.0 |
Αλλά όταν συμπεριληφθούν όλοι οι κατάλογοι και τα αρχεία που αρχίζουν με τελεία (.) εμφανίζονται 185 στοιχεία σε αυτόν τον κατάλογο. Αυτό συμβαίνει επειδή οι περισσότερες εφαρμογές έχουν το δικό τους κατάλογο και/ή αρχεία, συμπεριλαμβάνοντας ρυθμίσεις ειδικά για τον κάθε χρήστη, στον οικείο κατάλογό του. Συνήθως αυτά τα αρχεία δημιουργούνται την πρώτη φορά που εκκινείται μια εφαρμογή. Σε κάποιες περιπτώσεις θα ενημερωθείτε όταν χρειάζεται να δημιουργηθεί ένας νέος κατάλογος, αλλά τις περισσότερες φορές όλα θα γίνουν αυτόματα.
Επιπλέον, νέα αρχεία δημιουργούνται συνεχώς επειδή οι χρήστες θέλουν να αποθηκεύσουν, να κρατήσουν διαφορετικές εκδόσεις από τις εργασίες τους, να χρησιμοποιήσουν εφαρμογές Διαδικτύου, να μεταφορτώσουν αρχεία και συνημμένα στο τοπικό μηχάνημα. Δε σταματάει ποτέ και είναι ξεκάθαρο ότι είναι απαραίτητο ένα σχήμα για την επισκόπηση όλων αυτών.
Στην επόμενη παράγραφο, θα συζητήσουμε τους τρόπους για να διατηρούμε τάξη. Αναφέρουμε μόνο εργαλεία κειμένου διαθέσιμα στο φλοιό, μια και τα γραφικά εργαλεία έχουν την ίδια αίσθηση και όψη με το γνωστό περιβάλλον διαχείρισης των MS Windows, συμπεριλαμβάνοντας λειτουργίες βοήθειας και άλλα χαρακτηριστικά αναμενόμενα από αυτού του είδους τις εφαρμογές. Η παρακάτω λίστα είναι μια ανασκόπηση των πιο δημοφιλών διαχειριστών αρχείων για GNU/Linux. Οι περισσότεροι διαχειριστές αρχείων μπορούν να ξεκινήσουν από το μενού της επιφάνειας εργασίας, η κάνοντας κλικ στο εικονίδιο του βασικού καταλόγου, ή από τη γραμμή εντολών, χρησιμοποιώντας τις παρακάτω εντολές:
nautilus: Ο προεπιλεγένος διαχειριστής αρχείων για το Gnome (το περιβάλλον εργασίας του GNU). Μπορεί να βρεθεί εξαιρετική τεκμηρίωση για τη χρήση αυτού του εργαλείου στη διεύθυνση http://www.gnome.org.
konqueror: Ο διαχειριστής αρχείων που συνήθως χρησιμοποιείται στο περιβάλλον εργασίας KDE. Τεκμηρίωση στη διεύθυνση http://docs.kde.org.
mc: Midnight Commander, ο διαχειριστής αρχείων του Unix κατά τη μόδα του Norton Commander. Τεκμηρίωση στη διεύθυνση http://gnu.org/directory/ ή σε καθρέπτες όπως http://www.ibiblio.org.
Αυτές οι εφαρμογές αξίζουν τη δοκιμή και συνήθως εντυπωσιάζουν τους νέους χρήστες Linux, μόνο και μόνο επειδή υπάρχει τόσο μεγάλη ποικιλία: Αυτά είναι μόνο τα δημοφιλή εργαλεία για τη διαχείριση των αρχείων και των καταλόγων, αλλά υπάρχουν πολλά ακόμη έργα σε ανάπτυξη. Τώρα ας ψάξουμε το εσωτερικό τους και να δούμε πως αυτά τα γραφικά εργαλεία χρησιμοποιούν απλές εντολές UNIX
Ένας τρόπος για να διατηρήσουμε τα πράγματα σε τάξη, είναι να δοθεί στα αρχεία κάποια συγκεκριμένη θέση δημιουργώντας καταλόγους και υπο-καταλόγους. Αυτό γίνεται με την εντολή mkdir:
richard:~> mkdir archive richard:~> ls -ld archive drwxrwxrwx 2 richard richard 4096 Jan 13 14:09 archive/ |
Η δημιουργία καταλόγων και υπο-καταλόγων με ένα βήμα γίνεται χρησιμοποιώντας το διακόπτη -p:
richard:~> cd archive richard:~/archive> mkdir 1999 2000 2001 richard:~/archive> ls -F 1999/ 2000/ 2001/ richard:~/archive> mkdir 2001/reports/Restaurants-Michelin/ mkdir: cannot create directory `2001/reports/Restaurants-Michelin/': No such file or directory richard:~/archive> mkdir -p 2001/reports/Restaurants-Michelin/ richard:~/archive> ls 2001/reports/ Restaurants-Michelin/ |
Εάν το νέο αρχείο χρειάζεται άλλες άδειες πρόσβασης από τα προεπιλεγμένες, αυτές μπορούν να ορισθούν με ένα βήμα χρησιμοποιώντας την mkdir (δες τις σελίδες τεκμηρίωσης για λεπτομέρειες). Πρόκειται να συζητήσουμε τις άδειες πρόσβασης στο επόμενο κεφάλαιο, στην ασφάλεια αρχείων.
Το όνομα ενός καταλόγου πρέπει να συμφωνεί με τους ίδιους κανόνες που έχουν οριστεί για τα κανονικά αρχεία. Ένας από τους πιο σημαντικούς περιορισμούς είναι ότι δε μπορεί να υπάρχουν δύο αρχεία με το ίδιο όνομα στον ίδιο κατάλογο (υπ όψη ότι το Linux όπως και το Unix είναι case sensitive λειτουργικά συστήματα, δηλαδή ξεχωρίζουν πεζά και κεφαλαία γράμματα). Δεν υπάρχουν όρια σε σχέση με το μέγεθος του ονόματος ενός αρχείου, αλλά καλό είναι να είναι μικρότερο από 80 χαρακτήρες για να χωράει σε μια γραμμή εντολών. Μπορεί να χρησιμοποιηθεί οποιοσδήποτε χαρακτήρας, καλό είναι να αποφεύγονται οι χαρακτήρες που έχουν ειδική σημασία για το κέλυφος (δες στο Παράρτημα C.)
Τώρα που έχουμε δομήσει τον οικείο κατάλογο, είναι ώρα να τον ξεκαθαρίσουμε χρησιμοποιώντας την εντολή mv:
richard:~/archive> mv ../report[1-4].doc reports/Restaurants-Michelin/ |
Η παραπάνω εντολή μετακινεί τα αρχεία doc από ένα επίπεδο πάνω από το τον τρέχων φάκελο, στο φάκελο reports/Restaurants-Michelin/
Αυτή η εντολή είναι επίσης χρήσιμη όταν θέλουμε να μετονομάσουμε αρχεία:
richard:~> ls To_Do -rw-rw-r-- 1 richard richard 2534 Jan 15 12:39 To_Do richard:~> mv To_Do done richard:~> ls -l done -rw-rw-r-- 1 richard richard 2534 Jan 15 12:39 done |
Είναι φανερό ότι αλλάζει μόνο το όνομα του αρχείου και ότι όλες οι ιδιότητες παραμένουν ίδιες.
Αναλυτικότερα για τη σύνταξη και τα χαρακτηριστικά της εντολής δείτε στις σελίδες οδηγιών και τεκμηρίωσης. Η χρήση αυτής της βοήθειας πρέπει να είναι η πρώτη αντίδραση όταν αντιμετωπίζεται ένα πρόβλημα. Πολύ πιθανόν η απάντηση να βρίσκεται στην τεκμηρίωση του συστήματος. Ακόμη και έμπειροι χρήστες χρησιμοποιούν την man καθημερινά, άρα οι νέοι πρέπει να κάνουν χρήση συνεχώς. Μετά από λίγο θα γνωρίζετε τους πιο χρήσιμους διακόπτες στις πιο κοινές εντολές, αλλά θα υπάρχει πάντα η ανάγκη της τεκμηρίωσης σαν βασική πηγή πληροφόρησης. Σημειώστε ότι η πληροφόρηση που περιέχεται στα HOWTOs, FAQs, σελίδες οδηγιών και ούτω καθ' εξής σιγά σιγά ενσωματώνεται στις σελίδες τεκμηρίωσης, που είναι σήμερα η πιο επίκαιρη πηγή online τεκμηρίωσης.
Η αντιγραφή αρχείων και καταλόγων γίνεται με χρήση της εντολής cp. Μια χρήσιμη επιλογή είναι η αναδρομική αντιγραφή χρησιμοποιώντας τον διακόπτη -R (αντιγραφή όλων των καταλόγων που περιλαμβάνονται στα αρχεία προέλευσης. Δηλαδή, αντιγράφει όλα τα αρχεία, τους καταλόγους και τα περιεχόμενά τους). Η σύνταξη είναι της μορφής
cp [-R] fromfile tofile
Π.χ. ο χρήστης newguy, που θέλει τις ίδιες ρυθμίσεις για τη επιφάνεια εργασίας Gnome με του χρήστη oldguy, μπορεί να το επιτύχει αντιγράφοντας τον βασικό κατάλογο του newguy:
victor:~> cp -R ../oldguy/.gnome/ . |
Αυτό εμφανίζει κάποια μηνύματα λάθους μεταξύ των οποίων μηνύματα που αφορούν τις άδειες πρόσβασης των αρχείων, αλλά όλα έχουν να κάνουν με τα ιδιωτικά αρχεία τα οποία ο newguy δε τα χρειάζεται ούτως ή άλλως. Θα συζητήσουμε για την αλλαγή αδειών παρακάτω.
Για τη διαγραφή αρχείων χρησιμοποιείται η εντολή rm και η εντολή rmdir για τη διαγραφή καταλόγων. (Μπορείτε να δείτε εάν ένας κατάλογος είναι κενός ή όχι με τη χρήση της ls -a). Η εντολή rm έχει επιλογές για την διαγραφή μη κενών καταλόγων με όλους τους υπο-καταλόγους τους (δείτε τις σελίδες τεκμηρίωσης, γι' αυτές τις επικίνδυνες επιλογές).
Πόσο άδειος μπορεί να είναι ένας κατάλογος;
Είναι φυσιολογικό οι κατάλογοι
(.) και (..) να μη μπορούν να διαγραφούν
μιας και καθορίζουν την ιεραρχία του
συστήματος αρχείων.
Στο Linux, όπως και στο UNIX, δεν υπάρχει κάδος ανακύκλωσης – τουλάχιστον όχι για το φλοιό, παρόλο που υπάρχουν αρκετές λύσεις στο γραφικό περιβάλλον. Έτσι εάν διαγραφεί ένα αρχείο δεν υπάρχει τρόπος να επανακτηθεί εκτός εάν υπάρχουν αντίγραφα, ή είστε γρήγορος και έχετε καλό διαχειριστή συστήματος. Για την προστασία του αρχάριου μπορεί να χρησιμοποιηθεί ο διακόπτης -i για αλληλεπιδραστική συμπεριφορά των εντολών rm, cp και mv. Σε αυτή την περίπτωση το σύστημα δεν ενεργεί άμεσα αλλά ζητάει επιβεβαίωση και χρειάζεται να πατήσουμε επιπλέον το πλήκτρο Enter για να γίνει η ζημιά:
mary:~> rm -ri archive/ rm: descend into directory `archive'? y rm: descend into directory `archive/reports'? y rm: remove directory `archive/reports'? y rm: descend into directory `archive/backup'? y rm: remove `archive/backup/sysbup200112.tar'? y rm: remove directory `archive/backup'? y rm: remove directory `archive'? y |
Θα συζητήσουμε πως μπορεί να γίνει αυτή η επιλογή προκαθορισμένη στο Κεφάλαιο 7 που εξετάζει την προσαρμογή του φλοιού στις απαιτήσεις του χρήστη.
Στο παράδειγμα μετακίνησης αρχείων είδαμε ότι ο φλοιός μπορεί να χειριστεί πολλά αρχεία με μία εντολή. Σε αυτό το παράδειγμα ο φλοιός βρήκε αυτόματα τι εννοεί ο χρήστης με τους χαρακτήρες μεταξύ των “[“ και “]”. Ο φλοιός μπορεί να αντικαταστήσει περιοχή αριθμών και κεφαλαίους ή πεζούς χαρακτήρες αντίστοιχα. Επίσης μπορεί να αντικαταστήσει πολλούς χαρακτήρες με έναν αστερίσκο ή έναν μόνο χαρακτήρα με ερωτηματικό.
Όλες οι δυνατότητες αντικατάστασης μπορούν να χρησιμοποιηθούν ταυτόχρονα. Ο φλοιός Bash π.χ. δεν αντιμετωπίζει πρόβλημα με εκφράσεις όπως ls dirname/*/*/*[2-3].
Σε άλλους φλοιούς, ο αστερίσκος χρησιμοποιείται για την ελαχιστοποίηση της πληκτρολόγησης: ο χρήστης μπορεί να καταχωρήσει cd dir* αντί για cd directory. Στο Bash όμως, αυτό δεν είναι απαραίτητο γιατί το κέλυφος GNU έχει μια ιδιότητα που λέγεται file name completion (αυτόματη συμπλήρωση ονόματος). Δηλαδή όταν πληκτρολογηθούν οι πρώτοι χαρακτήρες μιας εντολής (σε οποιοδήποτε κατάλογο και αν είστε) ή αρχείου (του τρέχοντος καταλόγου) και δεν υφίσταται θέμα παρεξήγησης το κέλυφος αντιλαμβάνεται περί τίνος πρόκειται. Π.χ. Σε έναν κατάλογο με πολλά αρχεία, μπορείτε να εξετάσετε εάν υπάρχουν αρχεία που το όνομά τους αρχίζει από το γράμμα Α πληκτρολογώντας την εντολή ls A και μετά πατώντας δύο φορές το πλήκτρο Tab αντί για το Enter. Εάν υπάρχει μόνο ένα αρχείο που ξεκινάει από με "A", αυτό θα φανεί άμεσα ως όρισμα στην ls (ή όποια άλλη εντολή φλοιού).
Ένας απλός τρόπος εύρεσης αρχείων είναι με την εντολή which, όπου μπορούμε να ψάξουμε για ένα αρχείο στους καταλόγους που περιλαμβάνονται στη μεταβλητή περιβάλλοντος (σε κάθε κατάλογο που ορίζεται στην διαδρομή $PATH). Επειδή όμως η μεταβλητή αφορά μόνο καταλόγους που περιέχουν εκτελέσιμα αρχεία, η which δεν είναι χρήσιμη για κανονικά αρχεία. Είναι όμως χρήσιμη για την επίλυση προβλημάτων τους είδους "Command not Found". Στο παράδειγμα παρακάτω η χρήστης tina δε μπορεί να χρησιμοποιήσει το πρόγραμμα acroread, ενώ η συνάδελφός της δεν έχει δυσκολίες στο ίδιο σύστημα. Το πρόβλημα είναι της ίδιας μορφής με του PATH στο προηγούμενο μέρος: Η συνάδελφος της Tina της λέει ότι μπορεί να βρει το ζητούμενο πρόγραμμα στη θέση /opt/acroread/bin, αλλά αυτός ο κατάλογος δεν είναι στις δικές της διαδρομές:
tina:~> which acroread /usr/bin/which: no acroread in (/bin:/usr/bin:/usr/bin/X11) |
Το πρόβλημα αντιμετωπίζεται είτε δίνοντας τη πλήρη διαδρομή της εντολής ή επαν-εξάγοντας το περιεχόμενο της μεταβλητής PATH αλλά προσθέτοντας τη νέα διαδρομή:
tina:~> export PATH=$PATH:/opt/acroread/bin tina:~> echo $PATH /bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin |
Η which επίσης ελέγχει εάν μια εντολή είναι ψευδώνυμο κάποιας άλλης:
gerrit:~> which -a ls ls is aliased to `ls -F --color=auto' ls is /bin/ls |
Πρόκειται για δύο εντολές με γενικότερη χρησιμότητα σε σχέση με τη which, οι οποίες μπορούν να χρησιμοποιηθούν για τον εντοπισμό οποιουδήποτε αρχείου. Η εντολή find επιτρέπει την αναζήτηση αρχείων με κριτήριο όχι μόνο το όνομα, αλλά και το μέγεθος, την ημερομηνία τελευταίας τροποποίησης και άλλων ιδιοτήτων. Ο πιο συνηθισμένος τρόπος για την αναζήτηση αρχείου είναι:
Αυτό μπορεί να μεταφραστεί σαν "Ψάξε σε όλα τα αρχεία και τους υπο-καταλόγους που περιέχονται σε μια δεδομένη διαδρομή και εμφάνισε τα ονόματα των αρχείων που περιέχουν τους χαρακτήρες προς εύρεση στο όνομά τους (όχι στο περιεχόμενό τους)"
Για παράδειγμα, η εντολή:
θα εντοπίσει και θα εμφανίσει τις διαδρομές σε όλα τα αρχεία με όνομα index2.php που βρίσκονται μέσα στον κατάλογο /var/www/html και τους υποκαταλόγους του.
Μια άλλη εφαρμογή της find είναι η αναζήτηση αρχείων συγκεκριμένου μεγέθους όπως στο παρακάτω παράδειγμα όπου ο χρήστης peter θέλει να βρει όλα τα αρχεία, που είναι μεγαλύτερα των 5 MB, στον τρέχοντα κατάλογο ή στους υπο-καταλόγους του:
peter:~> find . -size +5000k psychotic_chaos.mp3 |
Εάν ψάξετε στις σελίδες οδηγιών θα δείτε ότι η find εκτελεί επίσης λειτουργίες πάνω στα επιστρεφόμενα αρχεία. Ένα συνηθισμένο παράδειγμα είναι η διαγραφή αρχείων. Είναι καλύτερα πρώτα να δοκιμάσετε ότι τα σωστά αρχεία έχουν επιλεγεί (χωρίς τη χρήση της επιλογής -exec) προτού η εντολή διαγράψει τα επιλεγμένα αρχεία. Παρακάτω αναζητούνται αρχεία που τελειώνουν σε .tmp:
peter:~> find . -name "*.tmp" -exec rm {} \; peter:~> |
Βελτιστοποίηση!
Αυτή η εντολή
θα καλέσει τη rm όσες φορές βρεθεί
ένα αρχείο που πληροί το κριτήριο. Στη
χειρότερη περίπτωση αυτό μπορεί να
είναι χιλιάδες ή εκατομμύρια περιπτώσεις,
οπότε θα υπάρξει φόρτος στο σύστημά
σας.
Ένας πιο αποτελεσματικός
τρόπος εργασίας είναι με τη χρήση
σωλήνωσης (|) και του εργαλείου xarg με
το rm σαν όρισμα. Έτσι η rm καλείται
όταν ολοκληρωθεί το πρώτο μέρος της
εντολής αντί για κάθε αρχείο ξεχωριστά.
Δες το Κεφάλαιο 5 για περισσότερες
πληροφορίες σε σχέση με τη χρήση της
ανακατεύθυνσης Εισόδου/Εξόδου.
Σε αντίθεση με την εντολή find, η οποία κάνει αναζήτηση στο σύστημά σας σε πραγματικό χρόνο (τη στιγμή που ζητείται), η εντολή locate κάνει αναζήτηση σε μια βάση δεδομένων δεικτών αρχείων. Αυτό έχει το πλεονέκτημα ότι οι αναζητήσεις διαρκούν μικρότερο χρόνο και δαπανώνται λιγότεροι πόροι του συστήματος, αλλά και το μειονέκτημα ότι εάν η βάση δεδομένων των δεικτών αρχείων δεν είναι ενημερωμένη, μπορεί να επιστραφούν λιγότερα ή και καθόλου αποτελέσματα.
Οι περισσότερες διανομές Linux χρησιμοποιούν τη slocate, με χαρακτηριστικά ασφάλειας που αποτρέπει τους χρήστες να δουν πληροφορίες που δεν έχουν δικαίωμα. Τα αρχεία στο κατάλογο ρίζας είναι ένα τέτοιο παράδειγμα (δεν είναι κανονικά προσβάσιμα από όλους). Κάποιος που θέλει να βρει κάποιον που γνωρίζει σχετικά με το κέλυφος C μπορεί να χρησιμοποιήσει την εντολή locate .cshrc, για να εμφανίσει αυτούς που έχουν διαμορφωμένο αρχείο ρυθμίσεων για το κέλυφος αυτό. Εάν υποθέσουμε ότι οι χρήστες root και jenny χρησιμοποιούν το κέλυφος C, τότε θα εμφανιστεί μόνο το /home/jenny/.cshrc και όχι αυτό που βρίσκεται στο κατάλογο ρίζας (root). Στα περισσότερα συστήματα η locate αποτελεί σύνδεσμο στην slocate:
billy:~> ls -l /usr/bin/locate lrwxrwxrwx 1 root slocate 7 Oct 28 14:18 /usr/bin/locate -> slocate* |
Η χρήστης tina θα μπορούσε να χρησιμοποιήσει τη locate για να βρει την εφαρμογή που ψάχνει:
tina:~> locate acroread /usr/share/icons/hicolor/16x16/apps/acroread.png /usr/share/icons/hicolor/32x32/apps/acroread.png /usr/share/icons/locolor/16x16/apps/acroread.png /usr/share/icons/locolor/32x32/apps/acroread.png /usr/local/bin/acroread /usr/local/Acrobat4/Reader/intellinux/bin/acroread /usr/local/Acrobat4/bin/acroread |
Οι κατάλογοι που δεν περιέχουν το όνομα bin απορρίπτονται επειδή δε περιέχουν εκτελέσιμα αρχεία. Έμειναν τρεις επιλογές άρα το αρχείο που αναζητεί η tina είναι στη θέση /usr/local/bin: είναι ένας σύνδεσμος στο σενάριο φλοιού που εκκινεί το πρόγραμμα:
tina:~> file /usr/local/bin/acroread /usr/local/bin/acroread: symbolic link to ../Acrobat4/bin/acroread tina:~> file /usr/local/Acrobat4/bin/acroread /usr/local/Acrobat4/bin/acroread: Bourne shell script text executable tina:~> file /usr/local/Acrobat4/Reader/intellinux/bin/acroread /usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped |
Προκειμένου να διατηρηθεί ο αριθμός διαδρομών αναζήτησης όσο το δυνατόν πιο μικρός ώστε το σύστημα να μη χρειάζεται να ψάχνει πολύ κάθε φορά που χρειάζεται να εκτελεστεί μια εντολή, προσθέτουμε μόνο τη διαδρομή /usr/local/bin και όχι άλλους καταλόγους που μπορεί να περιέχουν τα δυαδικά αρχεία κάποιου προγράμματος.
Πλήρης περιγραφή των χαρακτηριστικών των εντολών find και locate μπορούν να βρεθούν στα κείμενα τεκμηρίωσης.
Η grep είναι μια απλή αλλά ισχυρή εντολή για να φιλτράρονται οι γραμμές εισόδου και να επιστρέφονται συγκεκριμένα πρότυπα στην έξοδο.
Η γενική της σύνταξη είναι:
Για παράδειγμα, εντολή:
θα εμφανίσει αρχεία των οποίων είτε το όνομα είτε το περιεχόμενο περιέχουν τη λέξη chris στον τρέχοντα κατάλογο. Η συγκεκριμένη αναζήτηση δεν περιορίζεται σε κάποιον τύπο αρχείου, αλλά αφορά όλα τα αρχεία του τρέχοντος καταλόγου. Η επιλογή -i ορίζει ότι η grep δε θα κάνει διάκριση μεταξύ πεζών και κεφαλαίων ενώ η επιλογή -R (ή -r), ότι η αναζήτηση θα γίνει αναδρομικά και σε όλους τους υποκαταλόγους.
Υπάρχουν χιλιάδες εφαρμογές για την grep. Στο παρακάτω παράδειγμα ο jerry χρησιμοποιεί τη grep για να δει πως τα πήγε με τη χρήση της find:
jerry:~> grep -a find .bash_history find . -name userinfo man find find ../ -name common.cfg |
Ιστορικό αναζήτησης |
|||
---|---|---|---|
|
Επίσης χρήσιμη είναι η λειτουργία αναζήτησης του bash που ενεργοποιείται πληκτρολογώντας ταυτόχρονα Ctrl+R, όπως στην περίπτωση που θελήσαμε να ελέγξουμε την τελευταία χρήση της find: |
||
thomas ~> ^R (reverse-i-search)`find': find `/home/thomas` -name *.xml |
|||
Πληκτρολογήστε τους προς αναζήτηση χαρακτήρες στο πεδίο αναζήτησης. Όσο περισσότερους δώσετε τόσο περιορίζεται το αποτέλεσμα. Διαβάζετε το ιστορικό εντολών για την τρέχουσα χρήση του φλοιού (αποθηκεύεται στο .bash_history του βασικού καταλόγου όταν κλείνετε την τρέχουσα σύνοδο) και η πιο πρόσφατη καταχώρηση των ζητούμενων χαρακτήρων εμφανίζεται. Εάν θέλετε να δείτε προηγούμενες εντολές με τους ίδιους χαρακτήρες πληκτρολογείστε ξανά Ctrl+R. Δείτε τις σελίδες τεκμηρίωσης του bash για περισσότερα. |
Όλα τα UNIX έχουν ένα αξιοπρεπές online λεξικό. Το ίδιο και το Linux. Το λεξικό είναι μια λίστα από γνωστές λέξεις που βρίσκονται στο αρχείο words στην τοποθεσία /usr/share/dict. Για τον άμεσο ορθογραφικό έλεγχο μιας λέξης χωρίς γραφικό περιβάλλον:
william:~> grep pinguin /usr/share/dict/words william:~> grep penguin /usr/share/dict/words penguin penguins |
Ποιος είναι ο ιδιοκτήτης του διπλανού οικείου καταλόγου; Α, να και ποιο το τηλέφωνό του!
lisa:~> grep gdbruyne /etc/passwd gdbruyne:x:981:981:Guy Debruyne, tel 203234:/home/gdbruyne:/bin/bash |
Και ποιο είναι το E-mail του Arno;
serge:~/mail> grep -i arno * sent-mail: To: <Arno.Hintjens@celeb.com> sent-mail: On Mon, 24 Dec 2001, Arno.Hintjens@celeb.com wrote: |
Οι find και locate χρησιμοποιούνται συχνά σε συνδυασμό με την grep για να οριστούν μερικά σημαντικά ερωτήματα. Περισσότερα στο Κεφάλαιο 5 στην ανακατεύθυνση Εισόδου/Εξόδου.
Ένα από τα πιο δυνατά χαρακτηριστικά της κονσόλας του Linux είναι η χρήση χαρακτήρων μπαλαντέρ για την εκτέλεση εντολών με ορίσματα των οποίων τα ονόματα ταιριάζουν με ένα
κοινό μοτίβο.
Στον πίνακα που ακολουθεί συνοψίζονται οι βασικοί χαρακτήρες μπαλαντέρ του Linux:
* | Οποιοιδήποτε και οσοιδήποτε χαρακτήρες |
? | Ένας οποιοσδήποτε χαρακτήρες |
[] | Χρησιμοποιείται για την αναπαράσταση εύρους χαρακτήρων (π.χ. [a-e] -> a, b, c, d, e ή [abd] -> a, b, d) |
Οι χαρακτήρες που έχουν ειδική σημασία για το κέλυφος απαιτούν τη χρήση χαρακτήρων διαφυγής. Για το Bash όπως και τους περισσότερους φλοιούς είναι η δεξιόστροφη κάθετος, backslash (\), η χρήση του οποίου αφαιρεί την ειδική σημασία του συμβόλου που ακολουθεί.
Για παράδειγμα εάν θέλουμε να εμφανιστεί το αρχείο με το όνομα "*" αντί για όλα τα αρχεία του καταλόγου, πρέπει να χρησιμοποιηθεί η σύνταξη
less \*
Το ίδιο συμβαίνει για τα ονόματα αρχείων που περιέχουν κενούς χαρακτήρες:
cat This\ File
Εκτός από την cat, που δε κάνει τίποτε περισσότερο από την αποστολή του αρχείου στην προκαθορισμένη έξοδο, υπάρχουν και άλλα εργαλεία για την εμφάνιση του περιεχομένου ενός αρχείου.
Ο πιο εύκολος τρόπος θα ήταν η χρήση γραφικών εργαλείων αντί για τη γραμμή εντολών. Στην εισαγωγή ρίξαμε μια ματιά σε μια εφαρμογή γραφείου το OpenOffice.org. Άλλα παραδείγματα γραφικών εργαλείων είναι το GIMP (ξεκινάει από τη γραμμή εντολών με gimp), το πρόγραμμα διαχείρισης εικόνων της GNU; το xpdf για την εμφάνιση αρχείων μορφής Portable Document Format (PDF);το GhostView (gv) για τα PostScript αρχεία; το Mozilla/FireFox, lynx (ένας περιηγητής κειμένου), Konqueror, Opera και πολλά άλλα για web content; XMMS, CDplay και άλλα για αρχεία multimedia; AbiWord, Gnumeric, KOffice etc. για όλα τα είδη εφαρμογών γραφείου κλπ. Υπάρχουν χιλιάδες εφαρμογές για το Linux.
Αντίθετα επιμένουμε να εστιάζουμε στο φλοιό – ή σε εργαλεία κειμένου – που αποτελούν τη βάση για όλες τις άλλες εφαρμογές. Αυτές οι εντολές αποδίδουν καλύτερα σε περιβάλλον γραμμής εντολών με αρχεία που περιέχουν κείμενο.
Ας δούμε λοιπόν ποια χρήσιμα text εργαλεία έχουμε για να ψάξουμε μέσα σε αρχεία.
Προβλήματα γραμματοσειρών
Τα εργαλεία κειμένου που
συζητάμε συχνά αντιμετωπίζουν
προβλήματα με τα "αδιαμόρφωτα"
αρχεία κειμένου εξαιτίας των
γραμματοσειρών που χρησιμοποιούνται
σε αυτά. Ειδικοί χαρακτήρες όπως τα
τονισμένα γράμματα της αλφαβήτου, οι
Κινέζικοι χαρακτήρες και οι χαρακτήρες
από γλώσσες που χρησιμοποιούν
διαφορετικό από το προκαθορισμένο
en_US αλφάβητο, εμφανίζονται με
λάθος τρόπο ή αντικαθίστανται με μη
αναγνώσιμα σκουπίδια. Αυτά τα προβλήματα
συζητούνται στην Ενότητα 7.4
Αναμφίβολα θα ακούσετε αυτή τη φράση αργά ή γρήγορα όταν εργάζεστε σε περιβάλλον UNIX. Η ιστορία του UNIX το εξηγεί:
Πρώτα ήταν η εντολή cat. Το αποτέλεσμα έβγαινε στην έξοδο χωρίς έλεγχο.
Μετά ήρθε η pg, που μπορεί να βρεθεί ακόμη σε παλαιότερα UNIX. Αυτή η εντολή εμφανίζει σελίδα σελίδα το αποτέλεσμα στην έξοδο.
Η more απετέλεσε μια αναθεωρημένη έκδοση της pg. Αυτή είναι διαθέσιμη σε κάθε Linux σύστημα.
Η less είναι η GNU έκδοση για την more και έχει επιπλέον χαρακτηριστικά, επιτρέποντας τον τονισμό των προς αναζήτηση χαρακτήρων, την κύλιση προς τα πίσω κ.α. Η σύνταξη είναι πολύ απλή:
less name_of_file
Περισσότερες πληροφορίες υπάρχουν στις σελίδες τεκμηρίωσης.
Ήδη πρέπει να έχετε εργαστεί με σελιδοποιητές αφού αυτοί χρησιμοποιούνται από τη man..
Αυτές οι εντολές εμφανίζουν τις πρώτες ή τις τελευταίες γραμμές ενός αρχείου αντίστοιχα. Για να δείτε τις τελευταίες δέκα γραμμές που πληκτρολογήθηκαν:
tony:~> tail -10 .bash_history locate configure | grep bin man bash cd xawtv & grep usable /usr/share/dict/words grep advisable /usr/share/dict/words info quota man quota echo $PATH frm |
Η head δουλεύει παρόμοια. Η tail έχει το βολικό χαρακτηριστικό να δείχνει συνεχώς τις τελευταίες n γραμμές ενός αρχείου που αλλάζει όλη την ώρα. Η επιλογή -f χρησιμοποιείται συχνά από το διαχειριστή για τον έλεγχο των αρχείων καταγραφής (log files). Περισσότερες πληροφορίες βρίσκονται στα αρχεία τεκμηρίωσης του συστήματος.
Μια και γνωρίζουμε περισσότερα για τα αρχεία και την παρουσία τους στο σύστημα αρχείων, η κατανόηση των συνδέσμων είναι πανεύκολη. Ο σύνδεσμος δεν είναι παρά η αντιστοίχηση δύο ή περισσότερων ονομάτων στο ίδιο σύνολο δεδομένων. Υπάρχουν δύο τρόποι για να γίνει:
Hard link: Συσχετίζουμε δύο ή περισσότερα ονόματα αρχείου με το ίδιο inode. Τα Hard links μοιράζονται τα ίδια block δεδομένων στο σκληρό δίσκο ενώ συμπεριφέρονται σαν ανεξάρτητα αρχεία.
Υπάρχει ένα άμεσο μειονέκτημα: Τα hard links δε μπορούν να βρίσκονται σε διαφορετικές διαμερίσεις, επειδή τα inodes εξασφαλίζουν μοναδικότητα μόνο εντός κάθε διαμέρισης.
Soft link ή συμβολικοί σύνδεσμοι (symlink): ένα μικρό αρχείο που είναι δείκτης σε ένα άλλο αρχείο. Ένας συμβολικός σύνδεσμος περιέχει τη διαδρομή για το αρχείο στόχο και έτσι μπορούν να βρίσκονται σε διαφορετικά διαμερίσματα.
Οι δύο τύποι συνδέσμων συμπεριφέρονται παρόμοια, αλλά δεν είναι ίδιοι όπως φαίνεται στο παρακάτω σχήμα:
Είκόνα 3-2. Ο μηχανισμός hard και soft link
Σημειώστε ότι η απομάκρυνση του αρχείου στόχου σε ένα συμβολικό σύνδεσμο καθιστά το σύνδεσμο άχρηστο.
Κάθε κανονικό αρχείο είναι κατ αρχήν ένα hard link. Τα hard links δε μπορούν να διαμοιραστούν σε διαφορετικά διαμερίσματα.
Συζητείται η ύπαρξη ενός τρίτου τύπου συνδέσμου ο user-space σύνδεσμος που είναι παρόμοιος με τη συντόμευση (shortcut) των MS Windows. Αυτοί είναι αρχεία που περιέχουν μεταδεδομένα και διερμηνεύονται μόνο από το διαχειριστή αρχείων του γραφικού περιβάλλοντος. Για τον πυρήνα και το φλοιό αποτελούν κανονικά αρχεία. Το πρόθεμα τους μπορεί να είναι .desktop ή .lnk. Ένα παράδειγμα μπορεί να βρεθεί στη θέση ~/.gnome-desktop:
[dupont@boulot .gnome-desktop]$ cat La\ Maison\ Dupont [Desktop Entry] Encoding=Legacy-Mixed Name=La Maison Dupont Type=X-nautilus-home X-Nautilus-Icon=temp-home URL=file:///home/dupont |
Αυτό το παράδειγμα είναι από επιφάνεια εργασίας του KDE:
[lena@venus Desktop]$ cat camera [Desktop Entry] Dev=/dev/sda1 FSType=auto Icon=memory MountPoint=/mnt/camera Type=FSDevice X-KDE-Dynamic-Device=true |
Η δημιουργία τέτοιου είδους συνδέσμων είναι εύκολη με τη χρήση των δυνατοτήτων του γραφικού περιβάλλοντος.
Στην επόμενη ενότητα θα εξετάσουμε τη δημιουργία συμβολικών συνδέσμων τύπου UNIX με τη χρήση της γραμμής εντολών.
Οι συμβολικοί σύνδεσμοι έχουν ιδιαίτερο ενδιαφέρον για τους νέους χρήστες: είναι εύκολο να βρεθούν και δε χρειάζεται να ανησυχία για τη διαμέριση.
Η εντολή για τη δημιουργία συνδέσμων είναι η ln. Για τη δημιουργία συμβολικών συνδέσμων χρησιμοποιείται ο διακόπτης -s:
ln -s targetfile linkname
Στο παράδειγμα παρακάτω ο χρήστης freddy δημιουργεί ένα σύνδεσμο για ένα υποκατάλογο του βασικού καταλόγου σε ένα κατάλογο σε άλλη θέση του συστήματος:
freddy:~/music> ln -s /opt/mp3/Queen/ Queen freddy:~/music> ls -l lrwxrwxrwx 1 freddy freddy 17 Jan 22 11:07 Queen -> /opt/mp3/Queen |
Οι soft links είναι πολύ μικρά αρχεία σε αντίθεση με τους hard links που έχουν το ίδιο μέγεθος με το πρωτότυπο αρχείο.
Η εφαρμογή των συμβολικών συνδέσμων είναι διαδεδομένη. Χρησιμοποιούνται για την εξοικονόμηση χώρου, για την αντιγραφή αρχείων προκειμένου να εξυπηρετηθεί ένα πρόγραμμα που απαιτεί να βρίσκονται κάποια αρχεία σε άλλη θέση, χρησιμοποιούνται σε σενάρια φλοιού και γενικά γλυτώνουν από πολύ δουλειά. Ο διαχειριστής μπορεί να θέλει να μετακινήσει τους βασικούς καταλόγους των χρηστών σε διαφορετική θέση π.χ. στη θέση disk2, αλλά εάν θέλει όλα να λειτουργούν όπως και πρώτα – π.χ. το αρχείο /etc/passwd – και να καταβάλλει την ελάχιστη προσπάθεια, τότε θα δημιουργήσει ένα συμβολικό σύνδεσμο από /home προς στη νέα θέση /disk2/home..
Το μοντέλο ασφάλειας του Linux βασίζεται σε αυτό των συστημάτων UNIX και είναι εξίσου σταθερό και στιβαρό. Στο Linux κάθε αρχείο ανήκει σε ένα χρήστη (user ή u) και μια ομάδα χρηστών (group ή g). Επίσης υπάρχει μια τρίτη κατηγορία χρηστών που ούτε είναι ιδιοκτήτες, ούτε ανήκουν στην ίδια ομάδα χρηστών (others ή o). Για κάθε μία από τις 3 κατηγορίες χρηστών (user-group-others) μπορούν να δοθούν ή να στερηθούν δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης (read-write-execute).
Ήδη έχουμε χρησιμοποιήσει την επιλογή long για την εμφάνιση των αρχείων σε ένα κατάλογο (ls -l). Οι 9 χαρακτήρες που περιγράφουν τα δικαιώματα ενός αρχείου (μετά τον πρώτο που είναι η ένδειξη τύπου αρχείου) χωρίζονται σε 3 ομάδες των 3 χαρακτήρων με κάθε ομάδα να αντιστοιχεί σε ένα είδος χρήστη. Οι 3 πρώτοι χαρακτήρες, δηλαδή, περιγράφουν τα δικαιώματα του user, οι 3 επόμενοι της ομάδας και οι 3 τελευταίοι των υπόλοιπων χρηστών.
Σε κάθε 3άδα χαρακτήρων, ο πρώτος χαρακτήρας δηλώνει το δικαίωμα ανάγνωσης (r αν έχει δικαίωμα ή – αν δεν έχει), ο δεύτερος το δικαίωμα εγγραφής (w ή -) και ο τρίτος το δικαίωμα εκτέλεσης (x ή -). Το δικαίωμα εκτέλεσης έχει φυσικά νόημα μόνο εφόσον πρόκειται για εκτελέσιμο αρχείο. Το δικαίωμα ανάγνωσης αντιστοιχεί όχι μόνο στη δυνατότητα προβολής των περιεχομένων του αρχείου, αλλά και στη δυνατότητα αντιγραφής του σε άλλη τοποθεσία. Το δικαίωμα εγγραφής συνεπάγεται όχι μόνο δυνατότητα τροποποίησης των περιεχομένων, αλλά και δυνατότητα μετακίνησης, μετονομασίας και διαγραφής. Μερικά παραδείγματα:
marise:~> ls -l To_Do -rw-rw-r-- 1 marise users 5 Jan 15 12:39 To_Do marise:~> ls -l /bin/ls|grep ls -rwxr-xr-x 1 root root 45948 Aug 9 15:01 /bin/ls* |
Το πρώτο είναι ένα κανονικό αρχείο (πρώτη παύλα). Ο χρήστης με το όνομα marise ή οι χρήστες που ανήκουν στην ομάδα users μπορούν να διαβάσουν (προβολή περιεχομένων / αντιγραφή σε άλλη τοποθεσία) και να γράψουν (τροποποίηση περιεχομένων / μετακίνηση σε άλλη τοποθεσία / μετονομασία / διαγραφή), αλλά δε μπορούν να το εκτελέσουν (δεύτερη και τρίτη παύλα). Όλοι οι άλλοι μπορούν να το διαβάσουν αλλά δε μπορούν ούτε να γράψουν ούτε να το εκτελέσουν (τέταρτη και πέμπτη παύλα).
Το επόμενο είναι ένα εκτελέσιμο αρχείο και ο καθένας μπορεί να το εκτελέσει αλλά μόνο ο root μπορεί να το τροποποιήσει.
Οι σελίδες τεκμηρίωσης εξηγούν πως η εντολή ls χειρίζεται την εμφάνιση των δικαιωμάτων πρόσβασης, δείτε την ενότητα What information is listed.
Ένας εναλλακτικός τρόπος αναπαράστασης των δικαιωμάτων αρχείων είναι με τη χρήση του αριθμού 1 όπου ένα δικαίωμα υπάρχει και του αριθμού 0 όταν δεν υπάρχει. Στο πρώτο παράδειγμα τα δικαιώματα μπορούν να γραφτούν και ως 110 110 100. Αν κάθε τριάδα τη μετατρέψουμε από το δυαδικό σύστημα στο δεκαδικό, μπορούμε να πούμε ότι τα δικαιώματα του αρχείου είναι 664 (110 -> 6, 100 -> 4).
Πίνακας 3-7. Κωδικοί τύπου πρόσβασης
Κωδικός |
Επεξήγηση |
---|---|
0 ή - |
Καμία άδεια προσπέλασης |
4 ή r |
Άδεια ανάγνωσης |
2 ή w |
Άδεια εγγραφής |
1 ή x |
Άδεια εκτέλεσης |
Πίνακας 3-8. Κωδικοί χρήστη και ομάδας
Κωδικός |
Επεξήγηση |
---|---|
u |
Δικαιώματα χρηστών |
g |
Δικαιώματα ομάδας |
o |
Δικαιώματα για άλλους |
Αυτό το απλό σχήμα εφαρμόζεται πολύ αυστηρά επιτρέποντας υψηλό βαθμό ασφάλειας ακόμη και χωρίς σύστημα δικτυακής προστασίας. Μεταξύ των άλλων, ελέγχει την πρόσβαση των χρηστών στα προγράμματα και προστατεύει ευαίσθητα δεδομένα, όπως το κατάλογο ρίζα και τα αρχεία διαμόρφωσης του συστήματος.
Εάν δε γνωρίζετε το δικό σας όνομα χρήστη μπορείτε να το εμφανίσετε χρησιμοποιώντας την εντολή id που επίσης δείχνει την ομάδα στην οποία ανήκετε και τις άλλες ομάδες στις οποίες είστε μέλος:
tilly:~> id uid=504(tilly) gid=504(tilly) groups=504(tilly),100(users),2051(org) |
Το όνομά σας αποθηκεύεται επίσης και στη περιβαλλοντική μεταβλητή USER:
tilly:~> echo $USER tilly |
Η εντολή chmod χρησιμοποιείται για να προστεθούν ή να αφαιρεθούν δικαιώματα και μπορεί να έχει ως ορίσματα χαρακτήρες ή αριθμούς (ανάλογα με τους δύο τρόπους με τους οποίους συμβολίζονται τα δικαιώματα οι οποίοι περιγράφηκαν παραπάνω). Η γενική σύνταξη της εντολής (με ορίσματα χαρακτήρες) έχει ως εξής:
chmod χρήστης+/-δικαίωμα όνομα αρχείου
Παρακάτω βλέπουμε ένα παράδειγμα:
asim:~> ./hello bash: ./hello: bad interpreter: Permission denied asim:~> cat hello #!/bin/bash echo "Hello, World" asim:~> ls -l hello -rw-rw-r-- 1 asim asim 32 Jan 15 16:29 hello asim:~> chmod u+x hello asim:~> ./hello Hello, World asim:~> ls -l hello -rwxrw-r-- 1 asim asim 32 Jan 15 16:29 hello* |
Οι τελεστές + και – χρησιμοποιούνται για να προσθέσουν ή αφαιρέσουν ένα δικαίωμα σε μια ομάδα. Επιτρέπονται και συνδυασμοί τελεστών χωρισμένοι με κόμμα. Οι σελίδες τεκμηρίωσης και σελίδες οδηγιών περιέχουν χρήσιμα παραδείγματα. Παρακάτω ακολουθεί ένα παράδειγμα, το οποίο προσθέτει στο χρήστη asim του αρχείου hello όλα τα δικαιώματα ενώ παράλληλα τα αφαιρεί από την ομάδα και τους υπόλοιπους χρήστες:
asim:~> chmod u+rwx,go-rwx hello asim:~> ls -l hello -rwx------ 1 asim asim 32 Jan 15 16:29 hello* |
Το μήνυμα λάθους που λέει οτι δεν επιτρέπεται η πρόσβαση (permission denied) είναι συνήθως πρόβλημα ανεπαρκών δικαιωμάτων πρόσβασης. Επίσης σχόλια σαν "It worked yesterday," και "When I run this as root it works," οφείλονται στις περισσότερες περιπτώσεις σε λάθος δικαιώματα.
Όταν χρησιμοποιείτε τη chmod με αριθμητικά ορίσματα, τα δικαιώματα πρέπει να υπολογίζονται ανά ομάδα. Έτσι έχουμε ένα τριψήφιο οκταδικό αριθμό που αντιστοιχεί στις ρυθμίσεις που πρέπει να κάνει η chmod. Σε αυτή την περίπτωση η γενική σύνταξή της είναι:
chmod αριθμός όνομα_αρχείου ή καταλόγου
Ο παρακάτω πίνακας περιέχει τους πιο συνηθισμένους συνδυασμούς:
Πίνακας 3-9. Προστασία αρχείων με chmod
Εντολή |
Επεξήγηση |
---|---|
chmod 400 file |
Προστατεύει το αρχείο από τυχαία τροποποίηση ή διαγραφή. |
chmod 500 directory |
Προστατεύει από τυχαία διαγραφή, μετονομασία ή μετακίνηση αρχείων από αυτόν τον κατάλογο. |
chmod 600 file |
Ιδιωτικό αρχείο που τροποποιείται μόνο από το χρήστη που έδωσε αυτή την εντολή. |
chmod 644 file |
Ένα αναγνώσιμο από όλους αρχείο που τροποποιείται μόνο από τον χρήστη που έδωσε τα δικαιώματα. |
chmod 660 file |
Οι χρήστες της ίδιας ομάδας μπορούν να το τροποποιήσουν, οι άλλοι δεν έχουν καμία πρόσβαση. |
chmod 700 file |
Δεν επιτρέπει καμία πρόσβαση παρά μόνο στον χρήστη που έδωσε τα δικαιώματα που διατηρεί πλήρη πρόσβαση. |
chmod 755 directory |
Μπορεί να αναγνωσθεί και εκτελεστεί από άλλους αλλά τροποποιείται μόνο από το χρήστη που έδωσε τα δικαιώματα. |
chmod 775 file |
Προκαθορισμένα κοινόχρηστα δικαιώματα για μια ομάδα. |
chmod 777 file |
Πλήρης πρόσβαση από όλους. |
Εάν δώσετε λιγότερα από τρία ψηφία σαν όρισμα στην chmod, τα ψηφία που λείπουν συμπληρώνονται με μηδενικά αρχίζοντας από τα αριστερά. Αξίζει να σημειωθεί ότι η εκτέλεση της εντολής chmod με όρισμα έναν κατάλογο και την επιλογή -R αλλάζει τα δικαιώματα αναδρομικά και σε όλα τα αρχεία και τους καταλόγους που περιέχονται σε αυτόν. Οτιδήποτε σχετικό για αυτό και πολλά περισσότερα βρίσκονται στις σελίδες τεκμηρίωσης.
Με την χρήση της εντολής id από τη γραμμή εντολών, εμφανίζεται το ID και η ομάδα με τα οποία είμαστε συνδεδεμένοι εκείνη τη στιγμή, ακολουθούμενα από λίστα όλων των ομάδων που συμμετέχουμε. Σε μερικά συστήματα Linux μπορούμε να είμαστε συνδεδεμένοι μόνο σε μια ομάδα κάθε στιγμή. Εξ ορισμού αυτή η ενεργή ή κύρια ομάδα (primary group) είναι αυτή που ορίζεται στο αρχείο /etc/passwd. Το τέταρτο πεδίο σε αυτό το αρχείο αφορά τη κύρια ομάδα του χρήστη (μπορεί να βρεθεί και στο /etc/group. Ένα παράδειγμα:
asim:~> id uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web) asim:~> grep asim /etc/passwd asim:x:501:501:Asim El Baraka:/home/asim:/bin/bash asim:~> grep 501 /etc/group asim:x:501: |
Το τέταρτο πεδίο στη γραμμή από το /etc/passwd περιέχει την τιμή "501" που αντιπροσωπεύει την ομάδα asim στο παραπάνω παράδειγμα. Από το /etc/group μπορούμε να βρούμε το όνομα που αφορά αυτό το ID ομάδας. Όταν θα συνδεθεί αρχικά με το σύστημα ο χρήστης asim θα ανήκει στην παραπάνω ομάδα.
Σχήμα ιδιωτικής ομάδας χρήστη
Για μεγαλύτερη ευελιξία τα
περισσότερα συστήματα Linux ακολουθούν
το σχήμα ιδιωτικής ομάδας χρήστη
(private group
scheme), που αναθέτει
κάθε χρήστη πρωτίστως μια δική του
ομάδα, γι' αυτό και λέγεται ιδιωτική
ομάδα. Συνήθως αυτή η ομάδα έχει το
ίδιο όνομα με το όνομα χρήστη, που
μπορεί να μπερδέψει λίγο.
Εκτός από την ιδιωτική του ομάδα ο χρήστης asim μπορεί επίσης να είναι μέλος των ομάδων users και web. Επειδή αυτές είναι δευτερεύουσες ομάδες γι' αυτόν, θα χρειαστεί την εντολή newgrp για να συνδεθεί σε οποιαδήποτε από αυτές. Στο παράδειγμα ο asim θέλει να δημιουργήσει αρχεία που ανήκουν στην ομάδα web.
asim:/var/www/html> newgrp web asim:/var/www/html> id uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web) |
Όταν ο asim δημιουργήσει νέα αρχεία θα ανήκουν στην ιδιοκτησία της ομάδας web αντί για την asim:
asim:/var/www/html> touch test asim:/var/www/html> ls -l test -rw-rw-r-- 1 asim web 0 Jun 10 15:38 test |
Η σύνδεση με μια νέα ομάδα αποτρέπει από τη χρήση της chown (δες Ενότητα 3.4.2.4) ή από την παρέμβαση του διαχειριστή για αλλαγή δικαιωμάτων.
Δείτε τις σελίδες οδηγιών της newgrp για περισσότερες πληροφορίες.
Όταν ένα αρχείο αποθηκεύεται κάπου υπόκειται στα προκαθορισμένα πρότυπα ασφάλειας. Στο Linux δεν υπάρχουν αρχεία χωρίς άδειες πρόσβασης. Οι προκαθορισμένες άδειες με την μάσκα δημιουργίας αρχείου (mask). Η τιμή αυτής της μάσκας εμφανίζεται με τη χρήση της εντολής umask:
bert:~> umask 0002 |
Για να υπολογιστούν τα δικαιώματα ενός νέου αρχείου η παραπάνω τιμή θα πρέπει να αφαιρεθεί από τα μέγιστα δυνατά δικαιώματα. Στο παραπάνω παράδειγμα βλέπουμε 4 αριθμούς ενώ υπάρχουν μόνο 3 κατηγορίες δικαιωμάτων: χρήστης, ομάδα, άλλοι. Το πρώτο μηδενικό αφορά τις ρυθμίσεις των ειδικών χαρακτηριστικών του αρχείου, που θα συζητηθεί στην Ενότητα 3.4.2.4 και Ενότητα 4.1.6. Αυτό το μηδενικό μπορεί και να μην εμφανίζεται όταν δίνεται την εντολή umask και να βλέπετε μόνο 3 νούμερα που αντιπροσωπεύουν τη προκαθορισμένη μάσκα.
Κάθε σύστημα UNIX έχει μια λειτουργία συστήματος που ασχολείται με τη δημιουργία αρχείων και καλείται κάθε φορά που ο χρήστης χρησιμοποιεί ένα πρόγραμμα που δημιουργεί νέα αρχεία, π.χ όταν μεταφορτώνει αρχεία από το Διαδίκτυο, όταν αποθηκεύει ένα κείμενο κ.λ.π. Αυτή η λειτουργία δημιουργεί τόσο νέα αρχεία όσο και νέους καταλόγους. Όταν δημιουργείται ένας νέος κατάλογος, δίνονται πλήρη δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης σε όλους. Όταν δημιουργείται ένα νέο αρχείο αυτή η λειτουργία δίνει πλήρη δικαιώματα ανάγνωσης και εγγραφής σε όλους αλλά δικαίωμα εκτέλεσης σε κανέναν. Έτσι πριν η μάσκα εφαρμοστεί ένας κατάλογος έχει δικαιώματα 777 ή rwxrwxrwx, ένα αρχείο 666 ή rw-rw-rw-.
Στη συνέχεια αφαιρείται η τιμή umask από αυτά τα προκαθορισμένα δικαιώματα.Έτσι ένας κατάλογος θα έχει δικαιώματα 775 εξ ορισμού και ένα αρχείο 664 εάν η μάσκα έχει τιμή (0)002. Αυτό επιδεικνύεται στο παρακάτω παράδειγμα:
bert:~> mkdir newdir bert:~> ls -ld newdir drwxrwxr-x 2 bert bert 4096 Feb 28 13:45 newdir/ bert:~> touch newfile bert:~> ls -l newfile -rw-rw-r-- 1 bert bert 0 Feb 28 13:52 newfile |
Εάν συνδεθείτε σε μια άλλη ομάδα χρησιμοποιώντας την εντολή newgrp η μάσκα παραμένει ίδια. Έτσι εάν είναι ορισμένη σε 002, τα αρχεία και οι κατάλογοι που θα δημιουργηθούν κατά τη διάρκεια της σύνδεσης στη νέα ομάδα θα είναι επίσης προσβάσιμα από τα υπόλοιπα μέλη της, δηλαδή δε χρειάζεται να χρησιμοποιήσετε τη chmod.
Ο χρήστης root συνήθως έχει πιο αυστηρά προκαθορισμένα δικαιώματα για τα νέα αρχεία:
[root@estoban root]# umask 022 |
Μπορείτε να τα αλλάξετε τις ρυθμίσεις όταν δημιουργείτε το δικό σας αρχείο διαμόρφωσης φλοιού, δείτε το Κεφάλαιο 7.
Όταν ένα αρχείο ανήκει σε λάθος χρήστη ή ομάδα μπορεί να γίνει διόρθωση με τις εντολές chown (αλλαγή ιδιοκτήτη) και chgrp (αλλαγή ομάδας). Αυτή είναι μια τακτική εργασία για το διαχειριστή σε ένα περιβάλλον όπου τα αρχεία πρέπει να μοιράζονται σε μια ομάδα. Και οι δύο εντολές είναι πολύ ευέλικτες, όπως θα δείτε χρησιμοποιώντας την επιλογή --help.
Η chown μπορεί να χρησιμοποιηθεί για την αλλαγή της ιδιοκτησίας ενός αρχείου τόσο για τον χρήστη όσο και για την ομάδα, ενώ η chgrp αλλάζει μόνο την ιδιοκτησία για την ομάδα. Φυσικά το σύστημα εξετάζει κατά πόσο αυτός που αιτείται αυτή την ενέργεια έχει τα αντίστοιχα δικαιώματα.
Για να αλλάξετε τον ιδιοκτήτη ενός αρχείου χρησιμοποιήσετε την παρακάτω σύνταξη:
chown newuser file
Εάν χρησιμοποιήσετε άνω κάτω τελεία μετά το όνομα χρήστη, θα αλλάξει και η ιδιοκτησία ομάδος στην κύρια ομάδα του χρήστη που έδωσε την εντολή. Όπως είπαμε σε πολλά Linux συστήματα, ο κάθε χρήστης έχει τη δική του ομάδα, οπότε αυτή η έκφραση μπορεί να χρησιμοποιηθεί για την μετατροπή των αρχείων σε ιδιωτικά:
jacky:~> id uid=1304(jacky) gid=(1304) groups=1304(jacky),2034(pproject) jacky:~> ls -l my_report -rw-rw-r-- 1 jacky project 29387 Jan 15 09:34 my_report jacky:~> chown jacky: my_report jacky:~> chmod o-r my_report jacky:~> ls -l my_report -rw-rw---- 1 jacky jacky 29387 Jan 15 09:34 my_report |
Εάν η jacky ήθελε να μοιραστεί αυτό το αρχείο χωρίς να δώσει δικαιώματα εγγραφής στον καθένα μπορεί να χρησιμοποιήσει την εντολή chgrp:
jacky:~> ls -l report-20020115.xls -rw-rw---- 1 jacky jacky 45635 Jan 15 09:35 report-20020115.xls jacky:~> chgrp project report-20020115.xls jacky:~> chmod o= report-20020115.xls jacky:~> ls -l report-20020115.xls -rw-rw---- 1 jacky project 45635 Jan 15 09:35 report-20020115.xls |
Με αυτόν τον τρόπο οι χρήστες της ομάδας project μπορούν να εργαστούν με αυτό το αρχείο και οι χρήστες εκτός ομάδας όχι.
Τόσο η chown όσο και η chgrp έχουν τη δυνατότητα αναδρομικής αλλαγής ιδιοκτήτη χρησιμοποιώντας την επιλογή -R. Με αυτόν τον τρόπο όλα τα αρχεία και υπο-κατάλογοι ενός καταλόγου θα ανήκουν στον συγκεκριμένο χρήστη ή ομάδα.
Περιορισμοί
Στα περισσότερα συστήματα η
χρήση των chown και chgrp απαγορεύεται
για τους μη εξουσιοδοτημένους χρήστες.
Μόνο ο διαχειριστής μπορεί να αλλάξει
τις ιδιοκτησίες χρήστη και ομάδας.
Εάν δεν υπήρχε ο περιορισμός
κακοπροαίρετοι χρήστες θα μπορούσαν
να αλλάξουν τα δικαιώματα ιδιοκτησίας
αρχείων, τροποποιώντας το περιβάλλον
των χρηστών, ακόμα και να καταστρέψουν
τα αρχεία τους.
Για να μην απασχολείται συνεχώς ο διαχειριστής με προβλήματα δικαιωμάτων, μπορούν να δοθούν ειδικά δικαιώματα πρόσβασης σε ολόκληρους καταλόγους ή σε ξεχωριστά προγράμματα. Υπάρχουν τρεις ειδικές μέθοδοι:
Sticky bit: Μετά την εκτέλεση μιας εργασίας η εντολή διατηρείται στη μνήμη του συστήματος. Αρχικά αυτή η μέθοδος χρησιμοποιούνταν για οικονομία μνήμης: Οι μεγάλες εργασίες φορτωνόταν στη μνήμη μόνο μια φορά. Τώρα όμως η μνήμη είναι φθηνή και υπάρχουν καλύτεροι τρόποι για τη διαχείρισή της, γι' αυτό δε χρησιμοποιείται για τη δυνατότητα βελτιστοποίησης που παρέχει σε ένα μοναδικό αρχείο. Όταν όμως εφαρμοστεί σε έναν κατάλογο το sticky bit έχει διαφορετική σημασία. Τότε ο χρήστης μπορεί να τροποποιήσει μόνο τα αρχεία του καταλόγου στα οποία είναι ο ιδιοκτήτης ή όταν τα αρχεία έχουν τα κατάλληλα δικαιώματα. Αυτό το χαρακτηριστικό χρησιμοποιείται σε καταλόγους όπως οι /var/tmp, που πρέπει να είναι προσβάσιμοι από όλους, αλλά δεν είναι πρέπον να σβήνει ο ένας χρήστης τα δεδομένα του άλλου. Το sticky bit σηματοδοτείται από ένα t στο τέλος των πεδίων με τα δικαιώματα:
mark:~> ls -ld /var/tmp drwxrwxrwt 19 root root 8192 Jan 16 10:37 /var/tmp/ |
Το sticky bit ορίζεται χρησιμοποιώντας την εντολή chmod o+t directory. Ιστορικά η προέλευσή του "t" βρίσκεται στο save Text access χαρακτηριστικό του UNIX.
SUID (set user ID – ορισμός ταυτότητας χρήστη) και SGID (set group ID – ορισμός ταυτότητας ομάδος): με τη χρήση του χαρακτήρα s στο πεδίο δικαιωμάτων του χρήστη ή της ομάδος. Όταν αυτή η επιλογή γίνει σε ένα εκτελέσιμο αρχείο, αυτό θα εκτελεστεί με τα δικαιώματα του συγκεκριμένου χρήστη και ομάδος του αρχείου αντί για τα δικαιώματα του χρήστη που ζήτησε την εκτέλεση. Θα συζητηθεί επιπλέον στο Κεφάλαιο 4.
SGID (set group ID – ορισμός ταυτότητας ομάδος) σε κατάλογο: Σε αυτήν την περίπτωση κάθε αρχείο που δημιουργείται στον κατάλογο θα ανήκει στην ίδια ομάδα με την ομάδα του καταλόγου (ενώ κανονικά θα έπρεπε να ανήκει στην ομάδα του δημιουργού). Με αυτόν τον τρόπο οι χρήστες δε χρειάζεται να ανησυχούν όταν μοιράζονται καταλόγους:
Αυτός είναι ο τυπικός τρόπος δημιουργίας κοινόχρηστων αρχείων στο UNIX.
Τα υφιστάμενα αρχεία παραμένουν αναλλοίωτα!
Τα αρχεία που μετακινούνται
σε έναν κατάλογο SGID αλλά δημιουργήθηκαν
κάπου αλλού διατηρούν τις αρχικές
τους άδειες. Αυτό ίσως να δημιουργεί
απορίες.
Στο UNIX και το Linux όλες οι οντότητες παρουσιάζονται στο σύστημα σαν αρχεία με τις αντίστοιχες ιδιότητες. Η χρήση των προκαθορισμένων διαδρομών επιτρέπει στους χρήστες και το διαχειριστή να βρουν, διαβάσουν και χειριστούν τα αρχεία.
Έχουμε κάνει τα πρώτα βήματα για να γίνουμε ειδικοί: συζητήσαμε την πραγματική και την εικονική δομή του συστήματος αρχείων, το μοντέλο ασφάλειας των αρχείων στο Linux, καθώς και διάφορες άλλες προφυλάξεις που λαμβάνονται εξ' ορισμού σε κάθε σύστημα.
Ο φλοιός είναι το σημαντικότερο εργαλείο για αλληλεπίδραση με το σύστημα και σε αυτό το κεφάλαιο μάθαμε αρκετές εντολές φλοιού, που εμφανίζονται στον παρακάτω πίνακα.
Πίνακας 3-10. Νέες εντολές στο κεφάλαιο 3: Αρχεία και σύστημα αρχείων
Εντολή |
Σημασία |
---|---|
bash |
GNU πρόγραμμα φλοιού. |
cat file(s) |
Αποστολή του περιεχομένου του αρχείου(ων) στην προκαθορισμένη έξοδο. |
cd directory |
Μετακίνηση στον κατάλογο directory. Η εντολή cd είναι ενσωματωμένη στο bash. |
chgrp newgroup file(s) |
Αλλάζει την ομάδα ιδιοκτήτη του/των file(s) στην ομάδα newgroup |
chmod mode file(s) |
Αλλάζει τα δικαιώματα πρόσβασης του/των file(s) |
chown newowner[:[newgroup]] file(s) |
Αλλάζει τον ιδιοκτήτη του αρχείου και την ομάδα ιδιοκτήτη. |
cp sourcefile targetfile |
Αντιγράφει το sourcefile στο targetfile. |
df file |
Αναφέρει το χρησιμοποιημένο χώρο της διαμέρισης του δίσκου που περιέχει το file. |
echo string |
Εμφανίζει το αλφαριθμητικό string |
export |
Μέρος του bash που ανακοινώνει τις μεταβλητές και την τιμή τους στο σύστημα. |
file filename |
Αποφασίζει τον τύπο αρχείου του filename. |
find path expression |
Εντοπίζει αρχεία στην ιεραρχία αρχείων του συστήματος |
grep PATTERN file |
Τυπώνει τις γραμμές του file που περιέχουν το πρότυπο αναζήτησης. |
head file |
Στέλνει το αρχικό μέρος (κεφαλή) του file στην προκαθορισμένη έξοδο. |
id |
Εμφανίζει τα πραγματικά και ενεργά ονόματα χρηστών και ομάδων. |
info command |
Εμφανίζει την τεκμηρίωση σχετικά με την εντολή command. |
less file |
Εμφανίζει το file με ένα ισχυρό εργαλείο σελιδοποίησης. |
ln targetfile linkname |
Δημιουργεί ένα σύνδεσμο με το όνομα linkname για το targetfile. |
locate searchstring |
Εμφανίζει όλα α αρχεία που ταιριάζουν με το πρότυπο εύρεσης. |
ls file(s) |
Εμφανίζει το περιεχόμενο του καταλόγου. |
man command |
Εμφανίζει τις σελίδες οδηγιών του συστήματος για την εντολή command. |
mkdir newdir |
Δημιουργεί ένα νέο κενό κατάλογο. |
mv oldfile newfile |
Μετονομάζει ή μετακινεί το oldfile. |
newgrp groupname |
Σύνδεση με μια νέα ομάδα. |
pwd |
Εμφανίζει τον τρέχοντα κατάλογο. |
quota |
Εμφανίζει τη χρήση του δίσκου (μερίδια). |
rm file |
Διαγράφει αρχεία και καταλόγους. |
rmdir file |
Διαγράφει καταλόγους. |
tail file |
Εμφανίζει το τέλος (ουρά) του αρχείου. |
umask [value] |
Εμφανίζει ή αλλάζει την μάσκα δημιουργίας αρχείων. |
wc file |
Μετράει τις γραμμές, τις λέξεις και τους χαρακτήρες του αρχείου file. |
which command |
Εμφανίζει τη πλήρη διαδρομή για το αρχείο command. |
Έχουμε δώσει έμφαση στο γεγονός ότι πρέπει να ΔΙΑΒΑΣΕΤΕ ΤΙΣ ΣΕΛΙΔΕΣ ΟΔΗΓΙΩΝ / ΤΕΚΜΗΡΙΩΣΗΣ. Πρόκειται για τις πρώτες βοήθειες και δίνουν απαντήσεις σε πολλές ερωτήσεις. Ο παραπάνω κατάλογος περιέχει τις βασικές εντολές που θα χρησιμοποιήσετε σε καθημερινή βάση, όμως αυτές μπορούν να κάνουν περισσότερα πράγματα από αυτά που αναφέρουμε. Διαβάζοντας τις οδηγίες αποκτάτε τον έλεγχο που χρειάζεστε.
Εν τέλει παραθέτουμε και τις άδειες πρόσβασης των αρχείων:
Πίνακας 3-11. Άδειες πρόσβασης αρχείων
Ποιός\Τί |
r(ead) |
w(rite) |
(e)x(ecute) |
---|---|---|---|
u(ser) |
4 |
2 |
1 |
g(roup) |
4 |
2 |
1 |
o(ther) |
4 |
2 |
1 |
Συνδεθείτε με το όνομα χρήστη που έχετε.
Σε ποιο διαμέρισμα είναι o οικείος σας κατάλογος?
Πόσα διαμερίσματα υπάρχουν στο σύστημά σας?
Ποιο είναι το συνολικό μέγεθος του συστήματος Linux που έχετε?
Εμφανίσετε τη δική σας διαδρομή αναζήτησης.
Εξάγετε μια παράλογη διαδρομή, export PATH=blah και προσπαθήσετε να εμφανίσετε το περιεχόμενο του καταλόγου.
Ποια είναι η διαδρομή για τον οικείο σας κατάλογο; Πως μπορεί ένας άλλος χρήστης να προσεγγίσει τον οικείο σας κατάλογο ξεκινώντας από το δικό του και χρησιμοποιώντας μια σχετική διαδρομή;
Μετακινηθείτε στον κατάλογο tmp στη θέση /var.
Τώρα μετακινηθείτε στον κατάλογο share στη θέση /usr χρησιμοποιώντας μόνο μια εντολή. Πηγαίνετε στο doc. Ποιος είναι ο τρέχων κατάλογος;
Μετακινηθείτε στον κατάλογο /proc.
Τι CPU(s) έχει το σύστημα;
Πόση RAM χρησιμοποιεί το σύστημα αυτή τη στιγμή;
Πόσο χώρο για ανταλλαγή (swap) έχετε;
Ποιοι οδηγοί (drivers) είναι φορτωμένοι;
Πόσες ώρες έχει λειτουργήσει συνολικά το σύστημα;
Ποια συστήματα αρχείων αναγνωρίζει το σύστημά σας;
Μετακινηθείτε στη θέση /etc/rc.d | /etc/init.d | /etc/runlevels και διαλέξετε τον κατάλληλο κατάλογο για το δικό σας επίπεδο εργασίας.
Τι υπηρεσίες πρέπει να τρέχουν σε αυτό το επίπεδο;
Ποιες υπηρεσίες τρέχουν σε γραφικό περιβάλλον και όχι σε γραμμή εντολών;
Μετακινηθείτε στο /etc
Πόσο καιρό το σύστημα διατηρεί το αρχείο καταγραφής ( log file) στο οποίο καταγράφει τις συνδέσεις των χρηστών;
Ποια έκδοση τρέχετε;
Υπάρχουν τίποτε μηνύματα ή θέματα της ημέρας;
Πόσοι χρήστες είναι ορισμένοι στο σύστημά σας; Μην τους μετρήσετε, αφήστε τον υπολογιστή να το κάνει για εσάς!
Πόσες ομάδες υπάρχουν;
Που είναι αποθηκευμένη η πληροφορία για το time zone;
Είναι εγκατεστημένα τα HOWTOs;
Μετακινηθείτε στο /usr/share/doc.
Ονομάσετε τρία προγράμματα που έρχονται με το πακέτο coreutils της GNU.
Ποια έκδοση του bash είναι εγκατεστημένη;
Δημιουργήσετε ένα νέον κατάλογο στον οικείο σας κατάλογο.
Μπορείτε να μετακινήσετε αυτόν τον κατάλογο στο ίδιο επίπεδο με τον οικείο σας κατάλογο;
Αντιγράψετε όλα τα XPM αρχεία από το /usr/share/pixmaps στον νέο κατάλογο. Τι σημαίνει XPM;
Εμφανίσετε τα αρχεία με αντίστροφη αλφαβητική σειρά.
Μετακινηθείτε στον οικείο σας κατάλογο. Δημιουργήσετε έναν νέο κατάλογο και αντιγράψετε σε αυτόν όλα τα αρχεία από το /etc. Σιγουρευτείτε ότι αντιγράφετε και τα περιεχόμενα των υπο-καταλόγων του /etc! (αναδρομική αντιγραφή)
Μετακινηθείτε στον νέο κατάλογο και δημιουργήσετε έναν κατάλογο για τα αρχεία που αρχίζουν με κεφαλαίο χαρακτήρα και έναν για τα αρχεία που αρχίζουν με πεζό χαρακτήρα. Μετακινήσετε τα αρχεία χρησιμοποιώντας όσο το δυνατόν λιγότερες εντολές.
Διαγράψετε τα υπόλοιπα αρχεία.
Διαγράψετε τον κατάλογο και όλα τα περιεχόμενά του χρησιμοποιώντας μόνο μια εντολή.
Χρησιμοποιήσετε τη grep για να βρείτε ποιο σενάριο φλοιού ξεκινάει τον Font Server στο γραφικό περιβάλλον λειτουργίας.
Που βρίσκεται το πρόγραμμα sendmail?
Δημιουργήσετε έναν συμβολικό σύνδεσμο στον οικείο σας κατάλογο για το /var/tmp. Ελέγξετε εάν δουλεύει.
Κάνετε οικείο σας κατάλογο έναν συμβολικό σύνδεσμο προς αυτόν τον σύνδεσμο. Ελέγξετε εάν δουλεύει. Διαγράψετε τον πρώτο σύνδεσμο και εμφανίσετε τα περιεχόμενα του καταλόγου. Τι έγινε ο δεύτερος σύνδεσμος;
Μπορείτε να αλλάξετε τα δικαιώματα αρχείων στο /home;
Ποιο είναι το προκαθορισμένο πρότυπο (μάσκα) δημιουργίας αρχείων;
Μεταφέρετε την ιδιοκτησία του /etc σε εσάς και στη κύριά σας ομάδα.
Αλλάξετε τα δικαιώματα του ~/.bashrc έτσι ώστε μόνο εσείς και η κύριά σας ομάδα να μπορούν να το διαβάσουν.
Δώσετε την εντολή locate root. Παρατηρείτε κάτι ιδιαίτερο;
Δημιουργήσετε ένα συμβολικό σύνδεσμο στο /root. Μπορείτε να το χρησιμοποιήσετε;
Μαζί με τα αρχεία, οι διεργασίες είναι οι πιο σημαντικές οντότητες σε ένα σύστημα UNIX/Linux. Σε αυτό το κεφάλαιο μελετούμε προσεκτικότερα τις διεργασίες. Θα μάθουμε για:
Τώρα που έχουμε κάπως συνηθίσει το περιβάλλον μας, και μπορούμε να επικοινωνούμε κάπως περισσότερο με το σύστημά μας, είναι καιρός να μελετήσουμε τις διεργασίες που μπορούμε να αναλύσουμε με περισσότερη λεπτομέρεια. Όλες οι εντολές δεν αρχίζουν μια απλή διεργασία. Μερικές εντολές ξεκινούν μια σειρά διεργασίες, ενώ άλλες, όπως η ls, απλά εκτελούνται.
Επιπλέον, το Linux βασίζεται στο UNIX, όπου είναι κοινή πολιτική να έχουμε πολλούς χρήστες να εκτελούν πολλές εντολές, την ίδια ώρα στο ίδιο σύστημα. Είναι προφανές οτι έπρεπε να ληφθούν μέτρα ώστε η CPU να μπορεί να διαχειριστεί όλες αυτές τις διεργασίες, και να υπάρχουν εργαλεία για την εναλλαγή των χρηστών και των διεργασιών. Σε μερικές περιπτώσεις, οι διεργασίες πρέπει να συνεχίσουν να εκτελούνται ακόμη και αν ο χρήστης που τις ξεκίνησε έχει αποσυνδεθεί. Και οι χρήστες πρέπει να έχουν τα μέσα για τη διακοπή και επανενεργοποίηση σταματημένων διεργασιών.
Θα εξηγήσουμε τη δομή των διεργασιών του Linux στις επόμενες ενότητες.
Οι διαλογικές διεργασίες αρχικοποιούνται και ελέγχονται από μια σύνοδο τερματικού. Με άλλα λόγια, πρέπει να υπάρχει κάποιος συνδεδεμένος στο σύστημα για να ξεκινήσει τέτοιες διεργασίες, δεν ξεκινούν αυτόματα σαν μέρος των λειτουργιών του συστήματος. Αυτές οι διεργασίες μπορεί να εκτελούνται στο προσκήνιο, καταλαμβάνοντας το τερματικό που τις ξεκίνησε, ώστε δεν μπορείτε να ξεκινήστε άλλες εφαρμογές όσο αυτές οι διεργασίες εκτελούνται. Εναλλακτικά μπορεί να εκτελούνται στο παρασκήνιο, ώστε το τερματικό που τις ξεκίνησε να μπορεί να δέχεται νέες εντολές, ενώ αυτές οι διεργασίες συνεχίζουν να εκτελούνται. Μέχρι τώρα, εστιάσαμε κυρίως σε προγράμματα (διεργασίες) που εκτελούνται στο προσκήνιο – η απαιτούμενη ώρα εκτέλεσης είναι πολύ μικρή για να γίνει αντιληπτή. Επιπλέον, ορισμένες διεργασίες περιμένουν από εσάς να κάνετε κάτι, ένα καλό παράδειγμα είναι όταν βλέπετε ένα αρχείο με την εντολή less. Το πρόγραμμα περιμένει από εσάς να πατήσετε κάποιο πλήκτρο. Το πρόγραμμα έχει 'καταλάβει' το τερματικό που πλέον καταλαβαίνει μόνο εντολές του προγράμματος. Σε άλλες εντολές η 'κατάληψη' μπορεί να σημαίνει ακόμη και 'πάγωμα' του τερματικού ή σειρά μηνυμάτων λάθους.
Όσο όμως μια διεργασία εκτελείται στο υπόβαθρο, ο χρήστης μπορεί να κάνει άλλα πράγματα στο τερματικό που ξεκίνησε τη διεργασία.
Ο φλοιός προσφέρει ένα χαρακτηριστικό που λέγεται έλεγχος εργασιών (job control) που επιτρέπει την εύκολη διαχείριση πολλαπλών διεργασιών. Αυτός ο μηχανισμός εναλλάσσει διεργασίες μεταξύ προσκηνίου και παρασκηνίου. Επίσης μπορεί να ξεκινήσει διεργασίες κατ' ευθείαν στο παρασκήνιο.
Η εκτέλεση διεργασιών στο παρασκήνιο είναι χρήσιμη μόνο όταν τα αντίστοιχα προγράμματα δεν απαιτούν επικοινωνία με το χρήστη (μέσω του φλοιού). Τυπικά θέτουμε εργασίες στο παρασκήνιο όταν περιμένουμε να διαρκέσουν πολλή ώρα. Για να ελευθερώσουμε το τερματικό, εισάγουμε ένα '&' ( ampersand) μετά την εντολή. Στο παράδειγμα, σε γραφική διεπαφή, ανοίγουμε ένα επιπλέον παράθυρο τερματικού:
billy:~> xterm & [1] 26558 billy:~> jobs [1]+ Running xterm & |
Τα πλήρη χαρακτηριστικά του ελέγχου εργασιών εξηγούνται στις σελίδες τεκμηρίωσης του bash, έτσι εδώ παρουσιάζονται μόνο τα συχνά χρησιμοποιούμενα:
Πίνακας 4-1. Έλεγχος διεργασιών
(μέρος) εντολή(ς) |
Σημασία |
---|---|
command |
Εκτέλεση εντολής command στο προσκήνιο. |
command & |
Εκτέλεση της εντολής command στο παρασκήνιο (απελευθέρωση τερματικού) |
jobs |
Εμφάνιση των εντολών που εκτελούνται στο παρασκήνιο. |
Ctrl+Z |
Αναστολή (σταμάτημα, αλλά όχι τερματισμός) μιας διεργασίας που εκτελείται στο προσκήνιο. |
Ctrl+C |
Τερματισμός (διακοπή και παραίτηση) μιας διεργασίας που εκτελείται στο προσκήνιο. |
%n |
Κάθε διεργασία που εκτελείται στο παρασκήνιο παίρνει έναν αριθμό. Με την έκφραση %n Μια εργασία αναφέρεται με τον αριθμό της, για παράδειγμα fg %2. |
bg |
Επανενεργοποίηση ενός προγράμματος που έχει ανασταλεί στο παρασκήνιο. |
fg |
Επαναφορά εργασίας στο προσκήνιο. |
kill |
Τερματισμός διεργασίας (δες επίσης Shell Builtin Commands στη τεκμηρίωση του bash) |
Στις ασκήσεις υπάρχουν πρακτικά παραδείγματα.
Πολλά συστήματα UNIX πιθανώς να έχουν ακόμη την εντολή screen, που παίζει ρόλο αντίστοιχο με τη εκκίνηση ενός νέου παράθυρου τερματικού. Επιπλέον όλα τα προγράμματα και οι διεργασίες θα εκτελεστούν στο screen ανεξάρτητα από το τρέχον παράθυρο. Μπορείτε να αποσυνδεθείτε εντελώς από το σύστημα και να επανασυνδεθείτε αργότερα και να δείτε τι κάνει το screen που ξεκινήσατε.
Το πρόγραμμα αυτό προέρχεται από την εποχή που δεν υπήρχαν παράθυρα τερματικών, και όλα έπρεπε να γίνουν μέσα από το ίδιο τερματικό κειμένου. Τώρα η χρήση του είναι περιορισμένη στους 'μανιακούς' του παλιού UNIX.
Οι αυτόματες διεργασίες ή διεργασίες δέσμης (batch) δεν συνδέονται με ένα τερματικό. Πρόκειται για εργασίες που μπαίνουν σε ουρά στον spooler, ώστε μπορούν να εκτελεστούν με λογική FIFO (first-in, first-out). Τέτοιες εργασίες εκτελούνται με βάση δυο κριτήρια:
Συγκεκριμένη μέρα και ώρα: με χρήση της εντολής at, που συζητάμε αργότερα στο κεφάλαιο.
Σε στιγμές που ο φόρτος του συστήματος είναι αρκετά χαμηλός για να δεχτεί επιπλέον εργασίες: αυτό γίνεται με την εντολή batch. Εξ' ορισμού οι εργασίες μπαίνουν σε μια ουρά και αναμένουν να εκτελεστούν όταν ο φόρτος του συστήματος είναι μικρότερος του 0.8. Χρησιμοποιείται σε μεγάλα συστήματα, όπου μπορεί να έχουμε μεγάλο όγκο δεδομένων ή υπάρχουν διεργασίες που απαιτούν πολλούς πόρους. Γενικά η επεξεργασία δέσμης χρησιμοποιείται για τη βελτιστοποίηση της απόδοσης του συστήματος.
Οι δαίμονες (daemons) είναι διεργασίες διακομιστή που εκτελούνται συνεχώς. Συνήθως αρχικοποιούνται με την έναρξη του συστήματος και μετά περιμένουν στο παρασκήνιο μέχρι να ζητηθεί η συνδρομή τους, ένα τυπικό παράδειγμα είναι ο δαίμονας της δικτύωσης, xinetd, που ξεκινά σχεδόν σε κάθε διαδικασία εκκίνησης. Μετά την εκκίνηση του συστήματος, ο δαίμονας κάθεται μέχρι κάποιο πρόγραμμα πελάτης, όπως ένας πελάτης FTP, χρειάζεται να συνδεθεί.
Μια διεργασία έχει μια σειρά χαρακτηριστικά, που μπορούμε να τα δούμε με την εντολή ps:
Α αριθμός διεργασίας (process ID ή PID): ένας μοναδικός αριθμός ταυτοποίησης της διεργασίας.
Ο αριθμός πατρικής διεργασίας (parent process ID ή PPID): ο αριθμός διεργασίας (PID) της διεργασίας που ξεκίνησε αυτή τη διεργασία.
Αριθμός ωραιοποίησης (niceness): ο βαθμός φιλικότητας της διεργασίας προς τις άλλες (δεν είναι το ίδιο με τη προτεραιότητα της διεργασίας, που υπολογίζεται με βάση τον αριθμό ωραιοποίησης και τη πρόσφατη χρήση της CPU από τη διεργασία).
Τερματικό ή TTY: τερματικό με το οποίο συνδέεται η διεργασία.
Ταυτότητα του πραγματικού και effective χρήστη (RUID και EUID): ο ιδιοκτήτης της διεργασίας. Ο πραγματικός ιδιοκτήτης είναι αυτός που έδωσε την εντολή, ο effective καθορίζει τα δικαιώματα πρόσβασης της διεργασίας στους πόρους του συστήματος. Συνήθως οι RUID και EUID είναι οι ίδιοι, και η διεργασία έχει τα ίδια δικαιώματα πρόσβασης με τον χρήστη που την δημιούργησε. Ένα παράδειγμα: ο περιηγητής mozilla στο /usr/bin έχει ιδιοκτήτη τον root:
theo:~> ls -l /usr/bin/mozilla -rwxr-xr-x 1 root root 4996 Nov 20 18:28 /usr/bin/mozilla* theo:~> mozilla & [1] 26595 theo:~> ps -af UID PID PPID C STIME TTY TIME CMD theo 26601 26599 0 15:04 pts/5 00:00:00 /usr/lib/mozilla/mozilla-bin theo 26613 26569 0 15:04 pts/5 00:00:00 ps -af |
Η εντολή για τον περιηγητή διαδικτύου σε πιο καινούρια συστήματα, ενδέχεται να είναι firefox.
Όταν ο χρήστης theo ξεκινά το πρόγραμμα, η διεργασία και όσες ξεκινούν από αυτή, έχουν ιδιοκτήτη τον theo και όχι τον υπερ-χρήστη. Όταν ο mozilla χρειαστεί να προσπελάσει κάποια αρχεία αυτό θα γίνει με βάση τα δικαιώματα του theo και όχι του root.
Ταυτότητα πραγματικής και effective group owner (RGID and EGID): Η πραγματική ομάδα είναι η κύρια ομάδα του πραγματικού χρήστη. Η effective ομάδα είναι η ίδια εκτός αν έχουμε εφαρμογή προσπέλασης SGID.
Η εντολή ps είναι ένα βασικό εργαλείο για να εμφανίσουμε διεργασίες. Η εντολή αυτή έχει πολλές επιλογές που μπορούν να συνδυαστούν για να εμφανίσουμε διάφορα χαρακτηριστικά διεργασιών.
Χωρίς επιλογές, η ps δίνει μόνο πληροφορίες για την τρέχουσα σύνοδο φλοιού και προκύπτουσες διεργασίες:
theo:~> ps PID TTY TIME CMD 4245 pts/7 00:00:00 bash 5314 pts/7 00:00:00 ps |
Καθώς αυτό δεν δίνει αρκετή πληροφορία (γενικά εκτελούνται πάνω από εκατό διεργασίες στο σύστημά μας) συνήθως επιλέγουμε συγκεκριμένες διεργασίες από τη λίστα όλων των διεργασιών, με χρήση της εντολής grep σε μια σωλήνωση (pipe), δες Ενότητα 5.1.2.1, όπως στη γραμμή που ακολουθεί, εμφανίζοντας όλες τις διεργασίες με ιδιοκτήτη κάποιο συγκεκριμένο χρήστη:
ps -ef | grep username
Το παράδειγμα δείχνει όλες τις διεργασίες που περιέχουν το αλφαριθμητικό bash, τον πιο συνηθισμένο φλοιό σε συστήματα Linux:
theo:> ps auxw | grep bash brenda 31970 0.0 0.3 6080 1556 tty2 S Feb23 0:00 -bash root 32043 0.0 0.3 6112 1600 tty4 S Feb23 0:00 -bash theo 32581 0.0 0.3 6384 1864 pts/1 S Feb23 0:00 bash theo 32616 0.0 0.3 6396 1896 pts/2 S Feb23 0:00 bash theo 32629 0.0 0.3 6380 1856 pts/3 S Feb23 0:00 bash theo 2214 0.0 0.3 6412 1944 pts/5 S 16:18 0:02 bash theo 4245 0.0 0.3 6392 1888 pts/7 S 17:26 0:00 bash theo 5427 0.0 0.1 3720 548 pts/7 S 19:22 0:00 grep bash |
Σε αυτές τις περιπτώσεις, η εντολή grep που βρίσκει το αλφαριθμητικό bash χρησιμοποιείται σε συστήματα που έχουν πολύ idletime. Εναλλακτικά μπορείτε να χρησιμοποιήσετε την εντολή pgrep.
|?
Θα εξηγήσουμε τον τελεστή | στο επόμενο κεφάλαιο, δες Κεφάλαιο 5.
Περισσότερες πληροφορίες μπορούν να βρεθούν ως συνήθως: με ps --help ή man ps. Η GNU ps υποστηρίζει αρκετές διαφορετικές μορφές επιλογών.
Σημειώστε οτι η ps δίνει μόνο μια στιγμιαία κατάσταση των ενεργών διεργασιών. Το πρόγραμμα top εμφανίζει μια ακριβέστερη εικόνα με συνεχή ανανέωση των αποτελεσμάτων της ps (με πολλές επιλογές) κάθε πέντε δευτερόλεπτα, κατατάσσοντας τις διεργασίες με βάση το φόρτο που επιφέρουν στο σύστημα, και με πληροφορίες σχετικά με τη χρήση του χώρου εναλλαγής, τη κατάσταση της CPU, της μνήμης κλπ:
12:40pm up 9 days, 6:00, 4 users, load average: 0.21, 0.11, 0.03 89 processes: 86 sleeping, 3 running, 0 zombie, 0 stopped CPU states: 2.5% user, 1.7% system, 0.0% nice, 95.6% idle Mem: 255120K av, 239412K used, 15708K free, 756K shrd, 22620K buff Swap: 1050176K av, 76428K used, 973748K free, 82756K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 5005 root 14 0 91572 15M 11580 R 1.9 6.0 7:53 X 19599 jeff 14 0 1024 1024 796 R 1.1 0.4 0:01 top 19100 jeff 9 0 5288 4948 3888 R 0.5 1.9 0:24 gnome-terminal 19328 jeff 9 0 37884 36M 14724 S 0.5 14.8 1:30 mozilla-bin 1 root 8 0 516 472 464 S 0.0 0.1 0:06 init 2 root 9 0 0 0 0 SW 0.0 0.0 0:02 keventd 3 root 9 0 0 0 0 SW 0.0 0.0 0:00 kapm-idled 4 root 19 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 5 root 9 0 0 0 0 SW 0.0 0.0 0:33 kswapd 6 root 9 0 0 0 0 SW 0.0 0.0 0:00 kreclaimd 7 root 9 0 0 0 0 SW 0.0 0.0 0:00 bdflush 8 root 9 0 0 0 0 SW 0.0 0.0 0:05 kupdated 9 root -1-20 0 0 0 SW< 0.0 0.0 0:00 mdrecoveryd 13 root 9 0 0 0 0 SW 0.0 0.0 0:01 kjournald 89 root 9 0 0 0 0 SW 0.0 0.0 0:00 khubd 219 root 9 0 0 0 0 SW 0.0 0.0 0:00 kjournald 220 root 9 0 0 0 0 SW 0.0 0.0 0:00 kjournald |
Η πρώτη σειρά της λίστας της top περιέχει κάποιες πληροφορίες που εμφανίζονται με την εντολή uptime:
jeff:~> uptime 3:30pm, up 12 days, 23:29, 6 users, load average: 0.01, 0.02, 0.00 |
Τα δεδομένα αυτών των προγραμμάτων αποθηκεύονται μεταξύ άλλων στο /var/run/utmp (συνδεδεμένοι χρήστες) και στο εικονικό σύστημα αρχείων /proc, για παράδειγμα στο /proc/loadavg (πληροφορίες μέσου φόρτου). Υπάρχουν αρκετοί γραφικοί τρόποι εμφάνισης αυτών των δεδομένων, όπως ο Gnome System Monitor και τα lavaps. Στους ιστοτόπους FreshMeat και SourceForge θα βρείτε δεκάδες εφαρμογές που συγκεντρώνουν αυτές τις πληροφορίες και άλλες καταγραφές δεδομένων διακομιστή, επιτρέποντας, για παράδειγμα, τη παρακολούθηση πολλών συστημάτων μέσω ενός ειδικού ιστοτόπου.
Οι σχέσεις μεταξύ διεργασιών μπορούν να εμφανιστούν με την εντολή pstree:
sophie:~> pstree init-+-amd |-apmd |-2*[artsd] |-atd |-crond |-deskguide_apple |-eth0 |-gdm---gdm-+-X | `-gnome-session-+-Gnome | |-ssh-agent | `-true |-geyes_applet |-gkb_applet |-gnome-name-serv |-gnome-smproxy |-gnome-terminal-+-bash---vim | |-bash | |-bash---pstree | |-bash---ssh | |-bash---mozilla-bin---mozilla-bin---3*[mozilla-bin] | `-gnome-pty-helper |-gpm |-gweather |-kapm-idled |-3*[kdeinit] |-keventd |-khubd |-5*[kjournald] |-klogd |-lockd---rpciod |-lpd |-mdrecoveryd |-6*[mingetty] |-8*[nfsd] |-nscd---nscd---5*[nscd] |-ntpd |-3*[oafd] |-panel |-portmap |-rhnsd |-rpc.mountd |-rpc.rquotad |-rpc.statd |-sawfish |-screenshooter_a |-sendmail |-sshd---sshd---bash---su---bash |-syslogd |-tasklist_applet |-vmnet-bridge |-xfs `-xinetd-ipv6 |
Οι επιλογές -u και -a δίνουν παραπάνω πληροφορίες. Για περισσότερες πληροφορίες, δείτε τις σελίδες τεκμηρίωσης.
Στην επόμενη ενότητα θα δούμε πώς μια διεργασία μπορεί να δημιουργήσει άλλες διεργασίες.
Μια νέα διεργασία δημιουργείται επειδή μια υπάρχουσα διεργασία κάνει ένα ακριβές αντίγραφο του εαυτού της. Η νέα διεργασία – παιδί, έχει το ίδιο περιβάλλον εργασίας με τη διεργασία – γονέα, διαφέρουν μόνο στον αριθμό διεργασίας (process ID). Αυτή η διαδικασία λέγεται διακλάδωση (forking).
Μετά τη διακλάδωση, ο χώρος διευθύνσεων της διεργασίας – παιδί ενημερώνεται με τα νέα δεδομένα της διεργασίας. Αυτό γίνεται με μια κλήση exec του συστήματος.
Ο μηχανισμός fork-and-exec μεταφέρει την εκτέλεση από τη παλιά εντολή στη νέα, ενώ το νέο πρόγραμμα κληρονομεί το περιβάλλον εκτέλεσης παραμένει το ίδιο, συμπεριλαμβανομένων των συσκευών εισόδου και εξόδου, μεταβλητές περιβάλλοντος και προτεραιότητα. Αυτός ο μηχανισμός χρησιμοποιείται στο UNIX και στο Linux. Ακόμη και η πρώτη διεργασία η init, με αριθμό (process ID) 1, διακλαδώνεται κατά τη διαδικασία εκκίνησης σε μια διαδικασία που λέγεται bootstrapping.
Αυτό το σχήμα δείχνει τη διαδικασία του μηχανισμού fork-and-exec. Ο αριθμός της διεργασίας αλλάζει μετά τη διακλάδωση:
Εικόνα 4-1. Μηχανισμός fork-and-exec
Υπάρχουν μερικές περιπτώσεις που η init γίνεται γονέας μιας διεργασίας, αν και αυτή δεν ξεκίνησε από την init, όπως ήδη είδαμε στο παράδειγμα με το pstree. Πολλά προγράμματα, λόγου χάρη, δαιμονοποιούν (daemonize) τις διεργασίες παιδιά τους, ώστε να εξακολουθήσουν να εκτελούνται ακόμη και όταν η πατρική διεργασία σταματήσει. Ένας διαχειριστής παραθύρων είναι ένα τυπικό παράδειγμα: ξεκινά μια διεργασία xterm η οποία δημιουργεί ένα φλοιό που δέχεται εντολές. Στη συνέχεια ο διαχειριστής παραθύρων αρνείται κάθε ευθύνη και περνά τη διεργασία στην init. Με αυτό το μηχανισμό, είναι δυνατό να αλλάξουμε διαχειριστή παραθύρων χωρίς να διακόψουμε εκτελούμενες εφαρμογές.
Αραιά και πού κάτι πάει στραβά, ακόμη και στις καλύτερες οικογένειες. Σε αυτή την εξαιρετική περίπτωση, μια διεργασία μπορεί να τερματιστεί αλλά η γονική διεργασία να μην περιμένει το τερματισμό της (να έχει ήδη τερματιστεί και αυτή). Τέτοιες διεργασίες που δεν έχουν τερματιστεί κανονικά ονομάζονται διεργασίες zombie.
Όταν μια διεργασία τερματιστεί κανονικά (δεν σταματά με kill ή δεν διακόπτεται απρόοπτα), επιστρέφει τη κατάσταση εξόδου (exit status) στη γονική διεργασία. Η κατάσταση εξόδου είναι ένας αριθμός που παρέχει κάποιες πληροφορίες σχετικές με την εκτέλεση της διεργασίας παιδιού. Το σύστημα αυτό της επιστροφής πληροφοριών κατά την έξοδο προέρχεται από τη γλώσσα προγραμματισμού C στην οποία είναι γραμμένο το UNIX (και το Linux).
Οι κωδικοί επιστροφής (καταστάσεις εξόδου) μπορούν να ερμηνευτούν από τη διεργασία γονέα ή από ειδικά σενάρια φλοιού. Οι τιμές των κωδικών εξαρτώνται από την εφαρμογή. Η σχετική πληροφορία μπορεί να βρεθεί στις σελίδες τεκμηρίωσης του συγκεκριμένου προγράμματος, για παράδειγμα η εντολή grep επιστέφει -1 αν δεν υπάρξει καμιά ταύτιση, οπότε η διεργασία γονέας θα μπορούσε να εμφανίσει ένα μήνυμα της μορφής "No files found". Ένα άλλο παράδειγμα είναι η ενσωματωμένη στο Bash εντολή true, που δεν κάνει τίποτε άλλο από το να επιστρέφει κατάσταση εξόδου 0, δηλαδή επιτυχία.
Οι διεργασίες τερματίζουν επειδή λαμβάνουν ένα σήμα. Υπάρχουν πολλά σήματα που μπορείτε να στείλετε σε μια διεργασία. Η εντολή kill χρησιμοποιείται για την αποστολή σημάτων. Η επιλογή kill -l εμφανίσει μια λίστα από σήματα. Τα περισσότερα από αυτά είναι για εσωτερική χρήση του συστήματος, ή για προγραμματιστές που γράφουν κώδικα συστήματος. Ως χρήστης θα χρειαστείτε τα παρακάτω σήματα:
Table 4-2. Συνηθισμένα σήματα
Όνομα σήματος |
Αριθμός σήματος |
Σημασία |
---|---|---|
SIGTERM |
15 |
Κανονικός τερματισμός διεργασίας. |
SIGINT |
2 |
Διακοπή διεργασίας. Η διεργασία μπορεί να αγνοήσει αυτό το σήμα. |
SIGKILL |
9 |
Διακοπή διεργασίας. Η διεργασία δεν μπορεί να αγνοήσει αυτό το σήμα. |
SIGHUP |
1 |
Για δαίμονες: ξαναδιάβασε το αρχείο διαμόρφωσης. |
Μπορείτε να διαβάσετε περισσότερα για τις διαδικασίες αποστολής και παραλαβής σήματος με τη man 7 signal.
Όπως υποσχεθήκαμε στο προηγούμενο κεφάλαιο, τώρα θα συζητήσουμε σε μεγαλύτερη λεπτομέρεια τις ειδικές μεθόδους SUID και SGID. Αυτές οι μέθοδοι υπάρχουν για να παρέχουν στους απλούς χρήστες τη δυνατότητα να εκτελούν εργασίες που κανονικά δεν θα μπορούσαν λόγω του σχήματος αδειών πρόσβασης των συστημάτων UNIX. Ιδανικά οι ειδικοί τύποι χρησιμοποιούνται όσο πιο σπάνια γίνεται, αφού περιέχουν κινδύνους ασφάλειας. Οι προγραμματιστές του Linux γενικά τους απέφυγαν όσο ήταν δυνατό. Για παράδειγμα η έκδοση Linux της ps, χρησιμοποιεί τη πληροφορία που βρίσκεται στο σύστημα αρχείων /proc, η οποία είναι προσβάσιμη από όλους, και έτσι αποφεύγει την έκθεση ευαίσθητων δεδομένων και πόρων του συστήματος στο ευρύ κοινό. Παλιότερα, ή ακόμη και σήμερα σε μερικά συστήματα UNIX, το πρόγραμμα της ps έπρεπε να προσπελάσει αρχεία σαν τα /dev/mem και dev/kmem, που είχε μειονεκτήματα εξ' αιτίας των αδειών πρόσβασης αυτών των αρχείων:
rita:~> ls -l /dev/*mem crw-r----- 1 root kmem 1, 2 Aug 30 22:30 /dev/kmem crw-r----- 1 root kmem 1, 1 Aug 30 22:30 /dev/mem |
Σε παλιότερες εκδόσεις του ps, δεν ήταν δυνατό να ξεκινήσει κανείς το πρόγραμμα σαν απλός χρήστης, εκτός αν εφαρμοζόταν ειδικές μέθοδοι.
Εν και γενικά προσπαθούμε να αποφύγουμε τη χρήση ειδικών μεθόδων, μερικές φορές είναι αναγκαίο να χρησιμοποιήσουμε το SUID. Ένα παράδειγμα είναι ο μηχανισμός αλλαγής κωδικών πρόσβασης. Φυσικά οι χρήστες θέλουν να κάνουν αυτή τη δουλειά μόνοι τους αντί να αφήσουν στον διαχειριστή του συστήματος. Όπως γνωρίζουμε, τα ονόματα χρηστών και οι κωδικοί πρόσβασης βρίσκονται στο αρχείο /etc/passwd, που έχει τις παρακάτω άδειες πρόσβασης και ιδιοκτήτες:
bea:~> ls -l /etc/passwd -rw-r--r-- 1 root root 1267 Jan 16 14:43 /etc/passwd |
Παρ' όλα αυτά οι χρήστες πρέπει να μπορούν να μεταβάλουν ορισμένες από τις δικές τους πληροφορίες στο συγκεκριμένο αρχείο. Αυτό επιτυγχάνεται δίνοντας ειδικά δικαιώματα πρόσβασης στο πρόγραμμα passwd:
mia:~> which passwd passwd is /usr/bin/passwd mia:~> ls -l /usr/bin/passwd -r-s--x--x 1 root root 13476 Aug 7 06:03 /usr/bin/passwd* |
Όταν καλείται, η εντολή passwd εκτελείται με δικαιώματα root, επιτρέποντας έτσι τον απλό χρήστη να τροποποιήσει το αρχείο με τους κωδικούς πρόσβασης που έχει ιδιοκτήτη τον υπέρ-χρήστη.
Οι μέθοδοι SGID σε ένα αρχείο δεν συμβαίνουν τόσο συχνά όσο οι μέθοδοι SUID, γιατί οι SGID συχνά απαιτούν τη δημιουργία ειδικών ομάδων. Σε μερικές περιπτώσεις, όμως, είναι αναγκαίο να μπούμε σε αυτό το κόπο για να κτίσουμε μια κομψή λύση (μην ανησυχείτε ιδιαίτερα – οι αναγκαίες ομάδες συνήθως δημιουργούνται κατά την εγκατάσταση). Αυτή είναι η περίπτωση των προγραμμάτων write και wall, που χρησιμοποιούνται για την αποστολή μηνυμάτων στα τερματικά άλλων χρηστών (ttys). Η εντολή write στέλνει μηνύματα σε ένα χρήστη, ενώ η wall στέλνει σε writes όλους τους συνδεδεμένους χρήστες.
Η αποστολή κειμένου στο τερματικό ενός άλλου χρήστη κανονικά δεν επιτρέπεται. Για να ξεπεράσουμε το πρόβλημα, δημιουργείται μια ομάδα, που είναι ιδιοκτήτρια όλων των τερματικών συσκευών. Οι εντολές write και wall λαμβάνουν άδειες πρόσβασης SGID, επομένως έχουν δικαιώματα πρόσβασης στις συσκευές tty. Έτσι, ο χρήστης που καλεί αυτές τις εντολές, αν και δεν έχει δικαιώματα να γράψει σε κάποιο άλλο τερματικό, μπορεί να στείλει τα μηνύματα.
Στο παρακάτω παράδειγμα, ο χρήστης joe πρώτα βρίσκει σε ποιο τερματικό είναι συνδεδεμένος ο χρήστης που τον ενδιαφέρει, μέσω της εντολής who. Μετά στέλνει ένα μήνυμα με την εντολή write. Επίσης φαίνονται τα δικαιώματα πρόσβασης στο πρόγραμμα write και στα τερματικά που χρησιμοποιεί ο παραλήπτης: είναι καθαρό οτι μόνο ο ιδιοκτήτης έχει δικαιώματα στις συσκευές αυτές, με εξαίρεση την ειδική ομάδα που μπορεί να γράψει σε όλες τις συσκευές.
joe:~> which write write is /usr/bin/write joe:~> ls -l /usr/bin/write -rwxr-sr-x 1 root tty 8744 Dec 5 00:55 /usr/bin/write* joe:~> who jenny tty1 Jan 23 11:41 jenny pts/1 Jan 23 12:21 (:0) jenny pts/2 Jan 23 12:22 (:0) jenny pts/3 Jan 23 12:22 (:0) joe pts/0 Jan 20 10:13 (lo.callhost.org) joe:~> ls -l /dev/tty1 crw--w---- 1 jenny tty 4, 1 Jan 23 11:41 /dev/tty1 joe:~> write jenny tty1 hey Jenny, shall we have lunch together? ^C |
Η χρήστης jenny λαμβάνει στο τερματικό της το παρακάτω μήνυμα:
Message from joe@lo.callhost.org on ptys/1 at 12:36 ... hey Jenny, shall we have lunch together? EOF |
Μετά τη παραλαβή του μηνύματος, η οθόνη μπορεί να καθαριστεί με Ctrl+L. Για να μη λαμβάνουμε καθόλου μηνύματα (εκτός από αυτά του διαχειριστή συστήματος), χρησιμοποιούμε την εντολή mesg. Για να δούμε ποιοι συνδεδεμένοι χρήστες δέχονται μηνύματα από άλλους χρησιμοποιούμε την εντολή who -w. Για περισσότερες πληροφορίες δείτε τις σελίδες τεκμηρίωσης.
Τα ονόματα ομάδων μπορεί να
διαφέρουν
Το σχήμα των ομάδων είναι
διαφορετικό σε κάθε διανομή Linux. Μπορεί
να έχουν άλλα ονόματα και διαφορετική
δομή.
Μια από τις πιο δυνατές πλευρές του Linux αφορά την ανοικτή μέθοδο εκκίνησης και τερματισμού του λειτουργικού συστήματος, όπου φορτώνει τα καθορισμένα προγράμματα με τις ειδικές ρυθμίσεις τους. Ο χρήστης έχει τη δυνατότητα να παρέμβει τόσο στα προγράμματα όσο και στις ρυθμίσεις και με αυτό τον τρόπο να ελέγξει την εκκίνηση και τον τερματισμό, έτσι ώστε όλα να γίνονται όμορφα και οργανωμένα.
Πέρα από το θέμα του ελέγχου της εκκίνησης και του τερματισμού, η ανοικτή φύση του Linux διευκολύνει πολύ τον εντοπισμό των περισσότερων προβλημάτων εκκίνησης και τερματισμού. Μια βασική κατανόηση αυτών των διαδικασιών είναι ωφέλιμη για όλους όσοι χρησιμοποιούν Linux. Τη διαχείριση της εκκίνησης του συστήματος την αναλαμβάνει ένας boot loader. Παλαιότερα, πολλά συστήματα χρησιμοποιούσαν τον Linux Loader (lilo). Οι σύγχρονες διανομές χρησιμοποιούν στην πλειοψηφία τους το GRUB.
Όταν ξεκινά ένας υπολογιστής x86, η CPU κοιτάζει στο τέλος της μνήμης συστήματος για το BIOS (Basic Input/Output System) και το εκτελεί. Το πρόγραμμα BIOS είναι αποθηκευμένο στη ROM και έτσι είναι πάντα διαθέσιμο. Το BIOS παρέχει διεπαφή χαμηλού επιπέδου για τις περιφερειακές συσκευές και ελέγχει το πρώτο βήμα της εκκίνησης.
Το BIOS ελέγχει το σύστημα, μετά τα περιφερειακά και στη συνέχεια ψάχνει για έναν οδηγό για να φορτώσει το λειτουργικό σύστημα. Συνήθως ελέγχει για οδηγό δισκέτας (σε παλιότερα συστήματα), οδηγό CD-ROM (σε νεότερα) και για άλλα φορητά μέσα αποθήκευσης (DVD-ROM, USB θύρα, ΣτΜ), και, φυσικά για οδηγούς σκληρού δίσκου. Η σειρά αναζήτησης οδηγών καθορίζεται στο BIOS και μπορεί να τροποποιηθεί από τον χρήστη πριν την εκκίνηση. Αφού εγκατασταθεί το Linux σε ένα σκληρό δίσκο του συστήματος, το BIOS αναζητά τη Κύρια Εγγραφή Εκκίνησης (Master Boot Record -MBR) που ξεκινά στο πρώτο τομέα του πρώτου δίσκου, φορτώνει τα περιεχόμενά της στη μνήμη, και περνά τον έλεγχο σε αυτή.
Η MBR περιέχει εντολές για τον τρόπο φόρτωσης του φορτωτή εκκίνησης GRUB (ή του LILO), και για το προ-επιλεγμένο λειτουργικό σύστημα. Στη συνέχεια η MBR φορτώνει τον φορτωτή εκκίνησης που συνεχίζει τη διαδικασία (συνήθως ο φορτωτής εκκίνησης είναι εγκατεστημένος και αυτός στην MBR). Το GRUB είτε εμφανίζει κάποιο μενού με επιλογές ή -μετά από μικρή αναμονή- συνεχίζει τη διαδικασία εκκίνησης. Με βάση είτε τις επιλογές του μενού ή τις προ-καθορισμένες επιλογές το λειτουργικό σύστημα ξεκινά, είτε γραφικά είτε από τη γραμμή εντολών, με βάση το αρχείο διαμόρφωσης.
Αυτή η μέθοδος εκκίνησης αυτή λέγεται ευθεία φόρτωση (direct loading) επειδή ο φορτωτής εκκίνησης ξεκινά απ' ευθείας το λειτουργικό σύστημα, χωρίς άλλο ενδιάμεσο κώδικα μεταξύ του φορτωτή εκκίνησης και των κύριων αρχείων του λειτουργικού συστήματος (όπως ο πυρήνας). Όμως, η διαδικασία εκκίνησης άλλων λειτουργικών συστημάτων μπορεί να διαφέρει λίγο. Για παράδειγμα τα λειτουργικά συστήματα της Microsoft, DOS και Windows, όταν εγκαθίστανται διαγράφουν οτιδήποτε υπάρχει ήδη στην MBR. Αυτό καταστρέφει τις πληροφορίες για άλλο λειτουργικά συστήματα που πιθανώς να υπήρχαν στην MBR, όπως το Linux. Τα λειτουργικά συστήματα της Microsoft, καθώς και άλλα ιδιόκτητα λειτουργικά συστήματα, χρησιμοποιούν την μέθοδο εκκίνησης που λέγεται αλυσιδωτή φόρτωση. Σε αυτή τη μέθοδο η MBR δείχνει στο πρώτο τομέα του διαμερίσματος που βρίσκεται το λειτουργικό σύστημα, όπου υπάρχουν ειδικά αρχεία που συνεχίζουν τη διαδικασία εκκίνησης.
Το GRUB υποστηρίζει και τις δύο μεθόδους εκκίνησης, επιτρέποντας έτσι τον συνδυασμό του με σχεδόν όλα τα λειτουργικά συστήματα, και με όλους τους οδηγούς που αναγνωρίζει το BIOS του υπολογιστή σας.
Το GRUB έχει και αρκετά ακόμη χαρακτηριστικά, τα πιο σημαντικά είναι:
Το GRUB παρέχει ένα αληθινό περιβάλλον βασισμένο σε εντολές που λειτουργεί πριν από το λειτουργικό σύστημα σε υπολογιστές x86 και επιτρέπει μέγιστη ευελιξία και συλλογή πληροφοριών για το σύστημα.
Το GRUB υποστηρίζει τη μέθοδο Διευθυνσιοδότησης Λογικού Block (Logical Block Addressing -LBA), που απαιτείται για τη προσπέλαση πολλών σκληρών δίσκων IDE και όλων των SCSI. Πριν το LBA, οι σκληροί δίσκοι μπορεί να συναντούσαν το όριο των 1024 κυλίνδρων, πέρα από τους οποίους το BIOS δεν μπορούσε να βρει αρχεία.
Η διαμόρφωση του GRUB διαβάζεται από τον δίσκο κάθε φορά που το σύστημα ξεκινά, και έτσι δεν απαιτείται να γράψουμε στην MBR κάθε φορά που αλλάζουμε τις επιλογές εκκίνησης.
Μια πλήρης περιγραφή του GRUB μπορεί να βρεθεί με την εντολή info grub ή στον ιστοτόπο του GRUB. Στο Linux Documentation Project υπάρχει το Multiboot with GRUB Mini-HOWTO.
Ο πυρήνας, αφού φορτωθεί, βρίσκει την init στο sbin και την εκτελεί.
/sbin/init
Η init είναι η διεργασία γονέας όλων των διεργασιών του συστήματος, εκτελείται από τον πυρήνα και είναι υπεύθυνη για την εκκίνηση όλων των άλλων διεργασιών.Το πρώτο πράγμα που κάνει η init είναι να διαβάσει το αρχείο αρχικοποίησης, που θα φροντίσει για όλα τα απαραίτητα της αρχικοποίησης, ρυθμίσεις ρολογιού, σειριακών θυρών κλπ.
Μετά η init συνεχίζει διαβάζοντας αρχεία που περιγράφουν την κατάσταση του συστήματος σε κάθε επίπεδο εκτέλεσης (run level) και θέτει το προεπιλεγμένο επίπεδο εκτέλεσης. Ένα επίπεδο εκτέλεσης (runlevel) είναι η διαμόρφωση ενός συνόλου διεργασιών. Όλα τα συστήματα UNIX μπορούν να εκτελεστούν με διαφορετικές διαμορφώσεις/ρυθμίσεις διεργασιών, όπως σε κατάσταση ενός χρήστη (single user mode), που αναφέρεται ως επίπεδο εκτέλεσης 1 ή S (ή s). Σε αυτή τη κατάσταση, μόνο ο υπερ-χρήστης (διαχειριστής συστήματος) μπορεί να συνδεθεί στο σύστημα. Χρησιμοποιείται για εργασίες συντήρησης χωρίς κίνδυνο καταστροφής του συστήματος ή των δεδομένων των χρηστών. Φυσικά, σε αυτό το επίπεδο εκτέλεσης δεν απαιτούνται υπηρεσίες χρηστών, επομένως δεν εκτελούνται. Ένα άλλο επίπεδο εκτέλεσης είναι αυτό της επανεκκίνησης, ή επίπεδο εκτέλεσης 6, που κλείνει όλες τις εκτελούμενες υπηρεσίες με τις κατάλληλες διαδικασίες και επανεκκινεί το σύστημα.
Για να δούμε το τρέχον επίπεδο εκτέλεσης χρησιμοποιούμε τη εντολή who:
willy@ubuntu:~$ who -r run-level 2 2006-10-17 23:22 last=S |
Στην επόμενη ενότητα θα πούμε περισσότερα για τα επίπεδο εκτέλεσης, Ενότητα 4.2.5.
Αφού καθοριστεί το προεπιλεγμένο επίπεδο εκτέλεσης του συστήματος, η init ξεκινά όλες τις διεργασίες παρασκηνίου που είναι απαραίτητες για το σύστημα με βάση το κατάλληλο κατάλογο rc του αντίστοιχου επιπέδου εκτέλεσης. Πρώτα η init εκτελεί όλα τα σενάρια φλοιού τερματισμού (kill scripts, τα ονόματα των αρχείων αυτών αρχίζουν με K). Μετά εκτελεί όλα τα σενάρια φλοιού εκκίνησης (start scripts, τα ονόματα των αρχείων ξεκινούν με S και βρίσκονται στο φάκελο /etc/rcK.d). Όλα τα scripts που βρίσκονται σε αυτούς τους καταλόγους είναι symbolic links στο φάκελο /etc/init.d/. Μπορούμε να εκτελέσουμε τα ίδια σενάρια φλοιού μεμονωμένα, μετά το τέλος της εκκίνησης με εντολές του τύπου /etc/init.d/httpd stop ή service httpd stop και /etc/init.d/httpd start ή service httpd start και εφ' όσον έχουμε δικαιώματα υπερ-χρήστη (root, αυτό γίνετε με sudo). Στη συγκεκριμένη περίπτωση σταματούμε και ξεκινούμε τον διακομιστή ιστού.
Ειδική περίπτωση
Σημειώστε οτι στην εκκίνηση
του συστήματος, εκτελούνται τα σενάρια
φλοιού στους καταλόγους rc2.d και
rc3.d. Συνήθως περιλαμβάνονται μόνο
εκκινήσεις υπηρεσιών.
Κανένα από τα σενάρια φλοιού δεν βρίσκονται πραγματικά στους καταλόγους /etc/rc<x>.d. Τα αρχεία που είναι στους καταλόγους /etc/rc<x>.d είναι συμβολικοί σύνδεσμοι που δείχνουν στα πραγματικά σενάρια που βρίσκονται στον κατάλογο /etc/init.d. Ένας συμβολικός σύνδεσμος δεν είναι τίποτε παραπάνω από ένα αρχείο που δείχνει σε ένα άλλο αρχείο, και χρησιμοποιείται σε αυτή τη περίπτωση γιατί έτσι μπορούμε να μεταβάλλουμε τις διαμορφώσεις των επιπέδων εκτέλεσης χωρίς να παρεμβαίνουμε στα ίδια τα σενάρια που ξεκινούν ή σταματούν τις υπηρεσίες. Οι συμβολικοί σύνδεσμοι είναι αριθμημένοι με συγκεκριμένη σειρά έτσι ώστε να ξεκινούν με αυτή τη σειρά. Μπορείτε να αλλάξετε τη σειρά τερματισμού ή εκκίνησης των υπηρεσιών αν αλλάξετε τα ονόματα των αρχείων των αντίστοιχων σεναρίων. Μπορείτε να χρησιμοποιήσετε τον ίδιο αριθμό πολλές φορές, οπότε μια υπηρεσία ξεκινά ή σταματά ακριβώς πριν ή μετά κάποια άλλη (με αλφαβητική σειρά). Παρακάτω φαίνονται τα περιεχόμενα του καταλόγου /etc/rc5.d, όπου οι υπηρεσίες crond και xfs ξεκινούν από ένα σύνδεσμο που αρχίζει από "S90".
[jean@blub /etc/rc5.d] ls K15httpd@ K45named@ S08ipchains@ S25netfs@ S85gpm@ K16rarpd@ K46radvd@ S08iptables@ S26apmd@ S90crond@ K20nfs@ K61ldap@ S09isdn@ S28autofs@ S90xfs@ K20rstatd@ K65identd@ S10network@ S30nscd@ S95anacron@ K20rusersd@ K74ntpd@ S12syslog@ S55sshd@ S95atd@ K20rwalld@ K74ypserv@ S13portmap@ S56rawdevices@ S97rhnsd@ K20rwhod@ K74ypxfrd@ S14nfslock@ S56xinetd@ S99local@ K25squid@ K89bcm5820@ S17keytable@ S60lpd@ K34yppasswdd@ S05kudzu@ S20random@ S80sendmail@ |
Αφού η init προχωρήσει μέσα από τα επίπεδα εκτέλεσης για να φθάσει στο προεπιλεγμένο επίπεδο εκτέλεσης, δημιουργεί μια διεργασία getty για κάθε εικονική κονσόλα (παράθυρο τερματικού). Η getty ανοίγει γραμμές tty (τερματικών, teletype), καθορίζει τη κατάστασή τους, εμφανίζει τη προτροπή σύνδεσης, λαμβάνει το όνομα χρήστη, και ξεκινά τη διαδικασία σύνδεσης για το συγκεκριμένο χρήστη. Έτσι μπορούμε να χρησιμοποιήσουμε το σύστημα. Εξ' ορισμού τα περισσότερα συστήματα προσφέρουν 6 εικονικές κονσόλες.
Στα Linux τύπου Debian, υπάρχει ένα σενάριο /etc/X11/default-display-manager που καθορίζει ποιος διαχειριστής γραφικών θα ξεκινήσει . Περισσότερα για τη γραφική διεπαφή θα δούμε στην Ενότητα 7.3. Τελικά, η τεκμηρίωση του συστήματός σας εξηγεί λεπτομέρειες για ανώτερες πλευρές της init.
Ο κατάλογος /etc/default περιέχει αρχεία διαμόρφωσης για πολλές υπηρεσίες και λειτουργίες, και διαβάζονται κατά την εκκίνηση. Η ακριβής ονομασία και τοποθεσία των καταλόγων εξαρτάται από τη διανομή του Linux.
Εκτός από τη γραφική διεπαφή, ξεκινούν και άλλες υπηρεσίες. Αν όμως όλα έχουν πάει καλά, όταν τελειώσει η διαδικασία εκκίνησης θα πρέπει να βλέπετε τη προτροπή κειμένου ή τη γραφική προτροπή σύνδεσης.
Άλλες διαδικασίες
Εξηγήσαμε πώς δουλεύει η SysV
init σε μηχανές τύπου x86. Οι διαδικασίες
εκκίνησης μπορεί να διαφέρουν ανάλογα
με τις αρχιτεκτονικές και τις διανομές.
Άλλα συστήματα μπορεί να χρησιμοποιούν
τη BSD init, όπου τα αρχεία εκκίνησης
δεν διαμοιράζονται σε πολλαπλούς
καταλόγους /etc/rc<LEVEL>.d. Μπορεί
επίσης το σύστημά σας να χρησιμοποιεί
τους καταλόγους /etc/rc.d/init.d αντί
για τους /etc/init.d.
Η ιδέα πίσω από τις διαφορετικές υπηρεσίες που εκτελούνται σε διάφορα επίπεδα εκτέλεσης ουσιαστικά περιστρέφεται γύρω από το γεγονός ότι ένα σύστημα μπορεί να χρησιμοποιηθεί με διαφορετικούς τρόπους. Μερικές υπηρεσίες δεν μπορούν να χρησιμοποιηθούν μέχρι το σύστημα να βρεθεί στην κατάλληλη κατάσταση (mode), όπως εξυπηρέτηση πολλών χρηστών ή δικτύωση.
Υπάρχουν περιπτώσεις που θέλουμε να λειτουργήσουμε ένα σύστημα σε χαμηλότερη κατάσταση. Για παράδειγμα, η διόρθωση προβλημάτων ενός δίσκου γίνεται στο επίπεδο εκτέλεσης 1, ώστε να μη μπορεί άλλος χρήστης να συνδεθεί στο σύστημα , ή αν δεν θέλουμε να ξεκινήσουμε γραφική διεπαφή X αφήνουμε τον διακομιστή στο επίπεδο εκτέλεσης 3. Σε αυτές τις περιπτώσεις υπηρεσίες που εξαρτώνται από ανώτερα επίπεδα εκτέλεσης δεν έχουν νόημα αφού δεν μπορούν να λειτουργήσουν σωστά έτσι κι αλλιώς. Έχοντας ομαδοποιήσει τις υπηρεσίες στα διάφορα επίπεδα, είμαστε σίγουροι οτι θα έχουμε ορθή εκκίνηση υπηρεσιών, και οτι μπορούμε γρήγορα να αλλάξουμε επίπεδο εκτέλεσης χωρίς να ανησυχούμε αν θα ξεκινήσουν ή θα σταματήσουν σωστά οι υπηρεσίες.
Τα διαθέσιμα επίπεδα εκτέλεσης είναι :
Μπορούμε να διαμορφώσουμε τα μη-χρησιμοποιούμενα επίπεδα εκτέλεσης (συνήθως το επίπεδο 4) όπως εμείς νομίζουμε. Πολλοί χρήστες διαμορφώνουν τα επίπεδα εκτέλεσης με βάση τις ανάγκες τους, αφήνοντας αμετάβλητα τα προεπιλεγμένα επίπεδα.
Σημειώστε οτι η αλλαγή επιπέδων εκτέλεσης γίνεται κατά προτίμηση με την εντολή telinit.
Η παρούσα συζήτηση για τα επίπεδα εκτέλεσης, τα σενάρια φλοιού και τα αρχεία διαμόρφωσης είναι όσο πιο γενική γίνεται. Υπάρχουν πολλές παραλλαγές. Λόγου χάρη, το Gentoo Linux αποθηκεύει τα σενάρια στο κατάλογο /etc/run levels. Άλλα συστήματα μπορεί να εκτελούν πρώτα τα σενάρια χαμηλότερου(ων) επιπέδου(ων) πριν φθάσουν στο τελικό επίπεδο εκτέλεσης. Ανατρέξτε στη τεκμηρίωση του συστήματός σας για λεπτομέρειες. Θα μπορούσατε να διαβάσετε και τα ίδια τα σενάρια φλοιού για να αποκτήσετε καλύτερη αντίληψη του συστήματός σας.
Η υπηρεσία update-rc.d, αν είναι εγκατεστημένη στο σύστημά σας, παρέχει ένα εργαλείο γραμμής εντολών για τη διαχείριση της ιεραρχίας των καταλόγων /etc/init.d. Μπορείτε να προσθέσετε ή να αφαιρέσετε νέες υπηρεσίες στο /etc/init.d. Αυτές οι υπηρεσίες απαλλάσσουν τους διαχειριστές από την απ' ευθείας διαχείριση των πολυάριθμων συμβολικών συνδέσμων στους καταλόγους /etc/rc[x].d.
Επιπρόσθετα, μερικά συστήματα προσφέρουν το εργαλείο ntsysv, που προσφέρει μια διεπαφή κειμένου που μπορεί να βρείτε ευκολότερη από τις εντολές της chkconfig. Στο SuSE Linux, θα βρείτε το yast και το insserv. Στο Mandrake μπορείτε να δοκιμάσετε το DrakConf, που επιτρέπει μεταξύ των άλλων και αλλαγή μεταξύ των επιπέδων εκτέλεσης 3 και 5. Στο Mandriva λέγεται Mandriva Linux Control Center.
Οι περισσότερες διανομές παρέχουν κάποια γραφική διεπαφή, ανατρέξτε στη τεκμηρίωση του συστήματος.
Όλες αυτές οι υπηρεσίες για να εκτελεστούν απαιτούν να έχετε δικαιώματα υπερ-χρήστη.
Το UNIX δεν φτιάχτηκε για να σταματά, αλλά αν πραγματικά πρέπει να σταματήσετε το σύστημα, χρησιμοποιείστε την εντολή shutdown. Μετά τη διαδικασία τερματισμού, αν έχετε χρησιμοποιήσει την επιλογή -h το σύστημα θα κλείσει, ενώ αν έχετε χρησιμοποιήσει την επιλογή -r το σύστημα θα ξαναξεκινήσει. Για παράδειγμα για να τερματίσετε το συστημα σας μπορείτε να χρησιμοποιήσετε την εντολή :
sudo shutdown -h now
Οι εντολές reboot και halt καλούν την shutdown αν βρισκόμαστε στα επίπεδα 1-5, και έτσι διασφαλίζουμε σωστό κλείσιμο το συστήματος, αλλά γενικά καλύτερα να μη τις χρησιμοποιούμε, μια που δεν έχουν όλες οι εκδόσεις των UNIX/Linux αυτό το χαρακτηριστικό.
Αν ο υπολογιστής σας δεν κλείνει μόνος του, θα πρέπει να περιμένετε να τελειώσει η διαδικασία τερματισμού πριν κλείσετε το διακόπτη, για να δώσετε στο σύστημα το χρόνο να απο-προσαρτήσει τους δίσκους με ασφάλεια, αλλιώς κινδυνεύετε να χάσετε δεδομένα.
Αν και η διαχείριση των πόρων του συστήματος, και των διεργασιών. είναι δουλειά του διαχειριστή συστήματος, είναι καλό ο απλός χρήστης να γνωρίζει ορισμένα βασικά πράγματα σχετικά, ειδικά όσον αφορά τις δικές του διεργασίες και τη βέλτιστη εκτέλεσή τους.
Θα εξηγήσουμε λίγο τη θεωρητική πλευρά της απόδοσης ενός συστήματος, αν και όχι σε τόσο βάθος ώστε να συζητήσουμε τη βελτιστοποίηση του υλικού. Αντί γι αυτό θα μελετήσουμε καθημερινά προβλήματα που συναντά ένας απλός χρήστης, και τις ενέργειες που πρέπει να κάνει για να χρησιμοποιήσει βέλτιστα τους υπάρχοντες πόρους. Όπως θα μάθουμε στην επόμενη ενότητα, κυρίως πρέπει να σκεφτόμαστε πριν δράσουμε.
Εικόνα 4-2. Δεν μπορείς να πας πιο γρήγορα;
Το Bash παρέχει μια ενσωματωμένη εντολή time που εμφανίζει το χρόνο που χρειάστηκε μια εντολή για να εκτελεστεί. Η χρονομέτρηση είναι πολύ ακριβής και μπορεί να χρησιμοποιηθεί με κάθε εντολή. Στο παρακάτω παράδειγμα, απαιτεί περίπου ένα και μισό λεπτά για την προετοιμασία αυτού του βιβλίου:
tilly:~/xml/src> time make Output written on abook.pdf (222 pages, 1619861 bytes). Transcript written on abook.log. real 1m41.056s user 1m31.190s sys 0m1.880s |
Η GNU εντολή time στο /usr/bin (σε αντιδιαστολή με την ενσωματωμένη στο φλοιό) εμφανίζει περισσότερη πληροφορία και μπορεί να μορφοποιηθεί με διαφορετικούς τρόπους. Επίσης δείχνει τη κατάσταση εξόδου της εντολής, και τον συνολικό χρόνο που έχει διανυθεί. Το προηγούμενο παράδειγμα με την ανεξάρτητη εντολή time δίνει το αποτέλεσμα:
tilly:~/xml/src> /usr/bin/time make Output written on abook.pdf (222 pages, 1595027 bytes). Transcript written on abook.log. Command exited with non-zero status 2 88.87user 1.74system 1:36.21elapsed 94%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (2192major+30002minor)pagefaults 0swaps |
Μπορείτε να δοκιμάσετε και με απλές εντολές (π.χ. ls) στις οποίες οι χρόνοι εκτέλεσης είναι πολύ μικροί για να διαπιστώσετε την ακρίβεια των μετρήσεων. Δείτε τις σελίδες τεκμηρίωσης για περισσότερες πληροφορίες.
Για ένα χρήστη, απόδοση σημαίνει γρήγορη εκτέλεση των εντολών. Για ένα διαχειριστή συστήματος, από την άλλη πλευρά, σημαίνει πολύ περισσότερα: ο διαχειριστής πρέπει να βελτιστοποιήσει την απόδοση του συστήματος ως σύνολο, δηλαδή για όλους τους χρήστες, προγράμματα και δαίμονες. Η απόδοση του συστήματος μπορεί να εξαρτάται από χιλιάδες μικρά πράγματα που δεν λαμβάνονται υπ' όψη στην εντολή time:
το πρόγραμμα μπορεί να μην είναι καλογραμμένο ή να χρησιμοποιεί υπερβολικά τη CPU και τη μνήμη
να απαιτούνται πολλαπλές ή μακροχρόνιες προσπελάσεις σε δίσκους, ελεγκτές, διεπαφές διαφόρων ειδών, κλπ.
να απαιτείται προσπέλαση σε απομακρυσμένα συστήματα (απόδοση δικτύου)
το πλήθος των χρηστών που δουλεύουν ταυτόχρονα στο σύστημα να είναι υπερβολικό
να είναι ώρα αιχμής
...
Εν συντομία ο υπολογιστικός φόρτος εξαρτάται από το τι είναι κανονικό για το σύστημά σας. Ο παλιός μου P133 εκτελεί ένα firewall, ένα διακομιστή SSH, ένα διακομιστή αρχείων, ένα δαίμονα δρομολόγησης, ένα διακομιστή sendmail, ένα διακομιστή διαμεσολάβησης και μερικές άλλες υπηρεσίες και δεν παραπονιέται με συνδεδεμένους 7 χρήστες: ο φόρτος είναι ακόμη 0 κατά μέσο όρο. Μερικά συστήματα (με πολλές CPU) που έχω δει λειτουργούσαν μια χαρά με φόρτο 67. Υπάρχει μόνο ένας τρόπος να μάθετε – ελέγχετε τακτικά το φόρτο για να καταλάβετε τι είναι κανονικό για το σύστημά σας. Αν δεν το κάνετε, και μετράτε μόνο το χρόνο απόκρισης των εντολών, τότε θα έχετε μια πολύ χονδρική εκτίμηση της απόδοσης αφού η ταχύτητα επηρεάζεται από πολλούς παράγοντες.
Να έχετε στο μυαλό σας ότι διαφορετικά συστήματα συμπεριφέρονται διαφορετικά με τον ίδιο φόρτο. Για παράδειγμα, ένα σύστημα με κάρτα γραφικών που υποστηρίζει επιταχυντή υλικού δεν έχει πρόβλημα να κάνει rendering 3D εικόνων, ενώ το ίδιο σύστημα με φθηνή κάρτα VGA θα επιβραδύνεται πάρα πολύ αν εκτελεί rendering. Το παλιό μου P133 θα ταλαιπωρηθεί αν λειτουργήσει ως διακομιστής X, αλλά αν η πρόσβασή σας γίνεται μέσω modem μάλλον δεν θα καταλάβετε τη διαφορά.
Αν έχετε ένα μεγάλο περιβάλλον μπορεί να σας καθυστερήσει. Αν έχετε πολλές μεταβλητές περιβάλλοντος (αντί για μεταβλητές φλοιού) και μεγάλες διαδρομές αναζήτησης που δεν έχουν βελτιστοποιηθεί (ή με λάθη στις διαδρομές), το σύστημα θα χρειάζεται περισσότερη ώρα για να αναζητά δεδομένα και εντολές.
Στο περιβάλλον X, οι διαχειριστές παραθύρων και οι επιφάνειες εργασίας μπορεί να είναι πραγματικά αδηφάγα για τη CPU. Μια 'γυαλιστερή' επιφάνεια εργασίας συνοδεύεται με κάποιο τίμημα, ακόμη και αν τη μεταφορτώνετε δωρεάν, αφού οι περισσότερες επιφάνειες εργασίας παρέχουν άπειρα πρόσθετα 'καλούδια'. Η μετριοπάθεια είναι αρετή, αν δεν αγοράζετε νέο υπολογιστή κάθε χρόνο.
Η προτεραιότητα ή σημαντικότητα μιας εργασίας ορίζεται από τον αριθμό ωραιοποίησης (nice). Ένα πρόγραμμα με μεγάλο αριθμό nice είναι φιλικό προς τα άλλα προγράμματα, τους χρήστες και το σύστημα: δεν είναι μια σημαντική εργασία. Όσο χαμηλότερο αριθμό nice έχει ένα πρόγραμμα, τόσο πιο σημαντική εργασία εκτελεί και τόσο πιο πολλούς πόρους θα πάρει.
Το να κάνει κανείς μια εργασία ωραιότερη είναι χρήσιμο μόνο για διεργασίες που χρησιμοποιούν πολύ χρόνο CPU (μεταγλωττιστές, μαθηματικές εφαρμογές, κλπ.). Προγράμματα που πάντα χρησιμοποιούν πολύ χρόνο Ε/Ε αυτόματα επιβραβεύονται από το σύστημα με υψηλότερη προτεραιότητα (χαμηλότερο αριθμό nice), για παράδειγμα η είσοδος από το πληκτρολόγιο παίρνει πάντα την υψηλότερη δυνατή προτεραιότητα στο σύστημα.
Ο ορισμός της προτεραιότητας ενός προγράμματος γίνεται με την εντολή nice.
Τα περισσότερα συστήματα παρέχουν και τη BSD εντολή renice, που επιτρέπει την μεταβολή της niceness μιας εκτελούμενης εντολής. Δείτε τις σελίδες τεκμηρίωσης για πληροφορίες ειδικές για κάθε σύστημα.
Διαλογικά προγράμματα
ΔΕΝ είναι καλή ιδέα να εφαρμόζουμε
τις εντολές nice ή renice σε διαλογικά
προγράμματα ή σε εργασίες που εκτελούνται
στο προσκήνιο.
Η χρήση αυτών των εντολών είναι συνήθως δουλειά του διαχειριστή συστήματος. Δείτε τις σελίδες τεκμηρίωσης για την πρόσθετες δυνατότητες που διατίθενται στον υπερ-χρήστη.
Σε κάθε σύστημα Linux, πολλά προγράμματα θέλουν να χρησιμοποιήσουν τη (ή τις) CPU ταυτόχρονα, ακόμη και αν είστε ο μοναδικός χρήστης. Κάθε πρόγραμμα χρειάζεται ορισμένους κύκλους CPU για να εκτελεστεί. Μερικές φορές μπορεί να μην υπάρχουν αρκετοί κύκλοι, αν η CPU είναι πολύ απασχολημένη. Η εντολή uptime είναι εξαιρετικά ανακριβής (εμφανίζει μόνο μέσους όρους, πρέπει να γνωρίζετε τι είναι κανονικό) αλλά παρ' όλα αυτά δεν είναι άχρηστη. Μπορείτε να κάνετε κάποιες ενέργειες αν πιστεύετε οτι φταίει η CPU για την αργοπορία του συστήματός σας:
Εκτελείτε βαριά προγράμματα όταν ο φόρτος είναι χαμηλός, συνήθως το βράδυ. Δείτε την επόμενη ενότητα για τον χρονοπρογραμματισμό
Σταματήστε τις άχρηστες εργασίες του συστήματος: τερματίστε τους περιττούς δαίμονες και τα προγράμματα που δεν χρησιμοποιείτε, χρησιμοποιείτε τη locate αντί για τη βαρύτερη find, ...
Εκτελείτε τις μεγάλες εργασίες με χαμηλή προτεραιότητα
Αν καμιά λύση δεν βοηθήσει, τότε πρέπει να αναβαθμίσετε το σύστημά σας.
Όταν οι εκτελούμενες διεργασίες απαιτούν περισσότερη μνήμη από αυτή που είναι φυσικά διαθέσιμη, ένα Linux σύστημα δεν θα καταρρεύσει, αλλά θα αρχίσει την εναλλαγή σελίδων μνήμης (swapping), με χρήση του αντιστοίχου χώρου στο δίσκο (χώρος εναλλαγής, swap space), μετακινώντας περιεχόμενα της κύριας μνήμης (σελίδες μνήμης, δηλαδή δεδομένα που δεν χρησιμοποιούνται εκείνη τη στιγμή) προς τον δίσκο, ελευθερώνοντας έτσι μνήμη για νέες διεργασίες. Τα δεδομένα από το δίσκο επιστρέφουν στη κύρια μνήμη μόλις αυτό ζητηθεί. Αυτή η διαδικασία καθυστερεί σημαντικά το σύστημα, αφού η προσπέλαση στο δίσκο είναι πολύ πιο αργή από οτι στη κύρια μνήμη. Η εντολή top εμφανίζει τη χρήση της μνήμης και του χώρου εναλλαγής. Συστήματα που χρησιμοποιούν glibc παρέχουν τις εντολές memusage και memusagestat για την οπτικοποίηση της χρήσης μνήμης.
Αν δείτε οτι υπάρχει υπερβολική χρήση της μνήμης και του χώρου εναλλαγής μπορείτε να κάνετε κάτι από τα παρακάτω:
Τερματισμός ή αλλαγή προτεραιότητας των προγραμμάτων που χρησιμοποιούν μεγάλα τμήματα μνήμης
Πρόσθεση περισσότερης μνήμης (ή και περισσότερο χώρο εναλλαγής) στο σύστημα.
Συντονισμός της απόδοσης του συστήματος, θέμα που είναι πέρα από τους σκοπούς αυτού του κειμένου. Δείτε τη βιβλιογραφία στο Παράρτημα A για περισσότερα.
Αν και οι περιορισμοί Ε/Ε είναι βασική πηγή προβλημάτων για τους διαχειριστές συστημάτων, το Linux παρέχει μάλλον φτωχές υπηρεσίες μέτρησης της απόδοσης Ε/Ε. Οι εντολές ps, vmstat και top tools δίνουν μερικές ενδείξεις για το πόσες διεργασίες περιμένουν για Ε/Ε. Η εντολή netstat εμφανίζει στατιστικά της διεπαφής δικτύου, αλλά δεν υπάρχουν εργαλεία για τη μέτρηση της απόκριση της Ε/Ε στο φόρτο του συστήματος, ενώ η εντολή iostat δίνει μια σύντομη εικόνα της γενικής χρήσης Ε/Ε. Υπάρχουν διάφορες γραφικές διεπαφές που εμφανίζουν το αποτέλεσμα αυτών των εντολών σε πιο κατανοητή μορφή.
Κάθε συσκευή έχει τα δικά της προβλήματα, αλλά το εύρος ζώνης των καρτών δικτύου και των δίσκων είναι δυο βασικές αιτίες συμφόρησης στην Ε/Ε.
Προβλήματα Ε/Ε δικτύου:
Υπερφόρτωση δικτύου:
Ο όγκος των δεδομένων είναι μεγαλύτερος από τη χωρητικότητα του δικτύου, καταλήγοντας σε αργή εκτέλεση όλων των εργασιών των χρηστών που σχετίζονται με το δίκτυο. Αυτό μπορεί να λυθεί με την εκκαθάριση του δικτύου (που κυρίως σημαίνει ακύρωση πρωτοκόλλων και υπηρεσιών που δεν είναι απαραίτητα) ή με αναδιαμόρφωση του δικτύου (για παράδειγμα χρήση υπο-δικτύων, αντικατάσταση των hubs με switches, αναβάθμιση διεπαφών και εξοπλισμού).
Προβλήματα ακεραιότητας δικτύου:
Όταν έχουμε λανθασμένη μετάδοση δεδομένων. Απαιτείται η απομόνωση του χαλασμένου εξοπλισμού και η αλλαγή του.
Προβλήματα Ε/Ε δίσκων:
Πολύ χαμηλή ταχύτητα μεταφοράς δεδομένων ανά διεργασία:
Η ταχύτητα ανάγνωσης ή εγγραφής ανά διεργασία δεν είναι επαρκής.
Η αθροιστική ταχύτητα μεταφοράς δεδομένων είναι πολύ χαμηλή:
Το μέγιστο συνολικό εύρος ζώνης του συστήματος δεν είναι αρκετό.
Τέτοια προβλήματα είναι δύσκολο να διαγνωστούν, και συνήθως απαιτούν νέο υλικό για την ανακατανομή των ροών δεδομένων στους διαύλους, ελεγκτές και δίσκους. Μια λύση είναι η χρήση διάταξης δίσκων RAID με διαμόρφωση βελτιστοποιημένη για Ε/Ε. Συνήθως η άλλη λύση είναι η αναβάθμιση διαύλων, ελεγκτών και δίσκων.
Αν το πρόβλημα δεν είναι η υπερφόρτωση, πιθανώς το υλικό σας σταδιακά καταρρέει ή δεν είναι σωστά συνδεδεμένο. Ελέγξτε τις επαφές, συνδέσεις και πρίζες, κατ' αρχήν.
Οι χρήστες μπορούν να χωριστούν σε διάφορες κατηγορίες, με βάση τη συμπεριφορά τους σχετικά με τη χρήση πόρων:
Χρήστες που εκτελούν ένα (μεγάλο) αριθμό μικρών εργασιών: για παράδειγμα ο αρχάριος χρήστης Linux.
Χρήστες που εκτελούν σχετικά λίγες αλλά μεγάλες εργασίες: προσομοιώσεις, υπολογισμούς, εξομοιωτές ή άλλα προγράμματα που χρειάζονται πολλή μνήμη, και συνήθως αυτοί οι χρήστες έχουν και μεγάλους όγκους δεδομένων.
Χρήστες που εκτελούν λίγες εργασίες αλλά χρησιμοποιούν πολύ χρόνο CPU (ανάπτυξη προγραμμάτων κλπ.).
Μπορείτε να δείτε ότι οι απαιτήσεις της κάθε ομάδας χρηστών είναι διαφορετικές, και είναι δύσκολο να ικανοποιηθούν όλοι από το ίδιο σύστημα. Αν δουλεύετε σε ένα σύστημα πολλών χρηστών, είναι χρήσιμο να καταλάβετε τις συνήθειες των άλλων χρηστών έτσι ώστε να εκμεταλλευτείτε καλύτερα το σύστημα.
Για το γραφικό περιβάλλον, υπάρχει διαθέσιμη μια πλειάδα γραφικών εργαλείων παρακολούθησης. Εδώ βλέπετε μια εικόνα από το Gnome System Monitor, που επιτρέπει την αναζήτηση και εμφάνιση διεργασιών, και παρακολούθηση των πόρων του συστήματος:
Εικόνα 4-3. Gnome System Monitor
Για να ανοίξουμε το παράθυρο "System Monitor", επιλέξετε από το μενού Σύστημα ->Διαχείριση συστήματος ->Παρακολούθηση συστήματος.
Επίσης υπάρχουν μερικά εύχρηστα εικονίδια που μπορείτε να εγκαταστήσετε στη μπάρα εργασιών, για τη παρακολούθηση του φόρτου του δικτύου, του δίσκου, της CPU ή της μνήμης. Μια άλλη μικρή εφαρμογή παρακολούθησης συστήματος είναι η xload . Βρείτε αυτή που σας αρέσει!
Ως μη-προνομιούχος χρήστης μπορείτε να επηρεάσετε μόνο τις δικές σας διεργασίες. Έχουμε ήδη δει πως μπορούμε να εμφανίσουμε διεργασίες και να απομονώσουμε τις διεργασίες που ανήκουν σε ένα χρήστη, καθώς και πιθανούς περιορισμούς που προκύπτουν. Όταν βλέπετε ότι κάποια διεργασία σας καταναλώνει πάρα πολλούς πόρους του συστήματος, μπορείτε να κάνετε δύο πράγματα:
Αναγκάστε τη διεργασία να χρησιμοποιήσει λιγότερους πόρους, χωρίς να τη διακόψετε,
Διακόψετε (τερματίστε) τη διεργασία.
Αν θέλετε να επιτρέψετε τη διεργασία να συνεχίσει να εκτελείται, αλλά επίσης θέλετε να βοηθήσετε το σύστημα, μπορείτε να χρησιμοποιήσετε τη renice. Εκτός από τις εντολές nice ή renice, η top παρέχει έναν εύκολο τρόπο να δούμε τη διεργασία που προκαλεί πρόβλημα και να μειώσουμε τη προτεραιότητά της.
Βρείτε την ενοχλητική διεργασία και ελέγξτε την τιμή που υπάρχει στην στήλη "NI", πιθανότατα θα έχει αρνητική τιμή (όχι nice, μεγάλη προτεραιότητα). Εισάγετε r και δώστε το ID της διεργασίας για renice. Μετά εισάγετε την νέα τιμή nice, για παράδειγμα "20" (μέγιστο). Αυτό σημαίνει οτι από εδώ και στο εξής η διεργασία θα καταλαμβάνει το πολύ 1/5 των κύκλων CPU.
Παραδείγματα διεργασιών που μπορεί να θέλετε να συνεχίσουν να είναι οι εξομοιωτές, εικονικές μηχανές, μεταγλωττιστές κλπ.
Αν θέλετε να σταματήσετε μια διεργασία που 'κρέμασε' ή κάνει εντελώς τρελά πράγματα στην Ε/Ε, δημιουργία αρχείων, και χρήση άλλων πόρων του συστήματος, τότε χρησιμοποιείστε την εντολή kill. Αν έχετε την ευκαιρία, πρώτα τερματίστε τη διεργασία 'μαλακά' στείλτε το σήμα SIGTERM. Είναι μια εντολή για να τερματίσει ότι κάνει, σύμφωνα με τις διαδικασίες που προβλέπονται στο ίδιο το πρόγραμμα:
joe:~> ps -ef | grep mozilla joe 25822 1 0 Mar11 ? 00:34:04 /usr/lib/mozilla-1.4.1/mozilla- joe:~> kill -15 25822 |
Στο παραπάνω παράδειγμα, ο χρήστης joe σταμάτησε τον περιηγητή Mozilla γιατί 'κρέμασε'.
Μερικές διεργασίες είναι λίγο πιο δύσκολες στο τερματισμό. Αν έχετε χρόνο, μπορείτε να στείλετε το σήμα SIGINT για να τις διακόψετε. Αν ούτε αυτό το κόλπο δουλέψει, τότε χρησιμοποιήστε το ισχυρότερο σήμα, SIGKILL. Στο παρακάτω παράδειγμα, ο χρήστης joe σταματά μια διεργασία Mozilla που έχει 'παγώσει':
joe:~> ps -ef | grep mozilla joe 25915 1 0 Mar11 ? 00:15:06 /usr/lib/mozilla-1.4.1/mozilla- joe:~> kill -9 25915 joe:~> ps -ef | grep 25915 joe 2634 32273 0 18:09 pts/4 00:00:00 grep 25915 |
Σε τέτοιες περιπτώσεις, μπορεί να θέλετε να ελέγξετε αν η διεργασία είναι πραγματικά 'νεκρή' μπορείτε να ξανα-εκτελέσετε το φίλτρο grep με το PID της διεργασίας. Αν δεν επιστραφεί τίποτε τότε είστε σίγουροι οτι την τερματίσατε.
Μεταξύ των διεργασιών που είναι δύσκολο να τερματιστούν είναι ο φλοιός. Και αυτό είναι καλό: αν ήταν εύκολο να τερματιστεί, θα χάνατε το φλοιό κάθε φορά που θα πατούσατε Ctrl-C έστω και κατά λάθος, αφού είναι ισοδύναμο με αποστολή SIGINT.
UNIX χωρίς σωληνώσεις είναι σχεδόν αδιανόητο Η χρήση των σωληνώσεων (|) για το πέρασμα της εξόδου μιας εντολής στην είσοδο μια άλλης εξηγείται στο επόμενο κεφάλαιο, Κεφάλαιο 5.
Σε ένα γραφικό περιβάλλον, το πρόγραμμα xkill είναι πολύ εύχρηστο. Απλά εισάγετε την εντολή, πατάτε Enter και επιλέγετε το παράθυρο της εφαρμογής που θέλετε να τερματίσετε. Είναι μάλλον δραστική αφού στέλνει SIGKILL εξ' ορισμού, γι' αυτό να τη χρησιμοποιείτε μόνο όταν μια εφαρμογή 'κρεμάει'.
Ένα σύστημα Linux μπορεί να ‘υποφέρει’ από πολλά, αλλά συνήθως ‘υποφέρει’ μόνο κατά τις ώρες που εκτελούνται εφαρμογές γραφείου. Όταν βρισκόμαστε σε ένα γραφειακό περιβάλλον, σε μια αίθουσα διακομιστών η στο σπίτι, τα περισσότερα συστήματα Linux μένουν αδρανή κάποιες ώρες το πρωί, το απόγευμα, τη νύχτα και τα σαββατοκύριακα. Η χρησιμοποίηση αυτού του χρόνου που το σύστημα μένει αδρανές μας κοστίζει λιγότερο από το να αγοράσουμε ένα σύστημα τόσο ισχυρό ώστε να κάνει όλες τις διεργασίες που χρειαζόμαστε ταυτόχρονα.
Υπάρχουν τρείς τρόποι για να εκτελούμε τις διεργασίες με καθυστέρηση:
Οι παραπάνω τρόποι αναλύονται στις παρακάτω ενότητες.
Η σελίδα με τις πληροφορίες που αφορούν την εντολή sleep είναι ίσως η συντομότερη που υπάρχει. Αυτό που κάνει η εντολή sleep είναι να κάνει το σύστημα περιμένει πριν την εκτέλεση μιας εντολής. Εξ ορισμού ο χρόνος που περιμένει το σύστημα εκφράζεται σε δευτερόλεπτα.
Τότε γιατί υπάρχει; Μερικά πρακτικά παραδείγματα είναι τα εξής:
Όταν κάποιος σε καλεί στο τηλέφωνο, εσύ λες "Ναι θα έρθω σε περίπου μισή ώρα" αλλά είσαι έτοιμος να ‘πνιγείς’ στη δουλεία, πράγμα που γίνεται και ξεχνάς να ξεκινήσεις για τη συνάντηση:
(sleep 1800; echo "Lunch time...») &
Όταν για διάφορους λόγους δεν μπορούμε να χρησιμοποιήσουμε την εντολή at, είναι για παράδειγμα 5 η ώρα και θέλεις να πας σπίτι αλλά έχεις ακόμη πολύ δουλειά να κάνεις και αυτή τη στιγμή κάποιος άλλος χρησιμοποιεί τους πόρους του συστήματος:
(sleep 10000; myprogram) &
Πρέπει πρώτα να σιγουρευτείς ότι υπάρχει στο σύστημα κάποιος τρόπος αυτόματης αποσύνδεσης, και ότι θα αποσυνδεθείς η θα κλειδώσεις την επιφάνεια εργασίας / το γραφείο σου όταν στείλεις αυτή τη διεργασία, η την εκτελέσεις σε μια σύνδεση τερματικού.
Όταν χρειάζεται να εκτυπώσεις μια ακολουθία μεγάλων αρχείων, αλλά θέλεις και άλλοι χρήστες να μπορούν να εκτυπώσουν ενδιάμεσα στα δικά σου αρχεία:
lp lotoftext; sleep 900; lp hugefile; sleep 900; lp anotherlargefile
Η εκτύπωση αρχείων αναλύεται στο Κεφάλαιο 8.
Οι προγραμματιστές συχνά χρησιμοποιούν την εντολή sleep για να ‘παγώσουν’ σενάρια φλοιού ή την εκτέλεση κάποιου προγράμματος για ένα συγκεκριμένο χρονικό διάστημα.
Η εντολή at εκτελεί μια εντολή σε προκαθορισμένο χρόνο, χρησιμοποιώντας τον προκαθορισμένο φλοιό εκτός αν ο χρήστης ορίσει αλλιώς (δείτε την σελίδα βοήθειας).
Η σύνταξη της εντολής at η οποία είναι φιλική προς το χρήστη, περιγράφεται στα παρακάτω παραδείγματα:
steven@home:~> at tomorrow + 2 days warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> cat reports | mail myboss@mycompany at> <EOT> job 1 at 2001-06-16 12:36 |
Πληκτρολογώντας Ctrl+D φεύγουμε από τη σύνταξη της εντολής at ενώ δημιουργείται ένα μήνυμα "EOT" .
Ο χρήστης steven κάνει κάτι ‘παράξενο’, ενώνει δυο εντολές με σωλήνωση, κάτι τέτοιο μελετούμε στο Κεφάλαιο 5,
steven@home:~> at 0237 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> cd new-programs at> ./configure; make at> <EOT> job 2 at 2001-06-14 02:00 |
Η επιλογή -m στέλνει ένα mail στο χρήστη όταν η διεργασία ολοκληρωθεί, ή εμφανίζει τους λόγους για τους οποίους η εντολή δεν μπορεί να εκτελεστεί. Η εντολή atq ταξινομεί τις διεργασίες, χρησιμοποιείται κυρίως πριν αποσταλούν οι διεργασίες για να προλάβει την περίπτωση που όλες θα ξεκινήσουν ταυτόχρονα. Με την εντολή atrm ο χρήστης μπορεί να ακυρώσει τις διεργασίες που έχει προηγουμένως προγραμματίσει να εκτελεστούν.
Είναι καλή ιδέα να επιλέγουμε ‘παράξενες’ ώρες για την εκτέλεση των διεργασιών σας γιατί συνήθως οι διεργασίες του συστήματος προγραμματίζονται τις ‘στρογγυλές’ ώρες , όπως μπορείτε να δείτε και στην επόμενη παράγραφο Ενότητα 4.4.4 . Για παράδειγμα, διεργασίες που συχνά εκτελούνται ακριβώς στη μια η ώρα τα ξημερώματα (π.χ. δεικτοδότηση για την ενημέρωση μιας συγκεκριμένης βάσης δεδομένων), επομένως προγραμματίζοντας σε μια ώρα όπως 0100 μπορεί εύκολα να επιβραδύνει το σύστημα σας αντί να το επιταχύνει. Για να αποφύγουμε την εκτέλεση των διεργασιών την ίδια ώρα, μπορούμε να χρησιμοποιήσουμε την εντολή batch, η οποία βάζει σε ουρά τις διεργασίες και τροφοδοτεί με αυτές ανά περιόδους το σύστημα με ένα ισορροπημένο τρόπο, τέτοιο ώστε να αποφεύγεται η υπερβολική κατανάλωση των πόρων του συστήματος. Δείτε τη τεκμηρίωση του συστήματος για περισσότερες πληροφορίες.
Το cron (η ονομασία προέκυψε από τη λέξη chronograph) είναι ένα πρόγραμμα, το οποίο επιτρέπει στους χρήστες και τους διαχειριστές ενός συστήματος να χρονοπρογραμματίζουν την εκτέλεση περιοδικών εργασιών. Οι πληροφορίες χρονοπρογραμματισμού συγκεντρώνονται σε αρχεία που ονομάζονται crontabs (η προεπιλεγμένη τοποθεσία του είναι στο /etc) το οποίο καλεί τα επιμέρους προγράμματα (ωριαία, ημερήσια, εβδομαδιαία, μηνιαία).
Το σύστημα cron ελέγχεται από το δαίμονα cron. Συλλέγει πληροφορίες σχετικά με το ποια προγράμματα πρέπει να εκτελεστούν σύμφωνα με τις καταχωρήσεις crontab του συστήματος και των χρηστών. Μόνο ο διαχειριστής του συστήματος έχει πρόσβαση στα crontabs του συστήματος, ενώ ο κάθε άλλος χρήστης έχει πρόσβαση μόνο στα δικά του crontabs. Σε μερικά συστήματα (κάποιοι) χρήστες μπορεί να μην έχουν πρόσβαση στις λειτουργίες του cron.
Κατά την εκκίνηση του συστήματος ο δαίμονας cron αναζητά στη διαδρομή /var/spool/cron/τις καταχωρήσεις crontab που ονομάζονται σύμφωνα με τα ονόματα των λογαριασμών /etc/passwd, αναζητά στη διαδρομή /etc/cron.d/ και στη διαδρομή/etc/crontab έπειτα χρησιμοποιώντας αυτές τις πληροφορίες ελέγχει κάθε λεπτό αν υπάρχει κάποια προγραμματισμένη εργασία που πρέπει να εκτελεστεί. Κατά την εκτέλεση μιας διεργασίας το σύστημα εκτελεί τις κατάλληλες εντολές σαν να ήταν ο ιδιοκτήτης του αρχείου crontab και έπειτα στέλνει την έξοδο των εντολών στο χρήστη.
Ένα δημοφιλές συντακτικό του cron είναι το Vixie cron, το οποίο αναπτύχθηκε από τον Paul Vixie. Σε συστήματα που χρησιμοποιούν Vixie cron, οι εργασίες οι οποίες εκτελούνται ωριαία, ημερήσια, εβδομαδιαία και μηνιαία αποθηκεύονται σε ένα ξεχωριστό φάκελο στη διαδρομή /etc, σε αντίθεση με την συνήθη πρακτική στο UNIX cron, όπου όλες οι εργασίες αποθηκεύονται σε ένα μεγάλο αρχείο.
Παράδειγμα από ένα αρχείο Vixie crontab:
[root@blob /etc]# more crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts # commands to execute every hour 01 * * * * root run-parts /etc/cron.hourly # commands to execute every day 02 4 * * * root run-parts /etc/cron.daily # commands to execute every week 22 4 * * 0 root run-parts /etc/cron.weekly commands to execute every month 42 4 1 * * root run-parts /etc/cron.monthly |
Μπορείτε επίσης να χρησιμοποιήσετε την εντολή crontab -l για να εμφανίσετε τα crontabs.
Πριν ξεκινήσει ο χρονοπρογραμματισμός πρέπει πρώτα να πάρουν τιμή κάποιες μεταβλητές, σε κάθε γραμμή ορίζεται μια εργασία προς εκτέλεση και κάθε τέτοια γραμμή ξεκινά με 5 πεδία τα οποία αντιπροσωπεύουν την ώρα και τη μέρα εκτέλεσης.. Το πρώτο πεδίο περιέχει τα λεπτά (από 0 έως 59), το δεύτερο προσδιορίζει την ώρα εκτέλεσης (0-23), το τρίτο την μέρα του μήνα (1-31), το επόμενο τον αριθμό του μήνα (1-12), και το τελευταίο τη μέρα της εβδομάδας (0-7, το 0 και το 7 είναι η Κυριακή). Ο αστερίσκος σε καθένα από αυτά τα πεδία συμβολίζει οποιαδήποτε τιμή, σύμφωνα πάντα με το εύρος τιμών του πεδίου. Η εισαγωγή λίστας στοιχείων σε κάποιο πεδίο είναι επιτρεπτή, για παράδειγμα για να εκτελέσουμε μια εργασία από τη Δευτέρα ως την Παρασκευή εισάγουμε στο τελευταίο πεδίο 1-5, για να εκτελέσουμε μια εργασία τη Δευτέρα, Τετάρτη και Παρασκευή εισάγουμε 1,3,5.
Μετά από αυτά γράφουμε στην τελευταία στήλη το όνομα του χρήστη για τον οποίο πρέπει να εκτελεστεί η προγραμματισμένη εργασία. Το παραπάνω παράδειγμα είναι από ένα Vixie cron στο οποίο ο διαχειριστής εκτελεί το πρόγραμμα run-parts σε κανονικά διαστήματα, έχοντας ως όρισμα και τις κατάλληλες διαδρομές αρχείων. Στους καταλόγους αυτούς, οι εργασίες που πρέπει να εκτελεστούν σε προγραμματισμένο χρόνο είναι αποθηκευμένες σαν σενάρια φλοιού, όπως για παράδειγμα το σενάριο αυτό εκτελείται ημερήσια και ανανεώνει την βάση δεδομένων χρησιμοποιώντας την εντολή locate:
billy@ahost cron.daily]$ cat slocate.cron #!/bin/sh renice +19 -p $$ >/dev/null 2>&1 /usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net" |
Οι χρήστες πρέπει να επεξεργάζονται τα crontabs με ασφαλή τρόπο χρησιμοποιώντας την εντολή crontab -e. Αυτό θα αποτρέψει ένα χρήστη να ανοίξει κατά λάθος παραπάνω από ένα αντίγραφο του ίδιου αρχείου crontab . Ο προεπιλεγμένος επεξεργαστής κειμένου που χρησιμοποιείτε είναι ο vi (Βλέπε Κεφάλαιο 6, αλλά μπορεί να χρησιμοποιηθεί οποιοσδήποτε επεξεργαστής κειμένου, όπως ο ed ή ο nano.
Κατά την έξοδο από το σύστημα θα ειδοποιηθείτε ότι έχει ενεργοποιηθεί ένα καινούργιο crontab.
Αυτή η καταχώρηση crontab υπενθυμίζει στον χρήστη billy να πάει στο αθλητικό κέντρο κάθε Πέμπτη βράδυ::
billy:~> crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.20264 installed on Sun Jul 20 22:35:14 2003) # (Cron version -- $Id: chap4.xml,v 1.27 2006/10/26 15:37:52 tille Exp $) 38 16 * * 3 mail -s "sports evening" billy |
Ύστερα από την προσθήκη μιας νέας προγραμματισμένης εργασίας, το σύστημα θα επιβεβαιώσει την εγκατάσταση του καινούργιου crontab. Για να ισχύουν οι αλλαγές που κάνατε θα πρέπει να επανεκκινήσετε τον δαίμονα cron. Στο παράδειγμα, ο χρήστης billy προσθέτει μια νέα γραμμή αναφέρεται σε ένα σενάριο με το όνομα backup:
billy:~> crontab -e 45 15 * * 3 mail -s "sports evening" billy 4 4 * * 4,7 /home/billy/bin/backup.sh <--write and quit--> crontab: installing new crontab billy:~> |
Το σενάριο backup.sh εκτελείται κάθε Πέμπτη και Κυριακή. Στην Ενότητα 7.2.5 υπάρχουν πληροφορίες για τα σενάρια φλοιού. Υπενθυμίζεται ότι η έξοδος των εντολών, αν υπάρχει, στέλνεται στο χρήστη στο οποίο ανήκει το crontab. Αν δεν έχει διαμορφωθεί κάποια υπηρεσία ταχυδρομείου, θα βρείτε την έξοδο των εντολών σε ένα αρχείο κειμένου στη διαδρομή /var/spool/mail/<your_username>.
Ποιός εκτελεί τις εντολές μου; Δεν χρειάζεται να προσδιοριστεί ποιος χρήστης εκτελεί της εντολές. Εκτελούνται εξ ορισμού σύμφωνα με τα δικαιώματα του χρήστη στον οποίο ανήκουν.
Το Linux είναι ένα πολύ-χρηστικό και πολύ-εργασιακό λειτουργικό σύστημα το οποίο χειρίζεται τις διεργασίες με τρόπο ίδιο με αυτό του UNIX. Η ταχύτητα εκτέλεσης των εντολών εξαρτάται από χιλιάδες πράματα. Ανάμεσα στα άλλα, μάθαμε αρκετές νέες εντολές για να χειριζόμαστε διεργασίες. Να μία λίστα:
Πίνακας 4-3. Νέες εντολές στο κεφάλαιο 4: Διεργασίες
Εντολή |
Σημασία |
---|---|
at |
Δημιουργεί μια ουρά από εργασίες που πρόκειται να εκτελεστούν. |
atq |
Εμφανίζει μια λίστα με τις εργασίες του χρήστη που βρίσκονται σε αναμονή. |
atrm |
Διαγράφει εργασίες, προσδιοριζόμενες από τον αριθμό τους. |
batch |
Εκτελεί εντολές όταν το επιτρέπει ο φόρτος του συστήματος. |
crontab |
Δημιουργεί αρχεία crontab διάφορους χρήστες. |
halt |
Σταματά την λειτουργία του συστήματος. |
init run level |
Αρχικοποίηση συστήματος και ελέγχου διεργασιών. |
jobs |
Εμφανίζει τις εργασίες που εκτελούνται. |
kill |
Τερματίζει μια διεργασία. |
mesg |
Έλεγχος του δικαιώματος εγγραφής στο τερματικό σας. |
netstat |
Εμφανίζει τις συνδέσεις δικτύου, τους δρομολογητές, στατιστικά διεπαφών, κεκαλυμμένες συνδέσεις και συμμετοχές σε πολυεκπομπές. |
nice |
Εκτελεί ένα πρόγραμμα με τροποποιημένη προτεραιότητα. |
pgrep |
Εμφανίζει τις διεργασίες που εκτελούνται. |
ps |
Αναφέρει την κατάσταση των διεργασιών. |
pstree |
Εμφανίζει τις διεργασίες σε μορφή δενδρογράμματος. |
reboot |
Σταματά την λειτουργία του συστήματος (επανεκκίνηση). |
renice |
Αλλάζει την προτεραιότητα των εκτελούμενων διεργασιών. |
shutdown |
Τερματίζει τη λειτουργία του συστήματος. |
sleep |
Δημιουργεί μια καθυστέρηση (περίοδο αδράνειας) συγκεκριμένου χρόνου. |
time |
Χρονομετρά μια εντολή ή εμφανίζει πληροφορίες για τη χρήση πόρων του συστήματος. |
top |
Εμφανίζει ποιες εργασίες χρησιμοποιούν μεγαλύτερο ποσοστό της CPU. |
uptime |
Εμφανίζει πόση ώρα είναι το σύστημα σε λειτουργία. |
vmstat |
Εμφανίζει στατιστικά στοιχεία για την εικονική μνήμη. |
w |
Δείχνει ποιοι χρήστες είναι συνδεμένοι στο σύστημα και τι διεργασίες εκτελούν. |
wall |
Στέλνει ένα μήνυμα σε όλα τα τερματικά. |
who |
Δείχνει ποιοι χρήστες είναι συνδεδεμένοι στο σύστημα. |
write |
Στέλνει ένα μήνυμα σε ένα συγκεκριμένο χρήστη. |
Αυτές είναι μερικές ασκήσεις οι οποίες θα βοηθήσουν στην εξοικείωση με τις διεργασίες που εκτελούνται στο σύστημα σας.
Αυτό το κεφάλαιο περιγράφει έναν ισχυρό μηχανισμό του UNIX, την ανακατεύθυνση εισόδου, εξόδου και λαθών. Τα θέματα περιλαμβάνουν:
Οι περισσότερες εντολές Linux διαβάζουν από μια είσοδο, από ένα αρχείο ή άλλες παραμέτρους γραμμής, και γράφουν σε μια έξοδο. Εξ' ορισμού η είσοδος προέρχεται από το πληκτρολόγιο, και η έξοδος κατευθύνεται στην οθόνη. Το πληκτρολόγιο είναι η συσκευή πρότυπης εισόδου (standard input -stdin) και η οθόνη ή το τερματικό η συσκευή πρότυπης εξόδου (standard output -stdout).
Όμως, επειδή το Linux είναι πολύ ευέλικτο, οι προεπιλεγμένες συσκευές μπορούν να τροποποιηθούν. Για παράδειγμα, η πρότυπη έξοδος ενός διακομιστή που παρακολουθείται συστηματικά, μπορεί να είναι ένας εκτυπωτής.
Μερικές φορές θέλετε να αποθηκεύσετε το αποτέλεσμα μιας εντολής σε ένα αρχείο, ή μπορεί να θέλετε να χρησιμοποιήσετε την έξοδο μιας εντολής ως είσοδο σε μια άλλη εντολή. Αυτό είναι γνωστό ως ανακατεύθυνση εξόδου. Η ανακατεύθυνση γίνεται είτε με τους τελεστές ">" (μεγαλύτερο), ή "|" (σωλήνωση).
Όπως είδαμε σε προηγούμενη ενότητα, η εντολή cat μπορεί να χρησιμοποιηθεί για την εμφάνιση των περιεχομένων αρχείων στην οθόνη. Αν ανακατευθύνουμε αυτή την έξοδο σε ένα όνομα αρχείου, αυτό το αρχείο αν δεν υπάρχει δημιουργείται ή αν υπάρχει υπέρ-γράφεται (τροποποιείται), γι' αυτό προσέχετε.
nancy:~> cat test1 some words nancy:~> cat test2 some other words nancy:~> cat test1 test2 > test3 nancy:~> cat test3 some words some other words |
Μην υπερ-γράφετε (τροποποιείτε)! Προσέχετε όταν υπερ-γράφετε (τροποποιείτε) υπάρχοντα (σημαντικά) αρχεία με την ανακατεύθυνση εξόδου. Πολλοί φλοιοί, και το Bash, έχουν ένα ενσωματωμένο χαρακτηριστικό που προστατεύει από αυτό το κίνδυνο: την επιλογή: noclobber. Περισσότερες πληροφορίες στη τεκμηρίωση του συστήματος. Στο Bash, μπορείτε να προσθέσετε την εντολή set -o noclobber στη διαμόρφωση του .bashrc σας για να αποτρέψετε τυχαία τροποποίηση των αρχείων.
Η ανακατεύθυνση του "τίποτε" σε ένα υπάρχον αρχείο ισούται με το άδειασμα του αρχείου:
nancy:~> ls -l list -rw-rw-r-- 1 nancy nancy 117 Apr 2 18:09 list nancy:~> > list nancy:~> ls -l list -rw-rw-r-- 1 nancy nancy 0 Apr 4 12:01 list |
Αυτή η διαδικασία λέγεται αποκοπή (truncating).
Η ίδια ανακατεύθυνση σε ένα ανύπαρκτο αρχείο δημιουργεί ένα νέο άδειο αρχείο με το όνομα που ορίζουμε:
nancy:~> ls -l newlist ls: newlist: No such file or directory nancy:~> > newlist nancy:~> ls -l newlist -rw-rw-r-- 1 nancy nancy 0 Apr 4 12:05 newlist |
Το Κεφάλαιο 7 δίνει περισσότερα παραδείγματα γι' αυτό το τύπο ανακατεύθυνσης.
Όπως αναφέρθηκε και παραπάνω, χρησιμοποιώντας μια διοχέτευση μπορούμε να τροφοδοτήσουμε την έξοδο μιας εντολής ως είσοδο μιας άλλης. Ακολουθούν κάποια παραδείγματα:
Εντοπισμός γραμμών σε ένα αρχείο οι οποίες ταιριάζουν με τα κριτήρια που ορίζονται στο "pattern1" εκτός από αυτές που ταιριάζουν και με το "pattern2" (η επιλογή -v σημαίνει ουσιαστικά “να μην ταιριάζει”):
grep pattern1 file | grep -v pattern2
Εμφάνιση περιεχομένων καταλόγου, σελίδα-σελίδα (πολύ χρήσιμη για καταλόγους που περιέχουν πολλά στοιχεία):
ls -la | less
Εύρεση αρχείου σε ένα κατάλογο:
ls -l | grep part_of_file_name
Σε μια άλλη περίπτωση, μπορεί ένα αρχείο να χρησιμοποιηθεί ως είσοδος σε μια εντολή που κανονικά δεν δέχεται αρχεία ως είσοδο. Αυτή η ανακατεύθυνση επιτυγχάνεται με τον τελεστή "<" (μικρότερο).
Παρακάτω ένα παράδειγμα αποστολής αρχείου σε κάποιον, με ανακατεύθυνση.
andy:~> mail mike@somewhere.org < to_do |
Αν ο χρήστης mike υπάρχει στο σύστημα, δεν χρειάζεται να εισάγετε τη πλήρη διεύθυνση. Αν θέλετε να επικοινωνήσετε με κάποιον στο Διαδίκτυο, εισάγετε τη πλήρη διεύθυνση ως όρισμα στο mail.
Αυτό φαίνεται λίγο πιο δύσκολο από το απλούστερο cat file | mail someone, αλλά σίγουρα είναι μια πιο κομψή χρήση των διαθέσιμων εργαλείων.
Το ακόλουθο παράδειγμα συνδυάζει ανακατεύθυνση είσοδο και έξοδο. Το αρχείο text.txt πρώτα ελέγχεται για ορθογραφικά λάθη, και η έξοδος ανακατευθύνεται σε ένα αρχείο καταγραφής λαθών:
spell < text.txt > error.log
Ο συνδυασμός εντολών που ακολουθεί εμφανίζει όλες τις γραμμές που αφορούν την εξέταση ενός αρχείου από το αρχείο βοήθειας της εντολής less:
mike:~> less --help | grep -i examine :e [file] Examine a new file. :n * Examine the (N-th) next file from the command line. :p * Examine the (N-th) previous file from the command line. :x * Examine the first (or N-th) file from the command line. |
Η επιλογή -i χρησιμοποιείται για αναζητήσεις αδιάφορες για πεζά ή κεφαλαία γράμματα (case-insensitive) – θυμηθείτε οτι τα συστήματα UNIX είναι ιδιαίτερα ευαίσθητα στις διαφορές κεφαλαίων – πεζών.
Αν θέλετε να αποθηκεύσετε την έξοδο αυτής της εντολής για μελλοντική αναφορά, ανακατευθύνετε την έξοδο σε ένα αρχείο:
mike:~> less --help | grep -i examine > examine-files-in-less mike:~> cat examine-files-in-less :e [file] Examine a new file. :n * Examine the (N-th) next file from the command line. :p * Examine the (N-th) previous file from the command line. :x * Examine the first (or N-th) file from the command line. |
Γενικά, δεν υπάρχουν περιορισμοί στις διοχετεύσεις και οι ανακατευθύνσεις εισόδου – εξόδου είναι πάντα εφικτές εφόσον οι αντίστοιχες εντολές παίρνουν είσοδο και δίνουν έξοδο.
Αντί για την τροποποίηση (υπερ-γραφή) των δεδομένων σε ένα αρχείο, μπορούμε επίσης να προσαρτήσουμε κείμενο στο τέλος υπάρχοντος αρχείου με τη χρήση δύο διαδοχικών τελετών 'μεγαλύτερο' :
Παράδειγμα:
mike:~> cat wishlist more money less work mike:~> date >> wishlist mike:~> cat wishlist more money less work Thu Feb 28 20:23:07 CET 2002 |
Η εντολή date κανονικά εμφανίζει την ημερομηνία στην οθόνη, αλλά τώρα προσαρτάται στο αρχείο wishlist.
Υπάρχουν τρεις τύποι Ε/Ε, που έχουν τον δικό τους αριθμό, που ονομάζονται περιγραφείς αρχείων:
Στις ακόλουθες περιγραφές, αν ο αριθμός παραλείπεται, και ο πρώτος τελεστής ανακατεύθυνσης είναι <, η ανακατεύθυνση αναφέρεται στη πρότυπη είσοδο (περιγραφέας αρχείου 0). Αν ο πρώτος τελεστής ανακατεύθυνσης είναι >, η ανακατεύθυνση αναφέρεται στη πρότυπη έξοδο (περιγραφέας αρχείου 1).
Μερικά πρακτικά παραδείγματα θα ξεκαθαρίσουν τα πράγματα: η εντολή
ls > dirlist 2>&1
θα κατευθύνει τη πρότυπη έξοδο και το πρότυπο λάθος στο αρχείο dirlist, ενώ η εντολή
ls 2>&1 > dirlist
θα κατευθύνει μόνο τη πρότυπη έξοδο στο dirlist. Αυτό μπορεί να είναι χρήσιμο για τους προγραμματιστές.
Εδώ τα πράγματα γίνονται αρκετά περίπλοκα, ας μην μπλέκουμε τη χρήση του & εδώ με τη χρήση στην Ενότητα 4.1.2.1, όπου ο ίδιος χαρακτήρας χρησιμοποιείται για την εκτέλεση διεργασίας στο παρασκήνιο. Εδώ, απλά είναι μια ένδειξη οτι ο αριθμός που ακολουθεί δεν είναι όνομα αρχείου, αλλά τοποθεσία που δείχνει η ροή δεδομένων. Επίσης σημειώστε οτι το σύμβολο > δεν πρέπει να διαχωριστεί με κενό από τον αριθμό του περιγραφέα αρχείου. Αν διαχωριστούν, θα στείλουμε την έξοδο πάλι σε αρχείο. Το παρακάτω παράδειγμα επιδεικνύει αυτό:
[nancy@asus /var/tmp]$ ls 2> tmp [nancy@asus /var/tmp]$ ls -l tmp -rw-rw-r-- 1 nancy nancy 0 Sept 7 12:58 tmp [nancy@asus /var/tmp]$ ls 2 > tmp ls: 2: No such file or directory |
Η πρώτη εντολή που εκτελεί η nancy είναι σωστή (αν και δεν παράγονται σφάλματα και έτσι το αρχείο που ανακατευθύνεται το πρότυπο σφάλμα είναι άδειο). Η δεύτερη εντολή αναμένει οτι το 2 είναι όνομα αρχείου, που δεν υπάρχει στη περίπτωσή μας, έτσι εμφανίζεται σφάλμα.
Όλα αυτά τα χαρακτηριστικά εξηγούνται με λεπτομέρεια στις σελίδες πληροφόρησης του φλοιού Bash.
Αν η διεργασία σας παράγει πολλά σφάλματα, εδώ είναι ένας τρόπος να τα εξετάσουμε με λεπτομέρεια:
command 2>&1 | less
Αυτό χρησιμοποιείται συνήθως όταν δημιουργούμε νέο λογισμικό με την εντολή make όπως παρακάτω:
andy:~/newsoft> make all 2>&1 | less --output ommitted-- |
Δομές σαν αυτές χρησιμοποιούνται συχνά από προγραμματιστές, ώστε η έξοδος να εμφανίζεται στην οθόνη, και τα σφάλματα σε άλλη οθόνη. Πρώτα βρίσκουμε ποιο τερματικό χρησιμοποιούμε με την εντολή tty:
andy:~/newsoft> make all 2> /dev/pts/7 |
Μπορείτε να χρησιμοποιήσετε την εντολή tee για να αντιγράψετε είσοδο στη πρότυπη έξοδο και σε ένα ή περισσότερα αρχεία εξόδου με μία κίνηση. Με τη χρήση της επιλογής -a το tee προσαρτά δεδομένα σε αρχείο(α). Αυτή η εντολή είναι χρήσιμη αν θέλετε να δείτε και να αποθηκεύσετε την έξοδο. Οι τελεστές > και >> δεν επιτρέπουν τη ταυτόχρονη εκτέλεση των δύο εργασιών.
Το εργαλείο αυτό συνήθως καλείται μέσω σωλήνωσης (|), όπως φαίνεται στο παρακάτω παράδειγμα:
mireille ~/test> date | tee file1 file2 Thu Jun 10 11:10:34 CEST 2004 mireille ~/test> cat file1 Thu Jun 10 11:10:34 CEST 2004 mireille ~/test> cat file2 Thu Jun 10 11:10:34 CEST 2004 mireille ~/test> uptime | tee -a file2 11:10:51 up 21 days, 21:21, 57 users, load average: 0.04, 0.16, 0.26 mireille ~/test> cat file2 Thu Jun 10 11:10:34 CEST 2004 11:10:51 up 21 days, 21:21, 57 users, load average: 0.04, 0.16, 0.26 |
Όταν ένα πρόγραμμα εκτελεί λειτουργίες στην είσοδο και γράφει το αποτέλεσμα στη πρότυπη έξοδο, αυτό λέγεται φίλτρο. Μια από τις πιο κοινές χρήσεις των φίλτρων είναι η αναδόμηση της εξόδου. Παρακάτω θα συζητήσουμε μερικά από τα πιο σημαντικά φίλτρα.
Όπως είδαμε στην Ενότητα 3.3.3.4, η εντολή grep σαρώνει την έξοδο γραμμή προς γραμμή, αναζητώντας ταυτίσεις προτύπων. Όλες οι γραμμές που περιέχουν το πρότυπο θα εγγραφούν στη πρότυπη έξοδο. Αυτή η συμπεριφορά μπορεί να αναστραφεί με την επιλογή -v.
Μερικά παραδείγματα: υποθέστε ότι θέλουμε να ξέρουμε ποια αρχεία σε συγκεκριμένο κατάλογο έχουν τροποποιηθεί τον Φεβρουάριο:
jenny:~> ls -la | grep Feb |
Η εντολή grep, όπως οι περισσότερες εντολές, είναι ευαίσθητη στα πεζά – κεφαλαία γράμματα. Με την επιλογή -i ακυρώνουμε αυτή την ευαισθησία. Επίσης υπάρχουν διαθέσιμες πολλές επεκτάσεις GNU, όπως η --colour, που είναι χρήσιμη για το φωτισμό των προτύπων σε μακριές γραμμές, και η --after-context, που εμφανίζει τον αριθμό των γραμμών που εμφανίζουν ταύτιση. Μπορείτε να εκτελέσετε και μια αναδρομική grep που αναζητά σε υποκαταλόγους με την επιλογή -r. Ως συνήθως, οι επιλογές μπορούν να συνδυαστούν.
Οι κανονικές εκφράσεις μπορούν να χρησιμοποιηθούν για να εκτελέσετε λεπτομερέστερες αναζητήσεις σε αρχεία. Ο καλύτερος τρόπος να ξεκινήσετε είναι να διαβάσετε τη τεκμηρίωσης της grep. Μια εξαίρετη εισαγωγή βρίσκεται στις σελίδες Info για τη grep. Επειδή η συζήτηση για τις κανονικές εκφράσεις είναι πολύ μεγάλη και ενδιαφέρουσα, σας συνιστούμε να ξεκινήσετε από αυτά τα σημεία.
Ασχοληθείτε λίγο παραπάνω με τη grep, αξίζει τον κόπο να μάθετε να χρησιμοποιείτε αυτή την πανίσχυρη εντολή φίλτρων. Οι ασκήσεις στο τέλος του κεφαλαίου σας βοηθούν να ξεκινήσετε, Ενότητα 5.5.
Η εντολή sort εξ' ορισμού ταξινομεί γραμμές αλφαβητικά:
thomas:~> cat people-I-like | sort Auntie Emmy Boyfriend Dad Grandma Mum My boss |
Αλλά υπάρχουν και πολλά άλλα που μπορεί να κάνει η sort. Έλεγχο μεγέθους αρχείων, ας πούμε. Με αυτή την εντολή, τα περιεχόμενα ενός καταλόγου ταξινομούνται κατά μέγεθος αρχείου:
ls -la | sort -nk 5
Παλιά σύνταξη της sort Μπορείτε να πάρετε το ίδιο αποτέλεσμα με την εντολή ls -la | sort +4n, αλλά αυτή η παλαιού τύπου σύνταξη δεν συμφωνεί με τα τρέχοντα πρότυπα.
Η εντολή sort μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με το πρόγραμμα uniq (ή sort -u) που ταξινομεί και αφαιρεί τις διπλές γραμμές:
thomas:~> cat itemlist 1 4 2 5 34 567 432 567 34 555 thomas:~> sort itemlist | uniq 1 2 34 4 432 5 555 567 |
Σε αυτό το κεφάλαιο μάθαμε πως μπορούμε να συνδυάσουμε εντολές μεταξύ τους, και πως η έξοδος μιας εντολής μπορεί να χρησιμοποιηθεί ως είσοδος σε άλλη εντολή. Η ανακατεύθυνση Ε/Ε είναι κοινός τόπος στα συστήματα UNIX και Linux. Αυτός ο ισχυρός μηχανισμός επιτρέπει την ευέλικτη σύνθεση επιμέρους εντολών του UNIX. Οι πιο συνηθισμένοι τελεστές ανακατεύθυνσης είναι οι > και |. Στο Παράρτημα C θα βρείτε μια σύνοψη των εντολών ανακατεύθυνσης και άλλων δομών φλοιού.
Πίνακςας 5-1. Νέες εντολές στο κεφάλαιο 5: ανακατεύθυνση Ε/Ε
Εντολή |
Σημασία |
---|---|
date |
Εμφάνιση ημερομηνίας και ώρας. |
set |
Διαμόρφωση επιλογών φλοιού. |
sort |
Ταξινόμηση γραμμών κειμένου. |
uniq |
Αφαίρεση διπλών γραμμών από ταξινομημένο αρχείο. |
Οι ασκήσεις που ακολουθούν δίνουν περισσότερα παραδείγματα συνδυασμού εντολών. Ο κύριος στόχος είναι να προσπαθήσουμε να χρησιμοποιήσουμε το πλήκτρο Enter όσο λιγότερο γίνεται. Όλες οι ασκήσεις εκτελούνται με δικαιώματα απλού χρήστη, ώστε να δημιουργούν μερικά σφάλματα. Όταν συμβούν, μην ξεχάστε τα διαβάστε τις σελίδες τεκμηρίωσης!
root:x:0:0:root:/root:/bin/bash |
Και αυτή::
system: root |
> time; date >> time; cat < time
Σε αυτό το κεφάλαιο, θα συζητήσουμε την ορθή χρήση ενός διορθωτή κειμένου. Θα εστιάσουμε κυρίως στον βελτιωμένο συντάκτη vi(m).
Αφού τελειώσετε αυτό το κεφάλαιο, θα μπορείτε να εκτελείτε τις παρακάτω λειτουργίες:
Άνοιγμα και κλείσιμο αρχείων σε μορφή κειμένου
Σύνταξη αρχείων
Αναζήτηση κειμένου
Αναίρεση σφαλμάτων
Συγχώνευση αρχείων
Ανάκτηση χαμένων αρχείων
Εύρεση προγράμματος ή λογισμικού πακέτου για χρήση στο γραφείο
Είναι πολύ σημαντικό να γνωρίζετε καλά τη χρήση ενός συντάκτη κειμένου. Η γνώση ενός συντάκτη είναι το πρώτο βήμα σας για να ελέγξετε το σύστημα.
Ο συντάκτης κειμένου θα σας φανεί χρήσιμος στην τροποποίηση αρχείων που επηρεάζουν το περιβάλλον σας. Ως προχωρημένος χρήστης, μπορεί να αρχίσετε να γράφετε σενάρια, ή βιβλία ή να αναπτύσσετε προγράμματα. Η χρήση ενός συντάκτη θα ενισχύσει πολύ τη παραγωγικότητά σας.
Θα εστιάσουμε στους συντάκτες κειμένου, που μπορούν να χρησιμοποιηθούν χωρίς γραφικό περιβάλλον, σε απλό παράθυρο τερματικού. Ένα πρόσθετο πλεονέκτημα χρήσης συντάκτη κειμένου είναι οτι μπορεί να χρησιμοποιηθεί σε απομακρυσμένες συνδέσεις. Η ταχύτητα απόκρισης είναι πολύ μεγαλύτερη, αφού δεν απαιτείται η μεταφορά της γραφικής διεπαφής μέσω του δικτύου.
Υπάρχουν, όπως συνήθως, πολλοί τρόποι να λύσουμε το πρόβλημα. Ας δούμε ποιοι συντάκτες είναι γενικά διαθέσιμοι:
Ο συντάκτης ed είναι συντάκτης γραμμής που μπορεί να χρησιμοποιηθεί για επεξεργασία μικρών αρχείων κειμένου.
Ο ed είναι ο αρχικός συντάκτης κειμένου των συστημάτων UNIX, και ευρύτατα διαθέσιμος. Όμως, για τις περισσότερες εργασίες, έχει αντικατασταθεί από συντάκτες πλήρους οθόνης, όπως οι emacs και vi, δείτε παρακάτω.
Ο Emacs είναι επεκτάσιμος, διαμορφώσιμος, αυτο-τεκμηριωνόμενος, πραγματικού χρόνου συντάκτης, γνωστός σε πολλά συστήματα UNIX, και άλλα. Το κείμενο που συντάσσεται είναι ορατό στην οθόνη και ενημερώνεται αυτόματα όπως πληκτρολογείτε τις εντολές. Είναι συντάκτης πραγματικού χρόνου γιατί η οθόνη ενημερώνεται πολύ συχνά, συνήθως μετά τη πληκτρολόγηση ενός ή δύο χαρακτήρων. Ο Emacs θεωρείται ιδιαίτερα προχωρημένος γιατί δίνει πολλές δυνατότητες πέρα από τις απλές ενός συντάκτη: έλεγχος διεργασιών, αυτόματη παραγραφοποίηση προγραμμάτων, ταυτόχρονη θέαση δύο ή περισσότερων αρχείων, σύνταξη μορφοποιημένου κειμένου, διαχείριση κειμένου σε χαρακτήρες, λέξεις, γραμμές, προτάσεις, παραγράφους, σελίδες, κανονικές εκφράσεις και σχόλια σε διάφορες γλώσσες προγραμματισμού.
Αυτο-τεκμηριωνόμενος (Self-documenting) σημαίνει οτι κάθε στιγμή μπορείτε να εισάγετε έναν ειδικό χαρακτήρα, Ctrl+H, για να μάθετε ποιες είναι οι επιλογές σας. Μπορείτε επίσης να το μάθετε τι κάνει κάθε εντολή, ή όλες τις εντολές σχετικές με ένα θέμα. Δαμορφώσιμος (Customizable) σημαίνει οτι μπορείτε να τροποποιήσετε λίγο τους ορισμούς των εντολών του Emacs. Για παράδειγμα αν θέλετε τα σχόλια στα προγράμματά σας να αρχίζουν με "<**" και να τελειώνουν με "**>", μπορείτε να ενημερώσετε τις εντολές διαχείρισης σχολίων του Emacs γι' αυτό. Ένα άλλο παράδειγμα είναι η θέση των πλήκτρων κίνησης ή άλλων πλήκτρων συντόμευσης στο πληκτρολόγιο: μπορείτε να τα μεταβάλετε όπως θέλετε.
Επεκτάσιμος (Extensible) σημαίνει οτι μπορείτε να προχωρήσετε πέρα από την απλή διαμόρφωση και να γράψετε εντελώς νέες εντολές, γράφοντας προγράμματα στη γλώσσα Lisp τα οποία εκτελούνται από το διερμηνέα Lisp του Emacs. O Emacs είναι online επεκτάσιμος, με την έννοια οτι τμήματά του μπορούν να προσθαφαιρεθούν χωρίς την επανεκκίνηση όλου του συντάκτη. Εντολές γραμμένες σε Lisp από άλλους χρήστες μπορούν να ενσωματωθούν στο δικό μας Emacs.
Στο σύστημα X Window (ξεκινά ως xemacs) ο Emacs παρέχει menus και βολικές συνδέσεις με το ποντίκι. Αλλά ο Emacs μπορεί να προσφέρει πολλά από τα πλεονεκτήματα των παραθυρικών συστημάτων σε απλό τερματικό κειμένου.
Το Vim σημαίνει "Vi Improved" (Βελτιωμένος Vi). Παλιότερα σήμαινε "Vi Imitation" (Απομίμηση Vi),αλλά υπάρχουν τόσες πολλές βελτιώσεις που η αλλαγή ονόματος κρίθηκε απαραίτητη. Ο Vim είναι ένας συντάκτης κειμένου που περιλαμβλανει σχεδόν όλες τις εντολές του προγράμματος UNIX vi αλλά και πολλές νέες.
Οι εντολές στον συντάκτη vi εισάγονται μόνο από το πληκτρολόγιο έτσι ώστε δεν χρειάζεται με μεταφέρουμε τη προσοχή μας στα menu ή στο ποντίκι. Αν θέλετε όμως μπορείτε να ενεργοποιήσετε μια γραφική διεπαφή με menu και ράβδους κύλισης.
Θα αναφερόμαστε στο vi ή στο vim σε όλο το βιβλίο όταν συζητούμε για διόρθωση κειμένων, εσείς φυσικά μπορείτε να χρησιμοποιήσετε όποιον συντάκτη θέλετε. Όμως, συνιστούμε να μάθετε τουλάχιστο τα βασικά του vi γιατί είναι ο προεπιλεγμένος συντάκτης στα περισσότερα συστήματα UNIX, ενώ ο emacs είναι συνήθης επιλογή. Μπορεί να υπάρχουν μικροδιαφορές σε υπολογιστές και τερματικά, αλλά το σημαντικό είναι οτι αν γνωρίζετε τα βασικά του vi, θα επιβιώσετε σε ένα σύστημα UNIX.
Εκτός από την εντολή vim, μπορεί να βρείτε και το gvim, την έκδοση Gnome του vim. Οι αρχάριοι μπορεί να το βρουν χρήσιμο, γιατί τα μενού βοηθούν σε περίπτωση που ξεχάσετε τη χρήση των βασικών εντολών του vim.
Ο συντάκτης vi είναι πολύ ισχυρό εργαλείο και έχει ενσωματωμένο ένα πολύ εκτεταμένο εγχειρίδιο, που μπορείτε να το χρησιμοποιήσετε με την εντολή :help μετά την εκκίνηση του προγράμματος (αντί για τα man και info, που δεν περιέχουν τόση πολλή πληροφορία). Θα συζητήσουμε μόνο τα βασικά που σας επιτρέπουν να ξεκινήσετε.
Αυτό που μπερδεύει τον αρχάριο χρήστη με το vi είναι οτι λειτουργεί εε δύο καταστάσεις: κατάσταση εντολών και κατάσταση κειμένου. Ο συντάκτης ξεκινά πάντα στη κατάσταση εντολών. Οι εντολές σας κινούν μέσα στο κείμενο, αναζητούν, αντικαθιστούν, σημειώνουν μπλοκ κειμένου, γενικά κάνει άλλες λειτουργίες σύνταξης, και .φυσικά μεταφέρεται σε κατάσταση κειμένου.
Αυτό σημαίνει οτι κάθε πλήκτρο έχει όχι μια, αλλά πιθανά δύο λειτουργίες: μπορεί να αντιστοιχεί είτε σε εντολή προς το συντάκτη, είτε να είναι χαρακτήρας που εισάγουμε στο κείμενο.
Προφορά |
|
---|---|
|
Λέγονται “βι-άι” και “βιμ” |
Η κίνηση μέσα στο κείμενο συνήθως γίνεται με τα βέλη του πληκττρολογίου. Αν όχι, προσπαθήστε:
h κίνηση αριστερά
l κίνηση δεξιά
k κίνηση πάνω
j κίνηση κάτω
Το SHIFT-G θέτει τη προτροπή στο τέλος του κειμένου..
Αυτές είναι μερικές δημοφιλείς εντολές vi:
n dd σβήνει n γραμμές ξεκινώντας από τη τρέχουσα γραμμή.
n dw σβήνει n λέξεις δεξιά από το δρομέα
x σβήνει τον χαρακτήρα που βρίσκεται ο δρομέας
:n κινείται στη γραμμή n του αρχείου.
:w σώζει (γράφει) το κείμενο σε υπάρχον αρχείο.
:q εγκαταλείπει τον συντάκτη.
:q! εγκαταλείπει τον συντάκτη χωρίς να σώσει το κείμενο.
:wq συνδυασμός των παραπάνω εντολών.
:w newfile σώζει το κείμενο στο αρχείο newfile.
:wq! ξεπερνά την απαγόρευση read-only (αν έχετε τέτοιο δικαίωμα, για παράδειγμα αν είστε root).
/astring αναζητά τη συμβολοσειρά astring στο κείμενο από το δρομέα και κάτω, και σταματά στην πρώτη εύρεση ή το τέλος του κειμένου.
/ επαναλαμβάνει την ίδια αναζήτηση πάλι, από το σημείο της τελευταίας ταύτισης.
:1, $s/word/anotherword/g αντικαθιστά τη λέξη word με τη λέξη anotherword σε όλο το κείμενο.
yy αντιγράφει μπλόκ κειμένου..
n p θα επικολλήσει n φορές.
:recover ανακαλεί αρχείο μετά από ξαφνική διακοπή.
a προσάρτηση, μετάβαση από τη κατάσταση εντολών στη κατάσταση κειμένου, στο τέλος του κειμένου.
i εισαγωγή, όπως παραπάνω αλλά στην αρχή του κειμένου.
o εισαγωγή κενής γραμμής κάτω από τον δρομέα και ξεκίνημα εισαγωγής κειμένου.
Το πλήκτρο Esc μας επιστρέφει στη κατάσταση εντολών. Αν δεν ξέρουμε σε ποια κατάσταση βρισκόμαστε, ή αν η έκδοση του vi είναι παλιά, τότε πιέζουμε Esc για να είστε σίγουροι οτι επιστρέψαμε στη κατάσταση εντολών. Αν βρισκόμαστε ήδη στη κατάσταση εντολών και πιέσουμε το Esc, τότε ακούγεται χαρακτηριστικός ήχος (μπιπ).
Αντί να διαβάσετε τις οδηγίες, που είναι αρκετά βαρετό, μπορείτε να χρησιμοποιήσετε το vimtutor για να μάθετε τις εντολές του Vim. Είναι μια εκπαιδευτική εισαγωγή τριάντα λεπτών και διδάσκει τη βασική λειτουργικότητα του Vim με οκτώ εύκολες ασκήσεις. Αν και δεν μπορείτε να μάθετε όλα για το vim σε μισή ώρα, η εκπαιδευτική εισαγωγή είναι σχεδιασμένη για να μάθετε τη τα βασικά του Vim.
Τόσο στο UNIX όσο και στα MS Windows, αν ο Vim είναι σωστά εγκατεστημένος, μπορείτε να ξεκινήσετε από το φλοιό την εκπαιδευτική εισαγωγή, με την εντολή vimtutor. Θα αντιγράψει ένα αρχείο της εισγωγής στον οικείο κατάλογό σας, ώστε να μην καταστρέψετε το πρωτότυπο. Υπάρχουν και μερικές μεταφρασμένες εκδόσεις. Για παράδειγμα η Γαλλική έκδοση καλείται με την εντολή vimtutor fr (αν είναι εγκατεστημένη).
Κατά τη τελευταία δεκαετία το περιβάλλον γραφείου κυριαρχείται από το by MS Office, και, πρέπει να παραδεχτούμε οτι τα Microsoft Word, Excel και PowerPoint είναι de facto πρότυπα που θα χρησιμοποιήσετε αργά ή γρήγορα.
Αυτό το μονοπώλιο της Microsoft απεδείχθη μεγάλο μειονέκτημα για τη προσέλκυση χρηστών στο Linux, έτσι μια ομάδα Γερμανών ξεκίνησε το έργο StarOffice, που ο στόχος του είναι να δημιουργηθεί κλώνος του MS Office. Η εταιρία τους, η StarDivision, αγοράστηκε από τη Sun Microsystems στα τέλη του 1990, πριν την έκδοση 5.2. Η Sun συνεχίζει την ανάπτυξη αλλά έχει περιορίσει τη πρόσβαση στο πηγαίο κώδικα. Παρ' όλα αυτά, η ανάπτυξη του αρχικού πηγαίου κώδικα συνεχίστηκε από την κοινότητα του Ανοικτού Λογισμικού, με το όνομα OpenOffice. Το OpenOffice είναι πλέον διαθέσιμο σε διάφορες πλατφόρμες, όπως σε MS Windows, Linux, MacOS και Solaris. Στην ενότητα Ενότητα 1.3.2 βλέπετε μια εικόνα του.
Σχεδόν ταυτόχρονα, ξεκίνησαν μερικά άλλα γνωστά έργα. Μια συνηθισμένη εναλλακτική του MS Office είναι το KOffice, ένα πακέτο λογισμικού του KDE που είναι δημοφιλές ανάμεσα στους χρήστες του SuSE Linux. Περιλαμβάνει προγράμματα συμβατά με MS Word και Excel, και πολλά άλλα.
Υπάρχουν άλλα μικρότερα έργα που ασχολούνται με τμήματα του MS Office, όπως το Abiword και το MS Wordview που είναι συμβατά με το MS Word, και το Gnumeric για την διαχείριση αρχείων συμβατών με το Excel.
Οι τρέχουσες διανομές έχουν όλα τα απαραίτητα εργαλεία. Παρέχουν όλες τις απαραίτητες οδηγίες και μενού Help, και έτσι δεν τις συζητάμε σε λεπτομέρειες. Ορισμένοι ιστοτόποι είναι
Freshmeat και SourceForge για πολλά άλλα έργα.
Προσπαθήστε να περιορίσετε τη χρήση των τεκμηρίων γραφείου εκεί που πρέπει: στο γραφείο.
Ένα παράδειγμα: οι περισσότεροι χρήστες Linux εκνευρίζονται όταν λαμβάνουν ένα mail που λέει κάτι σαν: "Hello, I want to tell you something, see attach", και μετά ένα συνημμένο που είναι ένα τεκμήριο MS Word συμβατό με κάτι σαν: "Hello my friend, how is your new job going and will you have time to have lunch with me tomorrow?" Επίσης είναι κακή ιδέα να επισυνάπτετε την υπογραφή σας σε ένα τέτοιο αρχείο, για παράδειγμα. Αν θέλετε να υπογράψετε μηνύματα και αρχεία, χρησιμοποιείστε GPG, το PGP-συμβατό GNU Privacy Guard ή SSL (Secure Socket Layer) πιστοποιητικό.
Αυτοί οι χρήστες δεν ενοχλούνται γιατί δεν μπορούν να διαβάσουν αυτά τα κείμενα, ή γιατί τα προγράμματα MS Windows δημιουργούν πολύ μεγάλα αρχεία, αλλά περισσότερο γιατί υποχρεώνονται εγκαταστήσουν και να χρησιμοποιήσουν αυτά τα προγράμματα .
Στο επόμενο κεφάλαιο, που αρχίζουμε να διαμορφώνουμε το περιβάλλον μας, και αυτό μπορεί να περιλαμβάνει τροποποίηση διαφόρων τύπων αρχείων που καθορίζουν τη συμπεριφορά ενός προγράμματος.
Μη χρησιμοποιείτε εφαρμογές γραφείου για τη τροποποίηση αυτών των αρχείων!
Οι εφαρμογές γραφείου θα προσθέσουν αρκετές γραμμές κώδικα στα αρχεία, που ορίζουν το μορφότυπο του αρχείου και τους τύπους των γραμματοσειρών. Αυτές οι γραμμές δεν θα διερμηνευτούν σωστά από τα προγράμματα που εξαρτώνται από αυτά τα αρχεία. Σε μερικές περιπτώσεις, μπορείτε να αποθηκεύσετε απλό κείμενο μέσω εφαρμογής γραφείου, αλλά αργά ή γρήγορα θα βρεθείτε σε δύσκολη θέση.
Αν πραγματικά επιμένετε, προσπαθήστε τους συντάκτες gedit, kedit, kwrite ή xedit; tαυτά τα προγράμματα επεξεργάζονται καθαρά αρχεία κειμένου, αυτό δηλαδή που χρειαζόμαστε. Αλλά, και πάλι είναι προτιμότερο να μάθετε να χρησιμοποιείτε ο vim ή ο emacs.
Μια αποδεκτή εναλλακτική είναι ο gvim (vim-gnome στο repository Ubuntu), η Gnome έκδοση του vim. Πάλι θα χρειάζεστε εντολές του vi, αλλά αν κολλήσετε μπορείτε να ψάξετε στα menu.
Σε αυτό το κεφάλαιο μάθαμε να χρησιμοποιούμε ένα συντάκτη κειμένου. Αν και εξαρτάται από τις προσωπικές σας προτιμήσεις ποιόν συντάκτη θα χρησιμοποιήσετε, είναι αναγκαίο να μάθετε καλά τουλάχιστο ένα συντάκτη κειμένου.
Ο συντάκτης vi είναι διαθέσιμος σε κάθε σύστημα UNIX.
Οι περισσότερες διανομές Linux περιλαμβάνουν πακέτα λογισμικού γραφείου και ένα γραφικό συντάκτη κειμένου.
Αυτό το κεφάλαιο έχει μόνο μια άσκηση: ξεκινήστε την εκπαιδευτική εισαγωγή στο Vim με την εντολή vimtutor σε ένα παράθυρο τερματικού και εκτελέστε όλες τις ασκήσεις.
Εναλλακτικά ξεκινήστε το emacs και πληκτρολογήστε Ctrl+H και μετά T για να καλέσετε την εκπαιδευτική εισαγωγή στο Emacs.
Η εξάσκηση είναι ο μόνος τρόπος να μάθετε!
Αυτό το κεφάλαιο αναφέρεται στη διαμόρφωση του περιβάλλοντός σας. Τώρα που γνωρίζετε τη χρήση ενός συντάκτη, μπορείτε να τροποποιήσετε διάφορα αρχεία που θα σας βοηθήσουν να ελέγξετε το περιβάλλον σας. Στο κεφάλαιο αυτό θα μάθετε για:
Οργάνωση του περιβάλλοντος
Συνηθισμένα αρχεία ρυθμίσεων
Διαμόρφωση φλοιού
Διαμόρφωση προτροπής
Διαμόρφωση γραφικού περιβάλλοντος
Εφαρμογές ήχου και εικόνας
Διαχειριστές οθόνης και παραθύρων
Πώς δουλεύει το σύστημα διακομιστή X
Ρυθμίσεις γλώσσας και γραμματοσειράς
Εγκατάσταση νέου λογισμικού
Ενημέρωση υπαρχόντων πακέτων λογισμικού
Όπως είπαμε και νωρίτερα, είναι αρκετά εύκολο να κάνετε το σύστημα άνω-κάτω. Δεν μπορούμε να δώσουμε αρκετή έμφαση στο πόσο σημαντικό είναι να κρατήσουμε το σύστημα τακτοποιημένο. Αν το συνηθίσετε από την αρχή, θα σαν γίνει μια καλή συνήθεια που θα σας σώσει πολύ χρόνο όταν προγραμματίζετε ή διαχειρίζεστε συστήματα Linux ή UNIX. Να μερικοί τρόποι να κάνετε τη ζωή σας ευκολότερη:
Δημιουργείστε ένα κατάλογο bin για τα εκτελέσιμα αρχεία σας και τα σενάριά σας.
Οργανώστε τα μη-εκτελέσιμα αρχεία σας σε κατάλληλους καταλόγους, δημιουργείστε όσους καταλόγους νομίζετε. Για παράδειγμα καταλόγους για εικόνες, κείμενα, έργα, μεταφορτωμένα αρχεία, φύλα λογισμού, προσωπικά αρχεία, κλπ.
Καταστήστε τους καταλόγους σας ιδιωτικούς με την εντολή chmod 700 dirname.
Δώστε στα αρχεία σας ονόματα με σημασία, όπως Complaint_to_the_prime_minister_050302 αντί για letter1.
Σε μερικά συστήματα, το σύστημα quota (μεριδίων) ή οι περιορισμοί στη χωρητικότητα του δίσκου σας μπορεί να σας εξαναγκάσουν να καθαρίζετε τον οικείο σας κατάλογο από καιρό σε καιρό,. Η ενότητα αυτή συζητά μερικές μεθόδους, εκτός από τη χρήση της εντολής rm, για να ανακτήσετε χώρο στο δίσκο.
Κατ' αρχήν εκτελέστε την εντολή quota -v για να δείτε πόσος ελεύθερος χώρος σας μένει (αν βρίσκεστε σύστημα quota). (Διαφορετικά ελέγξτε το δίσκο με την εντολή df, ΣτΜ.).
Μερικές φορές το περιεχόμενο ενός αρχείου δεν σας ενδιαφέρει, αλλά χρειάζεστε το όνομα του αρχείου σαν σήμανση (για παράδειγμα, χρειάζεστε μόνο την ημερομηνία-ώρα ενός αρχείου, μια υπενθύμιση οτι ήταν εκεί ή οτι πρέπει να είναι εκεί στο μέλλον). Αυτό μπορεί να γίνει στους φλοιούς Bourne και Bash με μια κενή ανακατεύθυσνη:
andy:~> cat wishlist > placeholder andy:~> ls -la placeholder -rw-rw-r-- 1 andy andy 200 Jun 12 13:34 placeholder andy:~> > placeholder andy:~> ls -la placeholder -rw-rw-r-- 1 andy andy 0 Jun 12 13:35 placeholder |
Η διαδικασία αδειάσματος ενός ενός υπάρχοντος αρχείου λέγεται αποκοπή (truncating).
Για τη δημιουργία ενός νέου άδειου αρχείου, μπορούμε να χρησιμοποιήσουμε την εντολή touch. Σε ένα υπάρχον αρχείο, η touch απλά ενημερώνει την ημερομηνία-ώρα. Οι σελίδες τεκμηρίωσης για τη touch έχει περισσότερες λεπτομέρειες.
Για να αδειάσετε "σχεδόν" ένα αρχείο, χρησιμοποιείστε την εντολή tail. Έστω οτι ο χρήστης andy έχει ένα αρχείο wishlist από το οποίο θέλει να κρατήσει μόνο 5 τις τελευταίες γραμμές:
andy:~> tail -5 wishlist > newlist andy:~> cat newlist > wishlist andy:~> rm newlist |
Μερικά προγράμματα Linux επιμένουν να γράφουν κάθε είδους έξοδο σε αρχεία καταγραφής. Συνήθως υπάρχουν επιλογές στο επίπεδο εκσφαλμάτωσης του προγράμματος ώστε να καταγράφονται μόνο τα σφάλματα, ή να καταγράφεται η ελάχιστη πληροφορία. Αλλά και πάλι μπορεί να μη χρειάζεστε αυτά τα αρχεία. Παρακάτω δίνονται μερικοί τρόποι να απαλλαγείτε από τα αρχεία καταγραφής ή να περιορίσετε το μέγεθός τους:
Προσπαθήστε να διαγράψετε τα αρχεία καταγραφής όταν το πρόγραμμα δεν εκτελείται, αν είστε σίγουροι οτι δεν χρειάζεστε αυτά τα αρχεία. Μερικά προγράμματα μπορεί, όταν επαν-εκκινήσουν, να μην καταγράψουν αν δουν οτι δεν υπάρχει αρχείο καταγραφής.
Αν διαγράψετε αρχείο καταγραφής και το πρόγραμμα το ξαναδημιουργήσει, διαβάστε τη τεκμηρίωση του συγκεκριμένου προγράμματος για να δείτε να μπορείτε να σταματήσετε τη δημιουργία αρχείων καταγραφής.
Προσπαθήστε να κάνετε μικρότερα τα αρχεία καταγραφής, καταγράφοντας μόνο την ενδιαφέρουσα ή σημαντική πληροφορία.
Προσπαθήστε να αντικαταστήσετε το αρχείο καταγραφής με συμβολικό σύνδεσμο στο /dev/null; αν είστε τυχεροί, το πρόγραμμα δεν θα παραπονεθεί. Μη κάνετε κάτι τέτοιο με τα αρχεία καταγραφής του συστήματος ή προγραμμάτων που εκτελούνται από το cron (δες Κεφάλαιο 4). Αυτά τα προγράμματα μπορεί να αντικαταστήσουν το συμβολικό σύνδεσμο με ένα μικρό αρχείο που θα αρχίσει πάλι να μεγαλώνει.
Καθαρίζετε συχνά το κατάλογο mailbox, κάνετε υπο-καταλόγους ή ανακατευθύνετε το ταχυδρομείο με το procmail (δες στις σελίδες τεκμηρίωσης) ή με τα φίλτρα της εφαρμογής ταχυδρομείο που προτιμάτε. Αν έχετε κάδο αποριμμάτων, καθαρίζετε τον συχνά .
Για την ανακατεύθυνση του ταχυδρομείου, χρησιμοποιείστε το αρχείο .forward στον οικείο κατάλογό σας. Η υπηρεσία ταχυδρομείου του Linux εξετάζει αυτό το αρχείο όταν διανέμει τοπικό ταχυδρομείο. Το περιεχόμενο του αρχείου καθορίζει τι θα κάνει η υπηρεσία ταχυδρομείου. Μπορεί να περιλαμβάνει μια γραμμή που περιλαμβάνει μια πλήρη διεύθυνση E-mail. Σε αυτή τη περίπτωση το σύστημα θα στείλει όλο το ταχυδρομείο σε αυτή τη διεύθυνση. Για παράδειγμα, όταν νοικιάσετε ένα ιστοτόπο, μπορεί να θέλετε να προωθήσετε τα μηνύματα του webmaster στο δικό σας λογαριασμό, για να μη χρησιμοποιείτε νοικιασμένο χώρο δίσκου. Το .forward του θα μοιάζει κάπως έτσι:
webmaster@www ~/> cat .forward mike@pandora.be |
Η χρήση της προώθησης ταχυδρομείου μπορεί να σας βοηθήσει να μη διαβάζετε πολλά διαφορετικά mailboxes. Μπορείτε να συλλέξετε σε ένα σημείο τα μηνύματα από όλες τις διευθύνσεις σας.
Όταν αλλάζετε σύστημα μπορείτε να ζητήσετε από τον διαχειριστή συστήματος να ορίσει ένα σημείο προώθησης του ταχυδρομείου σας από τον παλιό λογαριασμό σας στο καινούργιο.
Όταν διάφοροι χρήστες χρειάζονατι πρόσβαση στο ίδιο αρχείο ή πρόγραμμα, όταν το όνομα του αρχείου είναι πολύ μεγάλο ή δύσκολο να το θυμηθούμε, μπορούμε να χρησιμοποιήσουμε ένα συμβολικό σύνδεσμο αντί για αντίγραφο.
Μπορούμε να έχουμε πολλούς συμβολικούς συνδέσμους με διαφορετικά ονόματα, για παράδειγμα ένας σύνδεσμος στο κατάλογο ενός χρήστη μπορεί να λέγεται monfichier, και στο κατάλογο ενός άλλου ο σύνδεσμος να λέγεται mylink. Πολλαπλοί σύνδεσμοι (διαφορετικά ονόματα) προς το ίδιο αρχείο μπορούν να υπάρχουν και στον ίδιο κατάλογο. Αυτό συνήθως συμβαίνει στο κατάλογο /lib :όταν εισάγετε την εντολή:
ls -l /lib
θα δείτε οτι πολλοί σύνδεσμοι δείχνουν προς τα ίδια αρχεία. Αυτοί δημιουργούνται έτσι ώστε τα προγράμματα που αναζητούν συγκεκριμένο όνομα δεν θα σταματήσουν εξ' αιτίας πιθανής μετονομασίας.
Ο φλοιός περιέχει μια ενσωματωμένη εντολή που περιορίζει τα μεγέθη των αρχείων, η ulimit, που μπορεί επίσης να χρησιμοποιηθεί για την εμφάνιση περιορισμών στους πόρους του συστήματος:
cindy:~> ulimit -a core file size (blocks) 0 data seg size (kbytes) unlimited file size (blocks) unlimited max locked memory (kbytes) unlimited max memory size (kbytes) unlimited open files 1024 pipe size (512 bytes) 8 stack size (kbytes) 8192 cpu time (seconds) unlimited max user processes 512 virtual memory (kbytes) unlimited |
Η Cindy δεν είναι προγραμματίστρια και δεν ενδιαφέρεται για τα core dumps, που είναι χρήσιμα για εκσφαλμάτωση προγραμμάτων. Αν όντως χρειάζεστε τα core dumps, μπορείτε να ορίσετε το μέγεθός τους με την εντολή ulimit. Οι σελίδες τεκμηρίωσης του bash έχουν λεπτομερείς πληροφορίες.
Core dump? |
|
---|---|
|
Ένα αρχείο με το όνομα core ή απεικόνιση μνήμης (core dump) δημιουργείται μερικές φορές όταν κάτι πάει στραβά κατά την εκτέλεση ενός προγράμματος. Το αρχείο core περιέχει ένα αντίγραφο της μνήμης εργασίας (workspace) του προγράμματος την στιγμή που ανέκυψε το σφάλμα. Το αρχείο μπορεί να διαβαστεί μέσω προγραμμάτων εκσφαλμάτωσης. |
Τα συμπιεσμένα αρχεία είναι χρήσιμε γιατί καταλαμβάνουν λιγότερο χώρο στο σκληρό δίσκο. Ένα άλλο πλεονέκτημα είναι οτι απαιτείται μικρότερο εύρος ζώνης για την αποστολή ενός συμπιεσμένου αρχείου μέσω του δικτύου. Πολλά αρχεία, όπως οι σελίδες τεκμηρίωσης (man, Info) είναι αποθηκευμένες στο σύστημά σας σε συμπιεσμένη μορφή. Βέβαια, η αποσυμπίεση και επανα-συμπίεση στο δίσκο απαιτεί αρκετό χρόνο. Οι περισσότεροι δεν θα ήθελαν να εκτελούν αυτοί τη διαδικασία συνέχεια, μόνοι τους. Πιθανότατα θα ξεχνούσαν να επανα-συμπιέσουν το αρχείο τεκμηρίωσης μετά την ανάγνωση.
Γι' αυτό υπάρχουν εργαλεία που εργάζονται με συμπιεσμένα αρχεία, απο-συμπιέζοντας κατευθείαν στη κύρια μνήμη. Το συμπιεσμένο αρχείο μένει στο δίσκο σας άθικτο, και δεν δημιουργείται απο-συμπιεσμένο αρχείο στο δίσκο. Τα περισσότερα συστήματα υποστηρίζουν εργαλεία όπως τα zgrep, zcat, bzless και άλλα που αποτρέπουν τη περιττή απο-συμπίεση/συμπίεση. Δείτε το κατάλογο εκτελέσιμων του συστήματός σας και τις σελίδες τεκμηρίωσης.
Δείτε το Κεφάλαιο 9 για περισσότερα σχετικά με τη συμπίεση αρχείων και τη δημιουργία αρχειοθηκών (archives).
Ήδη έχουμε αναφέρει μερικές μεταβλητές περιβάλλοντος, όπως τις PATH και HOME. Μέχρι τώρα, είδαμε μόνο λίγα παραδείγματα όπου οι μεταβλητές αυτές εξυπηρετούν συγκεκριμένους σκοπούς του φλοιού. Αλλά υπάρχουν πολλές άλλες υπηρεσίες του Linux που χρειάζονται τέτοιες πληροφορίες για να λειτουργήσουν σωστά.
Τι άλλες πληροφορίες χρειάζονται τα προγράμματα, εκτός από τις διαδρομές και τον οικείο κατάλογο;
Πολλά προγράμματα θέλουν να ξέρουν τον τύπο του τερματικού που χρησιμοποιείτε, αυτή η πληροφορία αποθηκεύεται στη μεταβλητή TERM. Στη κατάσταση κειμένου, μάλλον θα είναι η προσομοίωση τερματικού linux, σε κατάσταση γραφικών, πιθανότατα θα χρησιμοποιείτε τερματικό Χ, xterm. Πολλά προγράμματα θέλουν να ξέρουν ποιος είναι ο προτιμώμενος συντάκτης σας, σε περίπτωση που θέλουν να ξεκινήσουν ένα συντάκτη ως υπο-διεργασία. Ο τύπος φλοιού που χρησιμοποιείτε είναι αποθηκευμένος στη μεταβλητή SHELL, ο τύπος του λειτουργικού συστήματος στο OS κλπ. Μια λίστα των μεταβλητών που είναι ήδη καθορισμένα στη σύνοδό σας φαίνεται με την εντολή printenv.
Ο φλοιός διαχειρίζεται τις μεταβλητές περιβάλλοντος. Σε αντίθεση με τις κανονικές μεταβλητές φλοιού, οι μεταβλητές περιβάλλοντος κληροδοτούνται σε όποιο πρόγραμμα ξεκινήσετε, συμπεριλαμβανομένου και του φλοιού. Οι νέες διεργασίες παίρνουν ένα αντίγραφο αυτών των μεταβλητών, που μπορούν να τις διαβάσουν, να τις τροποποιήσουν και να τις περάσουν στις διεργασίες – παιδιά τους.
Δεν υπάρχει τίποτε ιδιαίτερο με τα ονόματα των μεταβλητών, εκτός από το γεγονός οτι οι πιο συνηθισμένες αναγράφονται με κεφαλαία γράμματα κατά σύμβαση. Μπορείτε να προσθέσετε οτι όνομα θέλετε, αλλά υπάρχουν μερικά ονόματα σημαντικών μεταβλητών που πρέπει να είναι τα ίδια σε κάθε σύστημα Linux, όπως οι PATH και HOME.
Το περιεχόμενο μιας συγκεκριμένης μεταβλητής μπορεί να εμφανιστεί με τη εντολή echo, όπως στα παραδείγματα:
debby:~> echo $PATH /usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:/usr/local/bin debby:~> echo $MANPATH /usr/man:/usr/share/man/:/usr/local/man:/usr/X11R6/man |
Αν θέλετε να αλλάξετε το περιεχόμενο μιας μεταβλητής, ώστε να είναι χρήσιμη στα προγράμματά σας, πρέπει να εξάγετε τη νέα τιμή της μεταβλητής από το περιβάλλον σας στο περιβάλλον του προγράμματος. Ένα συνηθισμένο παράδειγμα είναι η εξαγωγή της μεταβλητής PATH. Η αλλαγή της τιμής γίνεται όπως παρακάτω, ας πούμε για να παίξετε ένα προσομοιωτή πτήσης που βρίσκεται στο /opt/FlightGear/bin:
debby:~> PATH=$PATH:/opt/FlightGear/bin |
Αυτή η εντολή ενημερώνει τον φλοιό να ψάχνει όχι μόνο στις ήδη γνωστές διαδρομές αναζήτησης, $PATH, αλλά επίσης και στο κατάλογο /opt/FlightGear/bin.
Όμως, όσο η νέα τομή της μεταβλητής PATH δεν είναι γνωστή (έξω από το περιβάλλον της τρέχουσας συνόδου του φλοιού σας), τα πράγματα εξακολουθούν να μη δουλεύουν:
debby:~> runfgfs bash: runfgfs: command not found |
Η εξαγωγή των μεταβλητών γίνεται με την ενσωματωμένη εντολή export:
debby:~> export PATH debby:~> runfgfs --flight simulator starts-- |
Στο Bash, συνήθως το κάνουμε σε ένα κομψό βήμα:
export VARIABLE=value
Η ίδια τεχνική χρησιμοποιείται για τη μεταβλητή MANPATH, που λέει στην εντολή man που να ψάχνει για συμπιεσμένες σελίδες τεκμηρίωσης (man pages). Αν το νέο λογισμικό σας εγκατασταθεί σε νέους ή ασυνήθιστους καταλόγους, και η τεκμηρίωση θα βρίσκεται πιθανότατα σε ασυνήθιστο κατάλογο. Αν θέλετε να διαβαετε τις σελίδες τεκμηρίωσης του νέου λογισμικού, θα πρέπει να επεκτείνετε τη μεταβλητή MANPATH:
debby:~> export MANPATH=$MANPATH:/opt/FlightGear/man debby:~> echo $MANPATH /usr/man:/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/FlightGear/man |
Μπορείτε να αποφύγετε την εκ νέου πληκτρολόγηση της εντολής κάθε φορά που ξεκινάτε νέα σύνοδο φλοιού, αν την προσθέστε στα αρχεία ρύθμισης φλοιού, δείτε Ενότητα 7.2.2.
Ο ακόλουθος πίνακας δίνει μια σύνοψη των πιο συνηθισμένων δεσμευμένων μεταβλητών:
Πίνακας 7-1. Συνήθεις μεταβλητές περιβάλλοντος
Όνομα μεταβλητής |
Αποθηκευμένη πληροφορία |
---|---|
DISPLAY |
ταυτοποίηση του διακομιστή απεικόνισης (display server) στο σύστημα X Window |
DOMAIN |
όνομα πεδίου Διαδικτύου (domain name) |
EDITOR |
αποθηκεύει τον βασικό συντάκτη κειμένου |
HISTSIZE |
μέγεθος αρχείου ιστορικού του φλοιού σε αριθμό γραμμών |
HOME |
διαδρομή οικείου καταλόγου |
HOSTNAME |
όνομα τοπικού υπολογιστή |
INPUTRC |
διαδρομή του αρχείου ορισμού συσκευών εισόδου, όπως πληκτρολόγιο |
LANG |
προτιμώμενη γλώσσα |
LD_LIBRARY_PATH |
διαδρομή αναζήτησης βιβλιοθηκών |
LOGNAME |
όνομα σύνδεσης (login) |
|
διαδρομή του καταλόγου εισερχόμενου ταχυδρομείου |
MANPATH |
διαδρομή αναζήτησης σελίδων τεκμηρίωσης (man) |
OS |
περιγραφή λειτουργικού συστήματος |
OSTYPE |
και άλλες πληροφορίες, όπως έκδοση κλπ. |
PAGER |
σελιδοποιητής ανάγνωσης, που χρησιμοποιείται από προγράμματα όπως το man. |
PATH |
διαδρομή αναζήτησης για εντολές |
PS1 |
κύρια προτροπή |
PS2 |
δευτερεύουσα προτροπή |
PWD |
τρέχων κατάλογος εργασίας |
SHELL |
τρέχων φλοιός |
TERM |
τύπος τερματικού |
UID |
αριθμός ταυτότητας χρήστης (user ID) |
USER(NAME) |
όνομα χρήστη |
VISUAL |
βασικός συντάκτης κειμένου πλήρους οθόνης |
XENVIRONMENT |
διαδρομή προσωπικών ρυθμίσεων για τη συμπεριφορά των Χ Windows |
XFILESEARCHPATH |
διαδρομή αναζήτησης βιβλιοθηκών γραφικών |
Πολλές από τις μεταβλητές δεν είναι μόνο δεσμευμένες αλλά και προκαθορισμένες, μέσω αρχείων διαμόρφωσης. Το συζητούμε στην επόμενη ενότητα
Όταν εισάγετε την εντολή ls -al στον οικείο σας κατάλογο, εμφανίζεται μια μεγάλη λίστα αρχείων, πολλά από τα οποία αρχίζουν με τελεία, μεταξύ των οποίων μερικά που αρχίζουν με . και τελειώνουν με rc. Στη περίπτωση του bash, το αρχείο λέγεται .bashrc. Πρόκειται για το τοπικό αντίστοιχο του αρχείου διαμόρφωσης φλοιού σε επίπεδο συστήματος /etc/bashrc.
Όταν συνδέεστε στο σύστημα με διαλογικό φλοιό, η login εκτελεί τη ταυτοποίηση, ρυθμίζει αρχικά περιβάλλον (με βάση το αρχείο /etc/passwd)και καλεί το φλοιό. Στη περίπτωση του bash, το επόμενο βήμα είναι η ανάγνωση του γενικού προφίλ από το αρχείο /etc/profile αν υπάρχει. Στη συνέχεια το bash αναζητά τα αρχεία ~/.bash_profile, ~/.bash_login και ~/.profile, με αυτή τη σειρά , και εκτελεί τις εντολές που περιέχονται σε αυτά, αν υπάρχουν. Αν κανένα αρχείο δεν υπάρχει, εφαρμόζεται το αρχείο /etc/bashrc.
Όταν υπάρχει φλοιός σύνδεσης, κατά την αποσύνδεση το bash διαβάζει και εκτελεί τις εντολές από το αρχείο ~/.bash_logout, αν αυτό υπάρχει.
Η διαδικασία αυτή εξηγείται λεπτομερώς στις σελίδες τεκμηρίωσης των login και bash.
Ας δούμε μερικά αρχεία διαμόρφωσης. Πρώτα διαβάζεται το αρχείο /etc/profile, όπου ρυθμίζονται μεταβλητές όπως η PATH, USER και HOSTNAME:
debby:~> cat /etc/profile # /etc/profile # System wide environment and startup programs, for login setup # Functions and aliases go in /etc/bashrc # Path manipulation if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; then PATH=/sbin:$PATH fi if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; then PATH=/usr/sbin:$PATH fi if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/local/sbin" then PATH=/usr/local/sbin:$PATH fi if ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; then PATH="$PATH:/usr/X11R6/bin" fi |
Αυτές οι γραμμές ρυθμίζουν τη διαδρομή αναζήτησης εντολών: αν ο φλοιός σύνδεσης ανήκει στον υπερ-χρήστη (root) με αριθμό ταυτότητας (user ID) 0, ελέγχεται αν οι κατάλογοι /sbin, /usr/sbin και /usr/local/sbin είναι στη διαδρομή. Αν όχι προστίθενται. Επίσης, για όλους τους χρήστες προστίθεται στη διαδρομή ο κατάλογος /usr/X11R6/bin αν δεν υπάρχει ήδη.
# No core files by default ulimit -S -c 0 > /dev/null 2>&1 |
'Ολα τα άχρηστα πάνε στο /dev/null εκτός αν ο χρήστης αλλάξει αυτή τη ρύθμιση.
USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" HOSTNAME=`/bin/hostname` HISTSIZE=1000 |
Εδώ γενικές μεταβλητές λαμβάνουν κατάλληλες τιμές.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then INPUTRC=/etc/inputrc fi |
Αν η μεταβλητή INPUTRC δεν έχει ρυθμιστεί, και δεν υπάρχει αρχείο .inputrc στον οικείο κατάλογο, φορτώνεται το προεπιλεγμένο αρχείο ελέγχου εισόδου.
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC |
Όλες οι μεταβλητές εξάγονται, ώστε να είναι διαθέσιμες σε άλλα προγράμματα που ζητούν πληροφορίες για το περιβάλλον σας.
for i in /etc/profile.d/*.sh ; do if [ -r $i ]; then . $i fi done unset i |
Όλα τα σενάρια φλοιού στο κατάλογο /etc/profile.d διαβάζονται και εκτελούνται. Κάνουν πράγματα όπως ενεργοποίηση του color-ls, συσχετίζει το vi με το vim, θέτει τοπικές ρυθμίσεις κλπ. Η προσωρινή μεταβλητή i δεν ρυθμίζεται για να μη διαταραχθεί η συμπεριφορά του φλοιού αργότερα.
Μετά το bash ψάχνει για αρχείο .bash_profile στον οικείο κατάλογο του χρήστη:
debby:~> cat .bash_profile ################################################################# # # # .bash_profile file # # # # Executed from the bash shell when you log in. # # # ################################################################# source ~/.bashrc source ~/.bash_login |
Αυτό το πολύ απλό αρχείο λέει στο φλοιό να διαβάσει πρώτα το ~/.bashrc και μετά το ~/.bash_login. Θα συναντήσετε την ενσωματωμένη εντολή φλοιού source: χρησιμοποιείται για να εφαρμόσει αλλαγές διαμόρφωσης στο τρέχον περιβάλλον.
Το αρχείο ~/.bash_login ορίζει την προεπιλεγμένη ρύθμιση αδειών πρόσβασης των αρχείων θέτοντας τη τιμή της umask, δείτε Ενότητα 3.4.2.2. Το αρχείο ~/.bashrc χρησιμοποιείται μια ομάδα συνωνύμων ειδικά για τον χρήστη, υπηρεσίες και προσωπικές μεταβλητές περιβάλλοντος. Πρώτα διαβάζει το /etc/bashrc, που περιγράφει τη προεπιλεγμένη προτροπή (PS1) και η προεπιλεγμένη τιμή umask. Μετά μπορείτε να προσθέσετε τις δικές σας ρυθμίσεις. Αν δεν υπάρχει το αρχείο ~/.bashrc, εξ' ορισμού διαβάζεται το /etc/bashrc.
Το αρχείο /etc/bashrc μοιάζει κάπως έτσι:
debby:~> cat /etc/bashrc # /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile # by default, we want this to get set. # Even for non-interactive, non-login shells. if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; then umask 002 else umask 022 fi |
Αυτές οι γραμμές θέτουν τη τιμή της umask . Μετά, ανάλογα με το φλοιό, ρυθμίζεται η προτροπή:
# are we an interactive shell? if [ "$PS1" ]; then if [ -x /usr/bin/tput ]; then if [ "x`tput kbs`" != "x" ]; then # We can't do this with "dumb" terminal stty erase `tput kbs` elif [ -x /usr/bin/wc ]; then if [ "`tput kbs|wc -c `" -gt 0 ]; then # We can't do this with "dumb" terminal stty erase `tput kbs` fi fi fi case $TERM in xterm*) if [ -e /etc/sysconfig/bash-prompt-xterm ]; then PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm else PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\ ${PWD/$HOME/~}\007"' fi ;; *) [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\ /etc/sysconfig/bash-prompt-default ;; esac [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " if [ "x$SHLVL" != "x1" ]; then # We're not a login shell for i in /etc/profile.d/*.sh; do if [ -x $i ]; then . $i fi done fi fi |
Κατά την αποσύνδεση, εκτελούνται οι εντολές στο ~/.bash_logout, που μπορούν λόγου χάρη να καθαρίσουν το τερματικό, ώστε ο επόμενος χρήστης να παραλαμβάνει άδεια οθόνη:
debby:~> cat .bash_logout # ~/.bash_logout clear |
Θα δούμε από πιο κοντά πως δουλεύουν αυτά τα σενάρια στην επόμενη ενότητα. Καλό είναι να έχετε πρόχειρη τη τεκμηρίωση info bash.
Η προτροπή του Bash μπορεί να κάνει αρκετά περισσότερα από το να εμφανίζει απλή πληροφορία όπως το όνομα του χρήστη, το όνομα του υπολογιστή και κάποια ένδειξη του τρέχοντος καταλόγου εργασίας. Μπορούμε να προσθέσουμε πληροφορία όπως ημερομηνία και ώρα, αριθμό συνδεδεμένων χρηστών κλπ.
Πριν ξεκινήσουμε, όμως, ας αποθηκεύσουμε τη τρέχουσα προτροπή σε μια άλλη μεταβλητή περιβάλλοντος:
[jerry@nowhere jerry]$ MYPROMPT=$PS1 [jerry@nowhere jerry]$ echo $MYPROMPT [\u@\h \W]\$ [jerry@nowhere jerry]$ |
Αν τώρα αλλάξουμε τη προτροπή μας, δίνοντας ας πούμε τη εντολή PS1="->", μπορούμε πάντα να επιστρέψουμε στην αρχική προτροπή με την εντολή PS1=$MYPROMPT. Φυσικά, θα ανακτήσετε την αρχική προτροπή σας αν αποσυνδεθείτε και επανασυνδεθείτε, αρκεί να μην έχετε τροποποιήσει ανάλογα και το αρχείο διαμόρφωσης του φλοιού.
Για να καταλάβουε τις προτροπές και τις ακολουθίες διαφυγής, αναφερόμαστε στις σελίδες τεκμηρίωσης του Bash.
export PS1="[\t \j] "
Εμφανίζει ώρα και αριθμό εκτελούμενων εργασιών
export PS1="[\d][\u@\h \w] : "
Εμφανίζει ημερομηνία, ώρα, όνομα χρήστη, όνομα υπολογιστή, και τρέχοντα κατάλογο. Σημειώστε οτι το \W εμφανίζει μόνο το τελευταίο κατάλογο, όχι όλη τη διαδρομή.
export PS1="{\!} "
Εμφανίζει αριθμό ιστορικού εντολών.
export PS1="\[\033[1;35m\]\u@\h\[\033[0m\] "
Εμφανίζει user@host σε ροζ.
export PS1="\[\033[1;35m\]\u\[\033[0m\] \[\033[1;34m\]\w\[\033[0m\] "
Εμφανίζει το όνομα σε ροζ και τον τρέχοντα κατάλογο σε μπλέ.
export PS1="\[\033[1;44m\]$USER is in \w\[\033[0m\] "
Προτροπή για ανθρώπους που δυσκολεύονται να ξεχωρίσουν ανάμεσα στη προτροπή και το τι πληκτρολογούν.
export PS1="\[\033[4;34m\]\u@\h \w \[\033[0m\]"
Υπογραμμισμένη προτροπή.
export PS1="\[\033[7;34m\]\u@\h \w \[\033[0m\] "
Άσπροι χαρακτήρες σε μπλε φόντο.
export PS1="\[\033[3;35m\]\u@\h \w \[\033[0m\]\a"
Ροζ προτροπή σε ανοικτότερο φόντο που σε ειδοποιεί για το τερματισμό της εντολής.
export PS1=...
Οι μεταβλητές εξάγονται ώστε οι μετέπειτα εκτελούμενες εντολές να γνωρίζουν την αλλαγή στο περιβάλλον. Η μόνιμη ρύθμιση της προτροπής καλό είναι να τοποθετείται αρχείο διαμόρφωσης ~/.bashrc.
Αν θέλετε, οι προτροπές μπορούν να εκτελούν σενάρια φλοιού και να συμπεριφέρονται διαφορετικά υπό διαφορετικές συνθήκες. Μπορείτε ακόμη να βάλετε τη προτροπή να παίζει μουσική κάθε φορά που εισάγετε μια εντολή, αλλά γρήγορα γίνεται βαρετό. Για περισσότερες πληροφορίες δείτε το Bash-Prompt HOWTO.
Ένα σενάριο φλοιού, όπως είδαμε στα παραδείγματα των αρχείων ρύθμισης φλοιού, είναι ένα αρχείο κειμένου που περιέχει εντολές φλοιού. Όταν ένα τέτοιο αρχείο χρησιμοποιείται ως πρώτο όρισμα (εκτός των επιλογών) όταν καλούμε το Bash, και δεν προηγείται επιλογή -c ή -s, το Bash διαβάζει, εκτελεί εντολές από το αρχείο και τερματίζει. Αυτός ο τρόπος λειτουργίας δημιουργεί ένα μη-διαλογικό φλοιό. Όταν το εκτελεί ένα σενάριο φλοιού, θέτει στην ειδική παράμετρο 0 το όνομα του αρχείου, αντί για το όνομα του φλοιού, και, αν υπάρχουν άλλα ορίσματα. τίθενται ως παράμετροι θέσης (positional parameters). Αλλιώς τέτοιοι παράμετροι δεν τίθενται.
Ένα σενάριο φλοιού μπορεί να γίνει εκτελέσιμο αν με την εντολή chmod μεταβληθεί η σχετική άδειε. Όταν το Bash βρει ένα τέτοιο αρχείο καθώς αναζητά μια εντολή μέσω της PATH, τότε διακλαδίζει ένα υπο-φλοιό που εκτελεί το αρχείο. Με άλλα λόγια η εκτέλεση του
filename ARGUMENTS
ισοδυναμεί με την εκτέλεση του
bash filename ARGUMENTS
αν το "filename" είναι ένα εκτελέσιμο σενάριο φλοιού. Ο υπο-φλοιός ξανα-αρχικοποιείται, ώστε στη πράξη είναι σαν να έχει κληθεί ένας νέο φλοιός για να διερμηνεύσει το σενάριο, με την εξαίρεση οτι οι διαδρομές των εντολών που είναι γνωστές στο φλοιό-γονέα (δες τεκμηρίωση hash) διατηρούνται και στο φλοιό-παιδί.
Οι περισσότερες εκδόσεις του UNIX περιλαμβάνουν τα παραπάνω στο μηχανισμό εκτέλεσης των εντολών του λειτουργικού συστήματος. Αν η πρώτη γραμμή του σεναρίου ξεκινά με τους δύο χαρακτήρες "#!", η υπόλοιπη γραμμή καθορίζει τη διαδρομή του διερμηνέα του σεναρίου. Έτσι μπορείτε να επιλέξετε κάποιο από τους διερμηνείς bash, awk, perl, python ή κάποιον άλλο και να γράψετε το υπόλοιπο σενάριο σε αυτή τη γλώσσα.
Τα ορίσματα προς τον διερμηνέα περιλαμβάνουν το όνομα του διερμηνέα, το όνομα του αρχείου σεναρίου, και στη συνέχεια τα υπόλοιπα ορίσματα της γραμμής κλήσης (αν υπάρχουν). Το Bash εκτελεί αυτές τις ενέργειες αν δεν καλύπτονται από το λειτουργικό σύστημα.
Τα σενάρια Bash συχνά ξεκινούν με
#! /bin/bash |
(υποθέτοντας οτι το Bash έχει εγκατασταθεί στο /bin), διασφαλίζοντας έτσι οτι το σενάριο θα διερμηνευτεί από φλοιό Bashμ ακόμη και αν χρησιμοποιείται άλλος φλοιός.
Ένα πολύ απλό σενάριο, αποτελούμενο από μια μόνο εντολή, που λέει hello στο χρήστη:
[jerry@nowhere ~] cat hello.sh #!/bin/bash echo "Hello $USER" |
Υπάρχει μόνο η εντολή echo, που χρησιμοποιεί την τιμή ($) της μεταβλητής περιβάλλοντος USER για να εμφανίσει το όνομα του χρήστη που εισάγει την ετολή.
Ένα άλλο σενάριο μιας γραμμής, που εμφανίζει τους συνδεδεμένους χρήστες:
#!/bin/bash who | cut -d " " -f 1 | sort -u |
Παρακάτω το σενάριο έχει περισσότερες γραμμές, και αντιγράφει τα αρχεία ενός καταλόγου. Το σενάριο πρώτα κάνει μια λίστα των αρχείων στον τρέχοντα κατάλογο η οποία τοποθετείται στη μεταβλητή LIST. Μετά καθορίζει το όνομα του αντιγράφου κάθε αρχείου, και αντιγράφει το αρχείο. Για κάθε αρχείο, εμφανίζεται ένα μήνυμα:
tille:~> cat bin/makebackupfiles.sh #!/bin/bash # make copies of all files in a directory LIST=`ls` for i in $LIST; do ORIG=$i DEST=$i.old cp $ORIG $DEST echo "copied $i" done |
Αν προσπαθήσετε κάτι σαν mv * *.old θα δείτε οτι δεν δουλεύει, προσπαθήστε το σε μερικά δοκιμαστικά αρχεία. Η εντολή echo προστίθεται για να εμφανίζεται στην οθόνη κάποια δραστηριότητα. Γενικά η echo είναι χρήσιμη ακόμη και αν ένα σενάριο δεν δουλέψει: βάλτε μια τέτοια εντολή μετά κάθε 'ύποπτη' γραμμή σεναρίου και θα βρείτε το πρόβλημα γρήγορα.
Ο κατάλογος /etc/rc.d/init.d περιέχει πολλά παραδείγματα. Ας δούμε ένα σενάριο που ελέγχει τον φανταστικό διακομιστή ICanSeeYou:
#!/bin/sh # description: ICanSeeYou allows you to see networked people # process name: ICanSeeYou # pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid # config: /etc/ICanSeeYou.cfg # Source function library. . /etc/rc.d/init.d/functions # See how (with which arguments) we were called. case "$1" in start) echo -n "Starting ICanSeeYou: " daemon ICanSeeYou echo touch /var/lock/subsys/ICanSeeYou ;; stop) echo -n "Shutting down ICanSeeYou: " killproc ICanSeeYou echo rm -f /var/lock/subsys/ICanSeeYou rm -f /var/run/ICanSeeYou/ICanSeeYou.pid ;; status) status ICanSeeYou ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0 |
Πρώτα, με την εντολή . (τελεία) φορτώνεται ένα σύνολο συναρτήσεων φλοιού, που χρησιμοποιούνται από σχεδόν όλα τα σενάρια φλοιού στο /etc/rc.d/init.d. Μετά εισάγεται μια εντολή case, που ορίζει 4 διαφορετικούς τρόπους εκτέλεσης του σεναρίου. Ένα παράδειγμα είναι το ICanSeeYou start. ίου, με την έκφραση $1.
Όταν το όρισμα δεν είναι συμβατό με τις επιλογές, εκτελείται η προκαθορισμένη περίπτωση, που σημειώνεται με αστερίσκο, και εμφανίζει μήνυμα σφάλματος. Η λίστα της εντολής case τελειώνει με την δήλωση esac. Στη περίπτωση start το πρόγραμμα διακομιστή ξεκινά σαν δαίμονας, λαμβάνοντας έναν αριθμό διεργασίας (process ID) και ένα κλείδωμα. Στη περίπτωση stop, η διεργασία του διακομιστή τερματίζεται, και διαγράφονται ο αριθμός διεργασίας και το κλείδωμα. Επιλογές όπως η daemon, και συναρτήσεις όπως η killproc, ορίζονται στο αρχείο /etc/rc.d/init.d/functions. Αυτές οι ρυθμίσεις είναι ειδικές για τη διανομή του συγκεκριμένου παραδείγματος. Στο δικό σας σύστημα μπορεί τα σενάρια αρχικοποίησης να ορίζουν άλλες συναρτήσεις και επιλογές, ή να μην ορίζουν καθόλου.
Με την επιτυχή εκτέλεση το σενάριο επιστρέφει κωδικό εξόδου 0, ενώ στο σφάλμα επιστρέφει 1.
Αυτό το σενάριο είναι ένα καλό παράδειγμα χρήσης συναρτήσεων, που κάνουν το σενάριο ευανάγνωστο και γρήγορο. Σημειώστε τη χρήση του sh αντί για το bash, ώστε το σενάριο να είναι χρήσιμο σε ευρύτερη γκάμα συστημάτων. Σ' ένα σύστημα Linux, η κλήση του bash ως sh έχει ως αποτέλεσμα την εκτέλεση του φλοιού σε μορφή POSIX-συμβατή.
Οι σελίδες τεκμηρίωσης του bash περιέχουν πληροφορίες για το συνδυασμό εντολών, τους βρόχους for- και while- και τις κανονικές εκφράσεις, καθώς και παραδείγματα. Ένας περιεκτικός οδηγός του Bash για προχωρημένους χρήστες και διαχειριστές συστημάτων, με ασκήσεις, διατίθεται από το συγγραφέα στο http://tille.xalasys.com/training/bash/. Λεπτομερής αναφορά στα χαρακτηριστικά του Bash και σε εφαρμογές στο εγχειρίδιο αναφοράς Advanced Bash Scripting.
Ο μέσος χρήστης μπορεί να μην ενδιαφέρεται ιδιαίτερα για τις ρυθμίσεις σύνδεσης, αλλά το Linux προσφέρει μια ευρεία ποικιλία εντυπωσιακών διαχειριστών παραθύρων και επιφάνειας εργασίας για χρήση του γραφικού περιβάλλοντος X. Η χρήση και η διαμόρφωση των διαχειριστών παραθύρων και επιφανειών εργασίας είναι απλή και μπορεί ακόμη και να μοιάζει με το τυποποιημένο περιβάλλον των MS Windows, MacIntosh ή UNIX CDE, αν και πολλοί χρήστες Linux προτιμούν τους πιο εντυπωσιακούς διαχειριστές παραθύρων και επιφάνειας εργασίας. Δεν θα συζητήσουμε τη συγκεκριμένη διαμόρφωση των χρηστών εδώ. Απλώς πειραματιστείτε και διαβάστε τη τεκμηρίωση μέσω της ενσωματωμένης Βοήθειας που παρέχουν αυτοί οι διαχειριστές και θα τα καταφέρετε.
Εντούτοις, θα ρίξουμε μια πιο κοντινή ματιά στο γραφικό περιβάλλον υποδομής Χ.
Το σύστημα παραθύρων Χ είναι ένα διαφανές-στο-δίκτυο σύστημα παραθύρων που εκτελείται σε ένα ευρύ φάσμα των υπολογιστών. Οι διακομιστές του συστήματος παραθύρων Χ εκτελούνται σε υπολογιστές με δυαδική αναπαράσταση εικόνας (bitmap displays). Ο διακομιστής Χ διανέμει τις εισόδους των χρηστών και δέχεται αιτήματα εξόδου από διάφορα προγράμματα πελατών μέσω ποικίλων καναλιών δια-διεργασιακής επικοινωνίας. Αν και συνήθως τα προγράμματα πελατών εκτελούνται στον ίδιο υπολογιστή με τον διακομιστή, είναι δυνατό οι πελάτες να εκτελούντα διάφανα από άλλους υπολογιστές (συμπεριλαμβανομένων υπολογιστών με διαφορετικές αρχιτεκτονικές και λειτουργικά συστήματα). Θα μάθουμε πώς να το κάνουμε αυτό στο Κεφάλαιο 10 όπου συζητούμε σχετικά με τη δικτύωση και τις απομακρυσμένες εφαρμογές.
Το Χ υποστηρίζει την ιεραρχική επικάλυψη των υπο-παραθύρων και λειτουργιών κειμένου και γραφικών, σε μονόχρωμες και έγχρωμες οθόνες. ο αριθμός των προγραμμάτων-πελατών Χ, που χρησιμοποιούν τον διακομιστή Χ είναι αρκετά μεγάλος. Μερικά από τα προγράμματα που παρέχονται στον πυρήνα της διανομής του Χ Consortium είναι:
· xterm: ένας εξομοιωτής τερματικού
Β· twm: ένας μινιμαλιστικός διαχειριστής παραθύρων
Β· xdm: ένας διαχειριστής απεικόνισης
Β· xconsole: ένα πρόγραμμα επανα-κατεύθυνσηςκονσόλας
Β· bitmap: ένας συντάκτης αρχέιων δυαδικής απεικόνισης (bitmap)
Β· xauth, xhost and iceauth: προγράμματα ελέγχου πρόσβασης
Β· xset, xmodmap και πολλά άλλα: προγράμματα ρύθυμισης προτιμήσεων χρήστη
Β· xclock: ένα ρολόι
Β· xlsfonts και άλλα: ένα πρόγραμμα απεικόνισης γραμματοσειρών, εργαλεία για την εμφάνιση πληροφοριών για γραμματοσειρές , παράθυρα και οθόνες
Β· xfs: ένας διακομιστής γραμματοσειρών
Β· ...
Αναφερόμαστε πάλι στις σελίδες τεκμηρίωσης αυτών των εντολών για αναλυτικές πληροφορίες. Περισσότερες εξηγήσεις στις διαθέσιμες λειτουργίες μπορούν να βρεθούν στο εγχειρίδιο Xlib - C language X Interface που έρχεται με τη διανομή Χ, την προδιαγραφή Πρωτοκόλλου Συστημάτων Παραθύρων Χ, και τα διάφορα εγχειρίδια και τη τεκμηρίωση των εργαλείων Χ. Ο κατάλογος /usr/share/doc περιέχει τις αναφορές σε αυτά τα έγγραφα και πολλά άλλα.
Πολλά άλλα εργαλεία, διαχειριστές παραθύρων, παιχνίδια, εργαλεία και παρελκόμενα συμπεριλαμβάνονται ως λογισμικό του χρήστη στη διανομή Χ Consortium, ή είναι διαθέσιμοι χρησιμοποιώντας το ανώνυμο FTP στο διαδίκτυο. Καλοί ιστοτόποι για αρχή είναι το http://www.x.org και το http://www.xfree.org.
Επιπλέον, όλες οι γραφικές εφαρμογές σας, όπως ο περιηγητής σας, το πρόγραμμα ηλεκτρονικού ταχυδρομείου σας, τα προγράμματα απεικόνισης εικόνας σας, τα προγράμματα αναπαραγωγής ήχου, είναι όλοι πελάτες στον διακομιστή Χ σας. Σημειώστε ότι σε κανονική λειτουργία, που είναι στη κατάσταση γραφικών, οι πελάτες Χ και ο διακομιστής Χ εκτελούνται στο Linux στον ίδιο υπολογιστή.
Από την πλευρά του χρήστη, κάθε διακομιστής Χ έχει ένα όνομα απεικόνισης (display name) υπό μορφή
hostname:displaynumber.screennumber
Αυτές οι πληροφορίες χρησιμοποιούνται από την εφαρμογή για να καθοριστεί πώς πρέπει να συνδεθεί με τον διακομιστή Χ και ποια οθόνη πρέπει να χρησιμοποιήσουν εξ ορισμού (στις απεικονίσεις με πολλές οθόνες):
Β· hostname: Το host name καθορίζει το όνομα του υπολογιστή-πελάτη με την οποία η απεικόνιση συνδέεται φυσικά. Εάν δεν δίνεται τέτοιο όνομα, θα χρησιμοποιηθεί ο αποδοτικότερος τρόπος σύνδεσης με έναν διακομιστή στον ίδιο υπολογιστή.
Β· displaynumber: Η φράση "απεικόνιση" χρησιμοποιείται συνήθως για να αναφερθεί σε μια συλλογή οθονών που μοιράζονται κοινό πληκτρολόγιο, ποντίκι, κλπ. Οι σταθμοί εργασίας τείνουν να έχουν μόνο ένα πληκτρολόγιο, και επομένως, μόνο μια απεικόνιση. Τα μεγαλύτερα συστήματα πολλών χρηστών, εντούτοις, έχουν συχνά αρκετές απεικονίσεις έτσι ώστε περισσότεροι από ένας χρήστες μπορούν να εκτελούν εργασίες γραφικών ταυτόχρονα.. Προς αποφυγή σύγχυσης, για κάθε απεικόνιση σε ένα υπολογιστή ορίζεται ένας αριθμός οθόνης (αρχίζει από το 0). Ο αριθμός οθόνης πρέπει πάντα να δοθεί σε ένα όνομα οθόνης.
Β· screennumber:Μερικές απεικονίσεις μοιράζονται ένα πληκτρολόγιο και ένα ποντίκι μεταξύ δύο ή περισσότερων οθονών. Δεδομένου ότι κάθε οθόνη έχει το σύνολο παραθύρων της, σε κάθε οθόνη ορίζεται ένας αριθμός οθόνης (αρχίζει από το 0). Εάν δεν δοθέι ο αριθμός οθόνης, θα χρησιμοποιηθεί η οθόνη 0.
Στα συστήματα POSIX, το προεπιλεγμένο όνομα απεικόνισης αποθηκεύεται στη μεταβλητή περιβάλλοντος DISPLAY. Αυτή η μεταβλητή ρυθμίζεται αυτόματα από τον εξομοιωτή τερματικού xterm. Εντούτοις, όταν συνδέεστε σε άλλο υπολογιστή σε ένα δίκτυο, μπορεί να χρειαστεί να ορίσετε την μεταβλητή DISPLAY μόνοι σας για να δείξει την οθόνη σας, δείτε την Ενότητα 10.4.3.2.
Περισσότερες πληροφορίες μπορούν να βρεθούν στη τεκμηρίωση του Χ.
Η διάταξη των παραθύρων στην οθόνη ελέγχεται από ειδικά προγράμματα αποκαλούμενα διαχειριστές παραθύρων (window managers). Αν και πολλοί διαχειριστές παραθύρων θα ακολουθήσουν τις προδιαγραφές γεωμετρίας όπως δίνονται, άλλες μπορεί να επιλέξουν να τις αγνοήσουν (απαιτώντας το χρήστη να ορίσει ρητά την περιοχή του παραθύρου στην οθόνη με το δείκτη, παραδείγματος χάριν).
Δεδομένου ότι οι διαχειριστές παραθύρων είναι κανονικά (αν και σύνθετα) προγράμματα-πελάτες, μπορούν να δημιουργηθούν ποικίλες διεπαφές χρήστη. Η διανομή Χ Consortium έχει έναν διαχειριστή παραθύρων που ονομάζεται twm, αλλά οι περισσότεροι χρήστες προτιμούν κάτι περισσότερη εντυπωσιακό όταν επιτρέπουν οι πόροι του συστήματος. Το Sawfish και το Enlightenment είναι δημοφιλή παραδείγματα που επιτρέπουν σε κάθε χρήστη να έχουν μια επιφάνεια εργασίας σύμφωνα με τη διάθεση και το ύφος του.
Ένας διαχειριστή επιφάνειας εργασίας χρησιμοποιεί έναν διαχειριστή παραθύρων για να τακτοποιήσει τη γραφική επιφάνεια εργασίας σας με έναν κατάλληλο τρόπο, με τα menu bars, τα drop-down menus, πληροφοριακά μηνύματα, ένα ρολόι, έναν διαχειριστή προγραμμάτων, ένα διαχειριστή αρχείων κλπ. Μεταξύ των δημοφιλέστερων διαχειριστών επιφάνειας εργασίας είναι το Gnome και το KDE, τα οποία εκτελούνται σχεδόν σε οποιαδήποτε διανομή Linux και πολλά άλλα συστήματα UNIX.
Εφαρμογές KDE στο Gnome/Εφαρμογές Gnome στο KDE |
|
---|---|
|
Δεν χρειάζεται να ξεκινήσετε την επιφάνεια εργασίας σας με KDE προκειμένου να είστε σε θέση να εκτελέσετε εφαρμογές KDE. Εάν έχετε εγκεταστημένες τις βιβλιοθήκες KDE (το πακέτο kdelibs), μπορείτε να εκτελέσετε αυτές τις εφαρμογές από τα menus του Gnome ή να τις ξεκινήσετε από ένα τερματικό Gnome. Η εκτέλεση εφαρμογών Gnome σε περιβάλλον KDE είναι λίγο πιο δύσκολη, επειδή δεν υπάρχει κανένα μοναδικό σύνολο βασικών βιβλιοθηκών στο Gnome. Εντούτοις, οι εξαρτήσεις, και επομένως τα πρόσθετα πακέτα που μπορεί να πρέπει να εγκαταστήσετε θα ξεκαθαρίσουν στην εκτέλεση ή εγκατάσταση μιας τέτοιας εφαρμογής. |
Η διανομή Χ που ερχόταν με το Linux, η Xfree86, χρησιμοποιεί το αρχείο διαμόρφωσης XF86Config για την αρχική της ρύθμιση. Αυτό το αρχείο διαμορφώνει την κάρτα γραφικών σας και αναζητείται σε διάφορες θέσεις, αν και είναι συνήθως στο /etc/X11.
Εάν βλέπετε ότι το αρχείο /etc/X11/XF86Config βρίσκεται στο σύστημά σας, τότε μια πλήρης περιγραφή μπορεί να βρεθεί στις σελίδες τεκμηρίωσης XF86Config.
Λόγω ζητημάτων αδειοδότησης του XFree86, τα νεώτερα συστήματα έρχονται συνήθως με τη διανομή X.Org του διακομιστή και των εργαλείων Χ. Το κύριο αρχείο διαμόρφωσης εδώ είναι το xorg.conf, που επίσης βρίσκεται συνήθως στοin /etc/X11. Το αρχείο αποτελείται από διάφορα τμήματα που μπορούν να εμφανιστούν σε οποιαδήποτε διάταξη. Τα τμήματα περιέχουν τις πληροφορίες για την οθόνη σας, την κάρτα γραφικών σας, τη διαμόρφωση οθόνης, το πληκτρολόγιό σας κλπ. Ως χρήστης, δεν χρειάζεστε να ανησυχείτε πάρα πολύ για αυτό που είναι μέσα στο αρχείο, δεδομένου ότι κανονικά όλα καθορίζονται όταν το εγκαθίσταται σύστημα.
Εάν όμως πρέπει να αλλάξετε τις επιλογές διακομιστή γραφικών, εντούτοις, μπορείτε να τρέξετε τα εργαλεία διαμόρφωσης ή να επεξεργαστείτε τα αρχεία διαμόρφωσης που ρυθμίζουν την υποδομή χρήσης του διακομιστή X. Δείτε τη τεκμηρίωση για περισσότερες πληροφορίες, η διανομή σας έχει τα δικά της εργαλεία. Δεδομένου ότι το λάθος διαμόρφωση μπορεί να οδηγήσει σε ακατανόητο γραφικό περιβάλλον, μπορείτε να θελήσετε να κάνετε ένα εφεδρικό αντίγραφο του αρχείου διαμόρφωσης πριν προσπαθήσετε να αλλάξετε, για να είστε ασφαλείς.
Στη κατάσταση κειμένου, η ρύθμιση της διάταξης του πληκτρολογίου γίνεται χρησιμοποιώντας την εντολή loadkeys. Στο γραφικό περιβάλλον, χρησιμοποιήστε το τοπικό εργαλείο διαμόρφωσης Χ ή επεξεργαστείτε το τμήμα Keyboard στο XF86Config με το χέρι. Το XkbdLayout είναι αυτό που θέλετε να ρυθμίσετε:
XkbLayout "us" |
Αυτή είναι η προεπιλογή. Αλλάξτε στις τοπικές σας ρυθμίσεις με την αντικατάσταση της αναφερόμενης τιμής σε εισαγωγικά με οποιαδήποτε από τα ονόματα που απαριθμούνται στους υπο-καταλόγους του καταλόγου keymaps. Εάν δεν μπορείτε να βρείτε το keymaps, προσπαθήστε να εντοπίσετε τη θέση του στο σύστημά σας χρησιμοποιώντας την εντολή
locate keymaps
Είναι δυνατό να συνδυαστούν οι ρυθμίσεις διάταξης πληκτρολογίου, όπως σε αυτό το παράδειγμα:
Xkblayout "us,ru" |
Κάντε ένα εφεδρικό αντίγραφο του αρχείου /etc/X11/XF86Config πριν το επεξεργαστείτε! Θα χρειαστεί να χρησιμοποιήσετε τον λογαριασμό root για να το κάνετε αυτό.
Αποσυνδεθείτε και επανασυνδεθείτε προκειμένου να ξανα-φορτωθούν οι ρυθμίσεις Χ.
Το Gnome Keyboard Applet υποστηρίζει εναλλαγή ανάμεσα σε διατάξεις πληκτρολογίου σε πραγματικό χρόνο. Δεν απαιτείται καμία πρόσθετη άδεια για τη χρησιμοποίηση αυτού του προγράμματος. Το KDE έχει ένα παρόμοιο εργαλείο για εναλλαγή μεταξύ των διατάξεων πληκτρολογίου.
Στη κατάσταση κειμένου, χρησιμοποιήστε το εργαλείο setfont για να φορτώσετε τις γραμματοσειρές. Τα περισσότερα συστήματα έχουν ένα τυποποιημένο αρχείο inputrc που επιτρέπει το συνδυασμό των χαρακτήρων, όπως το γαλλικό "é" (meta characters). Ο διαχειριστής του συστήματος πρέπει έπειτα να προσθέσει τη γραμμή
export INPUTRC="/etc/inputrc" |
στο αρχείο /etc/bashrc.
Οι ρυθμίσεις ώρας και ημερομηνίας γίνονται συνήθως κατά την εγκατάσταση. Μετά από αυτό, το σύστημα διατηρείται ενήμερο χρησιμοποιώντας έναν πελάτη NTP (Network Time Protocol). Τα περισσότερα συστήματα Linux τρέχουν ntpd εξ ορισμού:
debby:~> ps -ef | grep ntpd ntp 24678 1 0 2002 ? 00:00:33 ntpd -U ntp |
Μπορείτε να εκτελέσετε το ntpdate με το χέρι για να θέσετε το χρόνο, με την προϋπόθεση ότι μπορείτε να προσεγγίσετε σε έναν διακομιστή χρόνου. Ο δαίμονας ntpd δεν πρέπει να εκτελείται την ώρα που εσείς ρυθμίζετε τον χρόνο χρησιμοποιώντας το ntpdate. Χρησιμοποιήστε έναν διακομιστή χρόνου ως όρισμα στην εντολή:
root@box:~# ntpdate 10.2.5.200 26 Oct 14:35:42 ntpdate[20364]: adjust time server 10.2.5.200 offset -0.008049 sec |
Δείτε το εγχειρίδιο του συστήματος και τη τεκμηρίωση του πακέτου NTP. Οι περισσότεροι διαχειριστές επιφάνειας εργασίας περιλαμβάνουν εργαλεία για ρύθμιση ώρας και ημερομηνίας, υπό τον όρο ότι έχετε πρόσβαση στον λογαριασμό του διαχειριστή του συστήματος.
Για τον καθορισμό της σωστής χρονικής ζώνης, μπορείτε να χρησιμοποιήσετε τις εντολές tzconfig ή timezone. Οι πληροφορίες χρονικής ζώνης ρυθμίζονται συνήθως κατά τη διάρκεια της εγκατάστασης του υπολογιστή σας. Πολλά συστήματα έχουν συγκεκριμένα εργαλεία σε κάθε διανομή για τη ρύθμισή της, δείτε τη τεκμηρίωση του συστήματός σας.
Εάν προτιμάτε να λαμβάνετε τα μηνύματα του συστήματος στα ολλανδικά ή γαλλικά, μπορείτε να θέσετε τις μεταβλητές περιβάλλοντος LANG και LANGUAGE επιτρέποντας την υποστήριξη της επιθυμητής τοπικής γλώσσας και τελικά τις γραμματοσειρές και τους χαρακτήρες αυτής της γλώσσας.
Με τα περισσότερα γραφικά συστήματα σύνδεσης, όπως το gdm ή το kdm, έχετε τη δυνατότητα να διαμορφώσετε αυτές τις γλωσσικές ρυθμίσεις κατά τη σύνδεση.
Σημειώστε ότι στα περισσότερα συστήματα, η προεπιλογή, τείνει να είναι το en_US.UTF-8. Αυτό δεν είναι ένα πρόβλημα, επειδή τα συστήματα όπου αυτό είναι η προεπιλογή, θα έχουν επίσης όλα τα προγράμματα που υποστηρίζουν αυτήν την κωδικοποίηση. Κατά συνέπεια, το vi να μπορεί να επεξεργαστεί όλα τα αρχεία του συστήματός σας, το cat δεν θα συμπεριφερθεί περίεργα κλπ.
Το πρόβλημα αρχίζει όταν συνδέεστε με ένα παλαιότερο σύστημα που δεν υποστηρίζει αυτήν την κωδικοποίηση γραμματοσειρών, ή όταν ανοίγετε ένα αρχείο κωδικοποιημένο με UTF-8 σε ένα σύστημα που υποστηρίζει μόνο τις γραμματοσειρές με χαρακτήρες 1-byte. Το εργαλείο recode μπορεί να φανεί πρακτικό για να μετατρέψει τα αρχεία από ένα σύνολο χαρακτήρων σε ένα άλλο. Διαβάστε τις σελίδες εγχειριδίου για μια επισκόπηση των χαρακτηριστικών και της χρήσης. Μια άλλη δυνατή λύση είναι να εργαστείτε προσωρινά με μια άλλη κωδικοποίηση, με τον καθορισμό της μεταβλητής περιβάλλοντος LANG:
debby:~> acroread /var/tmp/51434s.pdf Warning: charset "UTF-8" not supported, using "ISO8859-1". Aborted debby:~> set | grep UTF LANG=en_US.UTF-8 debby:~> export LANG=en_US debby:~> acroread /var/tmp/51434s.pdf <--new window opens--> |
Αναφερθείτε στον ιστοτόπο Mozilla για οδηγίες αλλαγής γλώσσας στο Firefox. Ο ιστοτόπος OpenOffice.org έχει πληροφορίες για την τοπικοποίηση του πακέτου OpenOffice.org.
Η λίστα HOWTOs περιέχει αναφορές για διάφορες γλώσσες.
Οι περισσότεροι άνθρωποι είναι έκπληκτοι όταν δουν ότι έχουν ένα πλήρως λειτουργικό υπολογιστή, μετά την εγκατάσταση του Linux. Οι περισσότερες διανομές περιέχουν πλήρη υποστήριξη για κάρτες γραφικών και δικτύων, οθόνες και άλλες εξωτερικές συσκευές, έτσι δεν υπάρχει συνήθως καμία ανάγκη να εγκατασταθούν οι πρόσθετοι οδηγοί συσκευών. Επίσης, τα κοινά εργαλεία όπως τα πακέτα αυτοματισμού γραφείου, οι περιηγητές ιστού, τα προγράμματα ηλεκτρονικού ταχυδρομείου και άλλα, συμπεριλαμβάνονται στις κύριες διανομές. Ακόμα κι έτσι, μια αρχική εγκατάσταση μπορεί να μην καλύψει τις απαιτήσεις σας.
Εάν δεν μπορείτε να βρείτε ακριβώς αυτό που χρειάζεστε, ίσως δεν είναι εγκαταστημένο στο σύστημά σας. Μπορεί επίσης να έχετε το απαραίτητο λογισμικό, αλλά δεν κάνει αυτό που υποτίθεται ότι θα έκανε. Θυμηθείτε ότι το Linux κινείται γρήγορα, και το λογισμικό βελτιώνεται σε καθημερινή βάση. Μην σπαταλήστε το χρόνο σας προσπαθώντας να ανιχνεύσετε σφάλματα που πιθανόν να έχουν ήδη επιλυθεί.
Μπορείτε να ενημερώσετε το σύστημά σας ή να προσθέσετε πακέτα σε αυτό οποιαδήποτε στιγμή θέλετε. Το μεγαλύτερο μέρος του λογισμικού έρχεται σε πακέτα. Πρόσθετο λογισμικό μπορεί να βρεθεί στα CD εγκαταστάσεών σας ή στο Διαδίκτυο. Ο ιστοτόπος της διανομής σας Linux είναι μια καλή θέση για να αρχίσετε να ψάχνετε πρόσθετο λογισμικό και περιέχει τις οδηγίες για το πώς να το εγκαταστήσετε στο Linux σας, δείτε το Παράρτημα Α. Πάντα διαβάζετε τη τεκμηρίωση που έρχεται μαζί με το νέο λογισμικό, και οποιεσδήποτε οδηγίες εγκατάστασης που μπορεί να περιέχει το πακέτο. Όλα τα λογισμικά έρχονται με ένα αρχείο README, το οποίο σας προτείνουμε ένθερμα να διαβάσετε.
Το RPM (RedHat Package Manager, Διαχειριστής Πακέτων RedHat), είναι ισχυρός διαχειριστής πακέτων που μπορείτε να χρησιμοποιήσετε για να εγκαταστήσετε, να ενημερώσετε και να αφαιρέσετε πακέτα. Σας επιτρέπει να ψάξετε για πακέτα και κρατά λογαριασμό των αρχείων που έρχονται με κάθε πακέτο. Έχειε νσωματωμένο ένα σύστημα με το οποίο μπορείτε να ελέγξετε την αυθεντικότητα των πακέτων που μεταφορτώσατε από το Διαδίκτυο. Οι προχωρημένοι χρήστες μπορούν να δημιουργήσουν τα δικά τους πακέτα με το RPM.
Ένα πακέτο RPM αποτελείται από μια συλλογή αρχείων και μετα-δεδομένων(meta-data) που χρησιμοποιούνται για να εγκαταστήσουν και να διαγράψουν τη συλλογή των αρχείων. Τα μετα-δεδομένα περιλαμβάνουν τα βοηθητικά σενάρια, τις ιδιότητες αρχείων, και τις περιγραφικές πληροφορίες για το πακέτο. Τα πακέτα έρχονται σε δύο ποικιλίες: δυαδικά πακέτα, που χρησιμοποιούνται για να τοποθετήσουν το λογισμικό πρόκειται να εγκατασταθεί, και τα πακέτα πηγαίου κώδικα, που περιέχουν τον πηγαίο κώδικα και τις οδηγίες που είναι απαραίτητες για να παραχθεί το δυαδικό πακέτο.
Πολλές άλλες δημοφιλείς διανομές υποστηρίζουν πακέτα RPM, που μεταξύ αυτών είναι το RedHat Enterprise Linux, το Mandriva (πρώην Mandrake), το Fedora Core και το SuSE Linux. Εκτός από τις συμβουλές για τη διανομή σας, μπορείτε να διαβάσετε το man rpm.
Οι περισσότερες συσκευασίες εγκαθίστανται απλά με την επιλογή αναβάθμισης (upgrade), -U, ανεξάρτητα αν το πακέτο είναι ήδη εγκαταστημένο ή όχι. Το πακέτο RPM περιέχει μια πλήρη έκδοση του προγράμματος, το οποίο επικαλύπτει τις υπάρχουσες εκδόσεις ή εγκαθίσταται ως νέο πακέτο. Η τυπική χρήση είναι η ακόλουθη:
rpm -Uvh /path/to/rpm-package(s)
Η επιλογή -v δημιουργεί λεκτική έξοδο για καλύτερη παρακολούθηση, και η -h κάνει το rpm να εμφανίζει τη μπάρα προόδου:
[root@jupiter tmp]# rpm -Uvh totem-0.99.5-1.fr.i386.rpm Preparing... ########################################### [100%] 1:totem ########################################### [100%] [root@jupiter tmp]# |
Τα νέα πακέτα πυρήνων, εντούτοις, εγκαθίστανται με την επιλογή -i, που δεν επικαλύπτει την υπάρχουσα έκδοση. Με αυτό τον τρόπο, θα είστε ακόμα σε θέση να ξεκιν'ήσετε το σύστημά σας με τον παλαιό πυρήνα εάν ο νέος δεν λειτουργεί.
Μπορείτε επίσης να χρησιμοποιήσετε το rpm για να ελέγξετε εάν ένα πακέτο είναι εγκαταστημένο στο σύστημά σας:
[david@jupiter ~] rpm -qa | grep vim vim-minimal-6.1-29 vim-X11-6.1-29 vim-enhanced-6.1-29 vim-common-6.1-29 |
Ή μπορείτε να βρείτε ποιο πακέτο περιέχει ένα συγκεκριμένο αρχείο ή εκτελέσιμο:
[david@jupiter ~] rpm -qf /etc/profile setup-2.5.25-1 [david@jupiter ~] which cat cat is /bin/cat [david@jupiter ~] rpm -qf /bin/cat coreutils-4.5.3-19 |
Σημειώστε ότι δεν χρειάζεστε να έχετε πρόσβαση στα προνόμια διαχειριστή προκειμένου να χρησιμοποιήσετε το rpm για να ρωτήσετε τη βάση δεδομένων RPM. Πρέπει μόνο να είστε root κατά την προσθήκη, τη τροποποίηση ή τη διαγραφή των πακέτων.
Παρακάτω είναι ένα τελευταίο παράδειγμα, που καταδεικνύει πώς να απεγκαταστήσετε ένα πακέτο χρησιμοποιώντας το rpm:
[root@jupiter root]# rpm -e totem [root@jupiter root]# |
Σημειώστε ότι η απεγκατάσταση δεν είναι τόσο φλύαρη εξ ορισμού, είναι κανονικό ότι δεν βλέπετε πολλά να συμβαίνουν. Σε περίπτωση αμφιβολίας, χρησιμοποιήστε πάλι το rpm -qa για να ελέγξετε ότι η συσκευασία έχει αφαιρεθεί.
Το RPM μπορεί να κάνει πολύ περισσότερα από τις βασικές λειτουργίες που συζητήσαμε σε αυτήν την εισαγωγή. Το RPM HOWTO περιέχει τις περαιτέρω αναφορές
Αυτή η μορφή πακέτων είναι η προεπιλογή σε Debian GNU/Linux, όπου το dselect, και, σήμερα το πιό κοινό aptitude, είναι το τυποποιημένο εργαλείο για τα πακέτα. Χρησιμοποιείται για να επιλέξει τα πακέτα που θέλετε να εγκαταστήσετε ή να αναβαθμίσετε, αλλά θα εκτελεστεί επίσης κατά τη διάρκεια της εγκατάστασης ενός συστήματος Debian και θα σας βοηθήσει για να καθορίσει τη μέθοδο προσπέλασης για να χρησιμοποιήσει, για να απαριθμήσει τα διαθέσιμα πακέτα και για να ρυθμίσει τα πακέτα.
Ο ιστοτόπος Debian περιέχει όλες τις πληροφορίες που χρειάζεστε, συμπεριλαμβανομένου ενός "dselect Documentation για Αρχάριους".
Σύμφωνα με τις πιό πρόσφατες ειδήσεις, η μορφή πακέτων Debian γίνεται όλο και περισσότερο δημοφιλής. Κατά την διάρκεια αυτής της συγγραφής, 5 των 10 κορυφαίων διανομών το χρησιμοποιούν (Το ίδιο ισχύει και για το Ubuntu, ΣτΜ.). Επίσης το apt-get (δείτε την Ενότητα 7.5.3.2) γίνεται εξαιρετικά δημοφιλής, επίσης στα συστήματα μη-DEB.
Ο έλεγχος εάν ένα πακέτο είναι εγκαταστημένο γίνεται με την εντολή dpkg. Για παράδειγμα, εάν θέλετε να ξέρετε ποια έκδοση του λογισμικού Gallery είναι εγκαταστημένη στον υπολογιστή σας:
nghtwsh@gorefest:~$ dpkg -l *gallery* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii gallery 1.5-1sarge2 a web-based photo album written in php |
Το πρόθεμα "ii" σημαίνει ότι το πακέτο είναι εγκαταστημένο. Εάν δείτε το "un" ως πρόθεμα, το οποίο σημαίνει ότι το πακέτο είναι γνωστό στον κατάλογο που κρατά ο υπολογιστής σας, αλλά δεν είναι εγκαταστημένο.
Η εύρεση σε ποιο πακέτο ανήκει ένα αρχείο γίνεται με τη χρησιμοποίηση της επιλογής -S στην εντολή dpkg:
nghtwsh@gorefest:~$ dpkg -S /bin/cat coreutils: /bin/cat |
Περισσότερες πληροφορίες στις σελίδες τεκμηρίωσης dpkg.
Το μεγαλύτερο μέρος των προγραμμάτων Linux είναι Ελεύθερο/Ανοικτό Λογισμικό, έτσι τα πακέτα πηγαίου κώδικα είναι διαθέσιμα για αυτά τα προγράμματα. Τα αρχεία πηγαίου κώδικα απαιτούνται για τη μεταγλώττιση της δική σας έκδοσης του προγράμματός. Ο πηγαίος κώδικας για ένα πρόγραμμα μπορεί να μεταφορτωθεί από τον ιστοτόπο του, συχνά ως συμπιεσμένο tarball (program-version.tar.gz ή παρόμοιο). Για τις βασισμένες στο RPM διανομές, ο πηγαίος κώδικας παρέχεται συχνά στο program-version.src.rpm. Το Debian, και οι περισσότερες διανομές βασισμένες σε αυτό, παρέχουν τον προσαρμοσμένο πηγαίο κώδικα με το apt-get source.
Οι συγκεκριμένες απαιτήσεις, οι εξαρτήσεις και οι οδηγίες εγκαταστάσεων παρέχονται στο αρχείο README. Θα χρειαστείτε πιθανώς ένα μεταγλωττιστή C, την gcc. Αυτός ο μεταγλωττιστής GNU C συμπεριλαμβάνεται στα περισσότερα συστήματα Linux και είναι σε πολλές άλλες πλατφόρμες.
Το πρώτο πράγμα που κάνετε μετά την εγκατάσταση ενός νέου συστήματος είναι να εφαρμόσετε τις ενημερώσεις. Αυτό ισχύει για όλα τα λειτουργικά συστήματα και το Linux δεν είναι διαφορετικό.
Οι ενημερώσεις για τα περισσότερα συστήματα Linux μπορούν συνήθως να βρεθούν σε ένα κοντινό ιστοτόπο, κατοπτρικό (mirror) της διανομής σας. Οι κατάλογοι ιστοτόπων που προσφέρουν αυτήν την υπηρεσία μπορούν να βρεθούν στον ιστοτόπο της διανομής σας, δείτε το Παράρτημα Α.
Οι ενημερώσεις πρέπει να εφαρμόζονται τακτικά, καθημερινά αν είναι δυνατό - αλλά ανά δυο βδομάδες θα ήταν μια λογική πρόταση. Πρέπει πραγματικά να προσπαθήσετε να έχετε την πιό πρόσφατη έκδοση της διανομής σας, δεδομένου ότι το Linux αλλάζει συνεχώς. Όπως είπαμε πριν, νέα χαρακτηριστικά, οι βελτιώσεις και οι διορθώσεις σφαλμάτων παρέχονται σε έναν σταθερό ρυθμό, και μερικές φορές επιλύονται σημαντικά προβλήματα ασφάλειας.
Οι καλές ειδήσεις είναι ότι οι περισσότερες διανομές Linux παρέχουν τα εργαλεία έτσι ώστε να μην είναι απαραίτητο να αναβαθμίσετε τις δεκάδες των πακέτων καθημερινά με το χέρι. Οι ενότητες που ακολουθούν δίνουν μια επισκόπηση των διαχειριστών των διαχειριστών πακέτων. Υπάρχουν πολλά περισσότερα σε αυτό το θέμα, ακόμη και οι τακτικές ενημερώσεις των πακέτων πηγαίου κώδικα μπορούν να αυτοματοποιηθούν. Απαριθμούμε μόνο τα πιο γνωστά συστήματα. Πάντα να αναφέρεστε στη τεκμηρίωση της διανομής σας για τις προτεινόμενες διαδικασίες.
Το Προηγμένο Εργαλείο Πακέτων (Advanced Package Tool) είναι ένα σύστημα διαχείρισης πακέτων λογισμικού. Το εργαλείο γραμμής εντολών για τα πακέτα είναι apt-get, το οποίο παρέχει μια άριστη σελίδα τεκμηρίωσης που περιγράφει πως να εγκαταστήσετε και να ενημερώσετε πακέτα και πώς να αναβαθμίσετε τα επιμέρους πακέτα ή ολόκληρη τη διανομή σας. Το APT έχει τις ρίζες του στη διανομή Debian GNU/Linux, όπου είναι προεπιλεγμένος διαχειριστής για τις συσκευασίες Debian. Το APT επίσης συνεργάζεται και με τα πακέτα RPM. Το κύριο πλεονέκτημα του APT είναι ότι είναι ελεύθερο και εύκολο στη χρήση. Θα σας επιτρέψει να οργανώσετε συστήματα σύμφωνα με συγκεκριμένες (και σε μερικές περιπτώσεις εμπορικές) διανομές που απαριθμούνται στις επόμενες παραγράφους.
Γενικά, όταν χρησιμοποιείται για πρώτη φορά το apt-get, θα πρέπει να μεταφορτώσετε έναν κατάλογο των διαθέσιμων συσκευασιών. Αυτό γίνεται χρησιμοποιώντας την εντολή
apt-get update
Μετά από αυτό, μπορείτε να χρησιμοποιήσετε το apt-get για να αναβαθμίσετε το σύστημά σας:
apt-get upgrade
Αυτό κάντε το συχνά, είναι ένας εύκολος τρόπος να κρατάτε το σύστημά σας ενημερωμένο και ασφαλές.
Εκτός από αυτήν την γενική χρήση, το apt-get είναι επίσης πολύ γρήγορο για την εγκατάσταση μεμονωμένων συσκευασιών. Έτσι λειτουργεί:
[david@jupiter ~] su - -c "apt-get install xsnow" Password: Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: xsnow 0 packages upgraded, 1 newly installed, 0 removed and 3 not upgraded. Need to get 33.6kB of archives. After unpacking 104kB of additional disk space will be used. Get:1 http://ayo.freshrpms.net redhat/9/i386/os xsnow 1.42-10 [33.6kB] Fetched 33.6kB in 0s (106kB/s) Executing RPM (-Uvh)... Preparing... ########################################### [100%] 1:xsnow ########################################### [100%] |
Σημειώστε την επιλογή -c στην εντολή su, που υποδεικνύει στο κέλυφος υπερ-χρήστη να εκτελέσει μόνο αυτήν την εντολή, και μετά επιστρέψει στο περιβάλλον του χρήστη. Με αυτόν το τρόπο, δεν μπορείτε να ξεχάσετε να εγκαταλείψετε τον λογαριασμό υπερ-χρήστη (Στο Ubuntu, δείτε τη χρήση του sudo, ΣτΜ.).
Εάν υπάρχουν οποιεσδήποτε εξαρτήσεις σε άλλα πακέτα, το apt-get θα μεταφορτώσει και θα εγκαταστήσει αυτά τα υποστηρικτικά πακέτα. (To aptitude είναι ένα ολοκληρωμένο περιβάλλον διαχείρισης με διεπαφή κειμένου. ΣτΜ.)
Περισσότερες πληροφορίες μπορούν να βρεθούν στο APT HOWTO.
Ο Update Agent, που αρχικά υποστήριζε μόνο τα πακέτα RPM RedHat, υποστηρίζει τώρα ένα ευρύτερο σύνολο λογισμικού, συμπεριλαμβανομένων των αποθηκών μη-RedHat. Αυτό το εργαλείο παρέχει ένα πλήρες σύστημα για την ενημέρωση πακέτων RPM στα συστήματα RedHat ή Fedora Core. Στη γραμμή εντολής, πληκτρολογήστε up2date για να ενημερώσετε το σύστημά σας. Στην επιφάνεια εργασίας, εξ ορισμού ενεργοποιείται μια μικρή εικόνα, λέγοντάς σας εάν υπάρχουν ή όχι διαθέσιμες ενημερώσεις για το σύστημά σας.
Yellowdog's Updater Modified (yum) είναι ένα άλλο εργαλείο που έγινε πρόσφατα δημοφιλές. Είναι ένα διαλογικό αλλά αυτοματοποιημένο πρόγραμμα για εγκατάσταση, ενημέρωση ή απεγκατάσταση(αφαίρεση) πακέτων RPM σε ένα σύστημα. Είναι το εργαλείο της επιλογής στα συστήματα Fedora.
Στο SuSE Linux, όλα γίνονται με το YaST, Ακόμη ένα Εργαλείο Ρύθμισης (Yet another Setup Tool), το οποίο υποστηρίζει μια ευρεία ποικιλία εργασιών διαχείρισης συστημάτων, μεταξύ των οποίων είναι η ενημέρωση πακέτων RPM. Αρχίζοντας από to SuSE Linux 7.1 μπορείτε επίσης να αναβαθμίσετε χρησιμοποιώντας μιας διεπαφή Ιστού και το YOU, Yast Online Upgrade.
Το Mandrake Linux και το Mandriva παρέχουν τα αποκαλούμενα URPMI εργαλεία, ένα σύνολο προγραμμάτων περιτυλίγματος που κάνουν την εγκατάσταση του νέου λογισμικού ευκολότερο για το χρήστη. Αυτά τα εργαλεία συνδυάζονται με το RPMDrake και MandrakeUpdate για να παρέχουν όλα όσα απαιτούνται για ομαλή εγκατάσταση και απεγκατάσταση των πακέτων λογισμικού. Το MandrakeOnline προσφέρει μια εκτεταμένη σειρά υπηρεσιών και μπορεί αυτόματα να ειδοποιήσει τους διαχειριστές πότε οι υπάρχουν διαθέσιμες ενημερώσεις για το δικό σας σύστημα Mandrake. Δείτε το man urpmi, μεταξύ άλλων, για περισσότερες πληροφορίες.
Επίσης οι διαχειριστές επιφάνειας εργασίας KDE και Gnome έχουν τις δικές τους (γραφικές) εκδόσεις διαχειριστών πακέτων.
Οι περισσότερες εγκαταστάσεις Linux είναι καλές εάν αναβαθμίζετε περιοδικά τη διανομή σας. Η διαδικασία αναβάθμισης θα εγκαταστήσει έναν νέο πυρήνα όταν απαιτείται και θα κάνει όλες τις απαραίτητες αλλαγές στο σύστημά σας. Πρέπει μόνο να μεταγλωττίσετε ή να εγκαταστήσετε έναν νέο πυρήνα με το χέρι εάν χρειάζεστε τα χαρακτηριστικά γνωρίσματα πυρήνων που δεν υποστηρίζονται από τον προεπιλεγμένο πυρήνα που περιλαμβάνεται στη διανομή Linux σας.
Είτε συντάσσοντας το δικό σας βελτιστοποιημένο πυρήνα είτε χρησιμοποιώντας μια προ-μεταγλωττισμένο πακέτο πυρήνων, εγκαταστήστε το σε συνύπαρξη με τον παλαιό πυρήνα έως ότου είστε βέβαιοι ότι όλα λειτουργούν σύμφωνα με το σχέδιο.
Κατόπιν δημιουργήστε ένα σύστημα διπλής εκκίνησης, που θα σας επιτρέψει να επιλέξετε με ποιον πυρήνα θέλετε να εκκινίσει το σύστημα, με την ενημέρωση του αρχείου grub.conf (αρχείο διαμόρφωσης boot loader) (Στο Ubuntu είναι το αρχείο /boot/grub/menu.lst, ΣτΜ). Αυτό είναι ένα απλό παράδειγμα:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making config changes. # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, e.g. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/hde8 # initrd /initrd-version.img #boot=/dev/hde default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux new (2.4.9-31) root (hd0,0) kernel /vmlinuz-2.4.9-31 ro root=/dev/hde8 initrd /initrd-2.4.9-31.img title old-kernel root (hd0,0) kernel /vmlinuz-2.4.9-21 ro root=/dev/hde8 initrd /initrd-2.4.9-21.img |
Αφότου ο νέος πυρήνας έχει αποδείξει ότι λειτουργεί κανονικά, μπορείτε να αφαιρέσετε τις γραμμές για την παλαιά από το αρχείο ρυθμίσεων GRUB, αν και είναι καλύτερο να περιμένετε μερικές ημέρες για να είστε εντελώς βέβαιοι.
Αυτό βασικά γίνεται με τον ίδιο τρόπο όπως η χειροκίνητη εγκατάσταση πακέτων, εκτός από το ότι πρέπει να προσαρτήσετε το σύστημα αρχείων του CD στο σύστημα αρχείων του υπολογιστή σας για να το καταστήσετε προσπελάσιμο. Στα περισσότερα συστήματα, αυτό θα γίνει αυτόματα κατά την εισαγωγή του CD στον οδηγό επειδή ο δαίμονας automount ξεκινά κατά την εκκίνηση του συστήματος. Εάν το CD σας δεν γίνεται διαθέσιμο αυτόματα, πληκτρολογείστε την εντολή mount σε ένα παράθυρο τερματικού. Ανάλογα με την διαμόρφωση του συστήματός σας, μια γραμμή παρόμοια με αυτήν θα κάνει συνήθως το τέχνασμα:
mount /dev/cdrom /mnt/cdrom
Σε μερικά συστήματα, μόνο ο υπερ-χρήστης (root) μπορεί να τοποθετήσει τα αφαιρούμενα μέσα. Αυτό εξαρτάται από τις ρυθμίσεις.
Για λόγους αυτοματοποίησης, ο οδηγός CD έχει συνήθως μια καταχώρηση στο /etc/fstab, το οποίο απαριθμεί τα συστήματα αρχείων και τα σημεία προσάρτησής τους, τα οποία δημιουργούν το δέντρο του συστήματος αρχείων σας. Αυτή είναι μια τέτοια γραμμή:
[david@jupiter ~] grep cdrom /etc/fstab /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 |
Αυτό δείχνει ότι το σύστημα θα καταλάβει την εντολή το mount /mnt/cdrom. Η επιλογή noauto σημαίνει ότι σε αυτό το σύστημα, τα CD δεν προσαρτώνται κατά την εκκίνηση του συστήματος.
Μπορείτε ακόμη και να προσπαθήσετε να προσαρτήσετε το CD κάνοντας δεξί κλικ στο εικονίδιο του CD στην επιφάνεια εργασίας σας, εάν ο διαχειριστής αρχείων σας δεν το κάνει για σας. Μπορείτε να ελέγξετε εάν λειτούργησε με την εντολή mount χωρίς ορίσματα:
[david@jupiter ~] mount | grep cdrom /dev/cdrom on /mnt/cdrom type iso9660 (ro,nosuid,nodev) |
Μετά την προσάρτηση του CD, μπορείτε να μετακινηθείτε στον κατάλογο του CD, συνήθως στο σημείο προσάρτησης /mnt/cdrom, όπου μπορείτε να έχετε πρόσβαση στο περιεχόμενο του CD-ROM. Χρησιμοποιήστε τις ίδιες εντολές για την εξέταση των αρχείων και των καταλόγων όπως θα χρησιμοποιούσατε για τα αρχεία στο σκληρό δίσκο.
Προκειμένου να βγάλετε το CD από τον οδηγό, αφότου έχετε τελειώσει με αυτό, το σύστημα αρχείων στο CD δεν θα πρέπει να χρησιμοποιείται. Ακόμη και να απλά βρίσκεστε σε έναν από τους υπο-καταλόγους του σημείου προσάρτησης, /mnt/cdrom στο παράδειγμά μας, θα θεωρηθεί ως "χρησιμοποίηση του συστήματος αρχείων", έτσι πρέπει μετακινηθείτ από εκεί. Κάντε αυτό, για παράδειγμα, με τη εισαγωγή της εντολής cd χωρίς ορίσματα, θα σας μεταφέρει ν στον οικείο κατάλογό σας. Μετά από αυτό, μπορείτε να είτε εισάγετε την εντολή
umount /mnt/cdrom
ή
eject cdrom
Μπλοκαρισμένοι οδηγοί CD |
|
---|---|
|
ΠΟΤΕ μην ζορίζετε τον οδηγό CD. Το κόλπο με το συνδετήρα είναι κακή ιδέα, γιατί αυτό τελικά θα καταστρέψει το CD, αλλά το σύστημά σας ακόμη θα νομίζει πως το CD είναι ακόμα εκεί, διότι δεν ακολουθήθηκαν οι κανονικές διαδικασίες. Πιο πιθανό είναι να χρειαστεί να επανεκκινήσετε για να ανακτήσετε το σύστημά σας. Εάν συνεχίζετε να παίρνετε μηνύματα "απασχολημένης συσκευής", ελέγξτε πρώτα ότι όλες οι διεργασίες του κελύφους έχουν αφήσει το σύστημα αρχείων του CD και ότι καμία γραφική εφαρμογή δεν το χρησιμοποιεί πια. Σε περίπτωση αμφιβολίας, χρησιμοποιήστε το εργαλείο lsof (list of open files, λίστα των ανοικτών αρχείων, ΣτΜ.) για να ανακαλύψετε ποιες διαδικασίες χρησιμοποιούν ακόμα π του CD. |
Όταν όλα είναι στη θέση τους, σημαίνει ότι η μισή δουλειά έχει τελειώσει.
Το να είστε τακτικοί είναι σημαντικό, είναι εξίσου σημαντικό με το να αισθάνεστε άνετα στο περιβάλλον σας, είτε κειμένου ή γραφικό. Το περιβάλλον κειμένου ελέγχεται μέσω των αρχείων διαμόρφωσης φλοιού. Το γραφικό περιβάλλον εξαρτάται πρώτιστα από τη διαμόρφωση του διακομιστή Χ, στον οποία βασίζονται διάφορες άλλες εφαρμογές, όπως οι διαχειριστές παραθύρων και επιφάνειας εργασίας, καθώς και οι γραφικές εφαρμογές, κάθε μια με τα δικά της αρχεία διαμόρφωσης. Για να μάθετε πως να τα ρυθμίσετε πρέπει να διαβάσετε την ανάλογη τεκμηρίωση για το σύστημα και το πρόγραμμα.
Τοπικές ρυθμίσεις όπως η ρύθμιση πληκτρολογίου, κατάλληλων γραμματοσειρών και γλώσσικής υποστήριξης γίνονται καλύτερα κατά τη διάρκεια της εγκατάστασης.
Το λογισμικό ρυθμίζεται είτε αυτόματα είτε χειροκίνητα χρησιμοποιώντας ένα σύστημα διαχείρισης πακέτων.
Οι ακόλουθες εντολές παρουσιάστηκαν σε αυτό το κεφάλαιο:
Πίνακας 7-2. Νέες εντολές στο κεφάλαιο 7: Οικείο περιβάλλον
Εντολή |
Σημασία |
---|---|
aptitude |
Διαχείριση πακέτων Debian (ολοκληρωμένο περιβάλλον διεπαφής κειμένου). |
automount |
Αυτόματη προσάρτηση νέων συστημάτων αρχείων (αφαιρούμενων μέσων). |
dpkg |
Διαχειριστής Πακέτων Debian. |
dselect |
Διαχείριση πακέτων Debian (παλαιότερο). |
loadkeys |
Φόρτωση ρυθμίσεων πληκτρολογίου. |
lsof |
Λίστα των ανοικτών αρχείων. |
mount |
Προσάρτηση νέου συστήματος αρχείων στο υπάρχον δέντρο συστήματος αρχείων. |
ntpdate |
Θέστε την ώρα και την ημερομηνία του συστήματος χρησιμοποιώντας έναν διακομιστή ώρας (time server). |
quota |
Πληροφορίες για την επιτρεπόμενη χρήση του ελεύθερου χώρου στο δίσκο (μερίδια). |
recode |
Μετατροπή αρχείων από ένα σύνολο χαρακτήρων σε άλλο. |
rpm |
Διαχείριση πακέτων RPM. |
setfont |
Επιλογή γραμματοσειράς. |
timezone |
Ρύθμιση της ζώνης ώρας. |
tzconfig |
Ρύθμιση της ζώνης ώρας. |
ulimit |
Αλλαγή ή εμφάνιση των περιορισμών των πόρων. |
up2date |
Διαχείριση πακέτων RPM (RedHat). |
urpmi |
Διαχείριση πακέτων RPM (Mandriva). |
yum |
Διαχείριση πακέτων RPM (SuSe). |
Β· Εμφανίστε τις ρυθμίσεις του περιβάλλοντός σας. Ποια μεταβλητή μπορεί να χρησιμοποιηθεί για να αποθηκεύσει τον τύπο CPU του υπολογιστή σας;
Β· Γράψτε ένα σενάριο φλοιού που μπορεί να πει κάτι σαν "hello, world!." Δώστε του τις κατάλληλες άδειες έτσι ώστε να μπορεί να εκτελεστεί. Δοκιμάστε το σενάριο σας.
Β· Δημιουργήστε έναν νέο κατάλογο στον οικείο κατάλογό σας και μετακινήστε το σενάριο στο νέο κατάλογο. Προσθέστε μόνιμα αυτόν τον νέο κατάλογο στην διαδρομή αναζήτησής σας. Βεβαιωθείτε ότι το σενάριο μπορεί να εκτελεσθεί και χωρίς να δώσετε την ακριβή διαδρομή του.
Β· Δημιουργήστε υπο-καταλόγους στον οικείο κατάλογό σας για να αποθηκεύσετε τα διάφορα αρχεία, για παράδειγμα ένα κατάλογο μουσική (music) για τα αρχεία ήχου, ένα κατάλογο έγγραφα (documents) για τις σημειώσεις σας κ.τ.λ. Και χρησιμοποιήστε τους!
Β· Δημιουργήστε μια εξατομικευμένη προτροπή (prompt).
Β· Εμφανίστε τα όρια της χρήσης των πόρων. Μπορείτε να τα αλλάξετε;
Β· Προσπαθήστε να διαβάσετε τις συμπιεσμένες σελίδες εγχειριδίου χωρίς να τις αποσυμπιέσετε πρώτα.
Β· Κάνετε ένα ψευδώνυμο lll που στην ουσία εκτελεί το ls -la.
Β · Γιατί η εντολή tail testfile > testfile δεν λειτουργεί;
Β · Τοποθετήστε ένα CD δεδομένων, όπως το CD εγκατάστασης Linux, και ρίξτε το μια ματιά. Μην ξεχάστε να το εξάγετε όταν δεν το χρειάζεστε άλλο.
· Το σενάριο στην Ενότητα 7.2.5.2 δεν είναι τέλειο. Παράγει σφάλματα για τα αρχεία που είναι κατάλογοι. Προσαρμόστε το σενάριο έτσι ώστε επιλέγει μόνο τα αρχεία για αντιγραφή. Χρησιμοποιείστε την find για να γίνει η επιλογή. Μην ξεχάστε να καταστήσετε το σενάριο εκτελέσιμο προτού προσπαθήσετε να το εκτελέσετε.
· Δοκιμάστε όλα τα πλήκτρα του ποντικιού στις διαφορετικές περιοχές (τερματικό, επιφάνεια εργασίας, taskbar).
Β· Εξερευνήστε τα μενού.
Β· Προσαρμόστε το παράθυρο τερματικού.
Β· Χρησιμοποιήστε το ποντίκι για να αντιγράψετε και να επικολλήσετε κείμενο από ένα τερματικό σε άλλο.
Β· Ανακαλύψτε πώς να διαμορφώσετε τον διαχειριστή παραθύρων σας. Δοκιμάστε διαφορετικά περιβάλλοντα εργασίας (εικονικές οθόνες).
Β· Προσθέστε ένα applet, όπως ένας πίνακας φόρτωσης (load monitor), στην taskbar.
Β· Εφαρμόστε ένα διαφορετικό θέμα (theme).
Β· Ενεργοποιήστε την αποκαλούμενη ατημέλητη (sloppy) εστίαση - αυτό είναι που ένα παράθυρο ενεργοποιείται με την κίνηση του ποντικιού από πάνω του, έτσι ώστε να μην χρειαστεί να κάνετε κλικ στο παράθυρο προκειμένου να είστε σε θέση να το χρησιμοποιήσετε.
Β· Αλλάξτε διαχειριστή παραθύρων.
· Αποσυνδεθείτε και επιλέξτε διαφορετικό διαχειριστή επιφάνειας εργασίας, δηλαδή επιλέξτε το KDE αν χρησιμοποιούσατε το Gnome πριν. Επαναλάβετε τα προηγούμενα βήματα.T
Σε αυτό το κεφάλαιο θα μάθουμε περισσότερα για εκτυπωτές και για εκτύπωση αρχείων. Μετά την ανάγνωση αυτού του τμήματος , θα είστε ικανοί να:
· Μορφοποιείτε τεκμήρια
· Κάνετε προ-επισκόπηση των προς εκτύπωση τεκμηρίων
· Επιλέξετε έναν καλό εκτυπωτή που να συνεργάζεται με το Linux σας
· Εκτυπώνετε αρχεία και να ελέγχετε τη κατάσταση του εκτυπωτή
· Ανιχνεύετε τα λάθη εκτύπωσης
· Βρείτε την απαραίτητη τεκμηρίωση για να εγκαταστήσετε έναν εκτυπωτή
Η εκτύπωση μέσα από μια εφαρμογή είναι πολύ εύκολη, επιλέγοντας την επιλογή εκτύπωσης από το μενού.
Από την γραμμή εντολών, χρησιμοποιείστε την εντολή lp ή lpr.
lp file(s)
lpr file(s)
Αυτές οι εντολές μπορούν να διαβάσουν από σωλήνωση, έτσι μπορείτε να τυπώσετε την έξοδο μια άλλης εντολής με
command | lp
Υπάρχουν πολλές επιλογές διαθέσιμες για να καθοριστεί το σχεδιάγραμμα σελίδων, ο αριθμός αντιγράφων, ο εκτυπωτής με τον οποίο θέλετε να εκτυπώσετε εφόσον έχετε πέραν του ενός διαθέσιμους , το μέγεθος χαρτιού, μονή ή διπλή εκτύπωση εφόσον ο εκτυπωτής σας υποστηρίζει αυτήν την επιλογή, περιθώρια κλπ. Διαβάστε τις σελίδες τεκμηρίωσης για μια πλήρη επισκόπηση.
Μόλις το αρχείο γίνει αποδεκτό στη ουρά εκτύπωσης, η εργασία εκτύπωσης λαμβάνει έναν αναγνωριστικό αριθμό:
davy:~> lp /etc/profile request id is blob-253 (1 file(s)) |
Για να δείτε την ουρά εκτύπωσης, χρησιμοποιείστε τις εντολές lpq ή lpstat. Όταν εισάγονται χωρίς ορίσματα, εμφανίζουν το περιεχόμενο της προεπιλεγμένης ουράς εκτύπωσης.
davy:~> lpq blob is ready and printing Rank Owner Job File(s) Total Size active davy 253 profile 1024 bytes davy:~> lpstat blob-253 davy 1024 Tue 25 Jul 2006 10:20_01 AM CEST |
Ποιος είναι ο εκτυπωτής προεπιλογής σε ένα σύστημα που έχει πρόσβαση σε πολλούς εκτυπωτές;
lpstat -d
davy:~> lpstat -d system default destination: blob |
Ποια είναι η κατάσταση του(ων) εκτυπωτή(ών) μου;
lpstat -p
davy:~> lpstat -p printer blob now printing blob-253. enabled since Jan 01 18:01 |
Αν δεν σας αρέσει αυτό που βλέπετε από τις εντολές κατάστασης, χρησιμοποιείστε τις εντολές lprm ή cancel για να διαγράψετε εργασίες εκτύπωσης.
davy:~> lprm 253 |
Στο γραφικό περιβάλλον, μπορείτε να δείτε σε ένα αναδυόμενο παράθυρο να σας λέει ότι η εργασία σας έχει ακυρωθεί.
Στα μεγαλύτερα περιβάλλοντα, η lpc μπορεί να χρησιμοποιηθεί για να ελέγξει πολλαπλούς εκτυπωτές. Δείτε τις σελίδες τεκμηρίωσης για κάθε εντολή.
Υπάρχουν πολλές γραφικές διεπαφές εκτύπωσης που αποκρύβουν την lp, και οι περισσότερες γραφικές εφαρμογές έχουνε μια λειτουργία εκτύπωσης που χρησιμοποιεί την lp. Δείτε τις ενσωματωμένες λειτουργίες βοήθειας και τη τεκμηρίωση του συγκεκριμένου προγράμματος για περισσότερες πληροφορίες.
Γιατί υπάρχουν δύο εντολές για κάθε εργασία σχετική με εκτύπωση; |
|
---|---|
|
Η εκτύπωση στο UNIX και τους κλώνους του έχει μια μεγάλη ιστορία. Υπήρχαν δύο διαφορετικές προσεγγίσεις: η μέθοδος BSD και η μέθοδος SystemV. Για λόγους συμβατότητας, το Linux με to CUPS (Common Unix Printing System) υποστηρίζει και από τις δύο μεθόδους. Επίσης σημειώστε ότι η lp δεν συμπεριφέρεται ακριβώς όπως η lpr, και η lpq και έχει κάποιες διαφορετικές επιλογές απο την lpstat, και η lprm είνα σχεδόν ίδια αλλά όχι ακριβώς με τη cancel. Ποια χρησιμοποιείτε δεν είναι σημαντικό, απλά επιλέξτε τις εντολές που σας είναι βολικές ,ή αυτές που ίσως να γνωρίζετε από παλιότερες εμπειρίες σας με συστήματα UNIX. |
Αν θέλουμε να πάρουμε κάτι λογικό από τον εκτυπωτή, τα αρχεία πρέπει πρώτα να μορφοποιηθούν. Εκτός από μία αφθονία λογισμικού μορφοποίησης, το Linux έρχεται με τα βασικά εργαλεία και γλώσσες μορφοποίησης του UNIX.
Το σύγχρονο συστήματα Linux υποστηρίζουν άμεση εκτύπωση, χωρίς κάποια μορφοποίηση από το χρήστη, σε μια σειρά τύπων αρχείων: κείμενο, PDF, PostScript και διάφορα προγράμματα μορφοποίησης όπως τα PNG, JPEG, BMP και GIF.
Για αυτά τα αρχεία δεν χρειάζεται μορφοποίηση, το Linux έρχεται με πολλά εργαλεία μορφοποίησης , όπως οι εντολές pdf2ps, fax2ps και a2ps, οι οποίες μετατρέπουν άλλες μορφοποιήσεις σε PostScript. Αυτές οι εντολές μπορούν να δημιουργήσουν αρχεία τα οποία έπειτα μπορούν να χρησιμοποιηθούν σε άλλα συστήματα που δεν έχουν εγκαταστημένα όλα τα εργαλεία μετατροπής.
Εκτός από αυτά τα εργαλεία γραμμής εντολών υπάρχουν πολλά γραφικά προγράμματα επεξεργασίας κειμένου. Διάφορες πακέτα γραφείου είναι διαθέσιμα, πολλές είναι ελεύθερα. Αυτέά κάνουν τη μορφοποίηση αυτόματα με την υποβολή της εργασίας εκτύπωσης. Μερικά ονόματα: OpenOffice.org, KOffice, AbiWord, WordPerfect, κλπ.
Τα ακόλουθα είναι συνηθιμένες γλώσσες μορφοποίησης εκτυπώσεων:
groff: GNU έκδοση της εντολής roff του UNIX. Αποτελεί το front-end για ένα σύστημα μορφοποήσης δεδομένων με το ίδιο όνομα. Κανονικά εκτελεί την εντολή troff και έναν μετα-επεξεργαστή κατάλληλο για την επιλεγμένη συσκευή. Επιτρέπει την παραγωγή αρχείων PostScript.
TeX και το πακέτο μακρο-εντολών LaTeX: μια από τις ευρύτερα χρησιμοποιούμενες γλώσσες σήμανσης σε συστήματα UNIX. Συνήθως καλείται σαν tex, μορφοποιεί αρχεία και παράγει την αντίστοιχη μορφοποιημένη αναπαράσταση του αρχείου, η οποία είναι στοιχειοθετημένη ανεξάρτητα από συσκευή.
Οι τεχνικές (και επιστημονικές) εργασίες ακόμη συχνά γράφονται σε LaTeX γιατί υποστηρίζει μαθηματικούς τύπους, αν και γίνονται προσπάθειες από το W3C (World Wide Web Consortium) να περιλάβει αυτό το χαρακτηριστικό σε άλλες εφαρμογές.
SGML και XML: Υπάρχουν ελεύθεροι σαρωτές διαθέσιμοι για UNIX και Linux. Η XML είναι η SGML της επόμενης γενεάς, αποτελεί τη βάση του DocBook XML, ενός συστήματος τεκμηρίων (αυτό το βιβλίο είναι γραμμένο σε XML, λόγου χάρη).
Εκτύπωση τεκμηρίωσης |
|
---|---|
|
Οι σελίδες τεκμηρίωσης (man pages) περιέχουν δεδομένα troff που πρέπει να μορφοποιηθούν πριν βγουν στον εκτυπωτή σας. Η εκτύπωση γίνεται με την επιλογή -t στην εντολή man: man -t command > man-command.ps Μετά τυπώνετε το αρχείο PostScript. Αν το σύστημά σας έχει προεπιλεγμένο εκτυπωτή, μπορείτε απλά να εισάγετε την εντολή man -t command για απ' ευθείας εκτύπωση. |
Οτιδήποτε μπορείτε να στείλετε στον εκτυπωτή μπορείτε κανονικά να το στείλετε και στην οθόνη σας. Ανάλογα με την τύπο των αρχείων, μπορείτε να χρησιμοποιήσετε μια από αυτές τις εντολές:
Αρχεία PostScript: με την εντολή gv (GhostView).
Αρχεία TeX dvi: με την xdvi, η στο KDE με την kdvi.
Αρχεία PDF: xpdf, kpdf, gpdf, ήτο εργαλείο της Adobe το acroread, που είναι διαθέσιμο δωρεάν αλλά δεν είναι ελεύθερο λογισμικό. Ο αναγνώστης της Adobe υποστηρίζει πιο πρόσφατες εκδόσεις PDF συνήθως. Η έκδοση ενός αρχείου PDF μπορεί να βρεθεί με την εντολή file.
Μέσα από εφαρμογές, όπως το Firefox ή το OpenOffice, συνήθως επιλέγετε το Print Preview από τα menus.
Πριν από λίγα χρόνια, η επιλογή των χρηστών Linux ήταν απλή: ο καθένας εκτελούσε το παλιό καλό LPD από κώδικα BSD Net-2 Μετά το LPRng έγινε περισσότερο δημοφιλές, αλλά σήμερα οι σύγχρονες διανομές Linux χρησιμοποιούν το CUPS, το κοινό σύστημα εκτύπωσης των UNIX. Το CUPS είναι μια υλοποίηση του Internet Printing Protocol (IPP), ένα πρότυπο πρωτόκολλο RFC βασισμένο στο HTTP που αντικαθιστά το αξιοσέβαστο LPD πρωτόκολλο. Το CUPS διανέμεται με δημόσια άδεια GNU. Το CUPS είναι επίσης το προεπιλεγμένο σύστημα εκτύπωσης στο MacOS X.
Οι περισσότερες διανομές έρχονται με μια γραφική διεπαφή για τη διαμόρφωση των δικτυακών και τοπικών (παράλληλης θύρας ή USB) εκτυπωτών. Η διεπαφή σας επιτρέπει να επιλέξετε τον τύπο των εκτυπωτών από έναν κατάλογο και να κάνετε μια εύκολη δοκιμή . Δεν είναι απαραίτητο να ασχοληθείτε με την τροποποίηση και τη θέση των αρχείων διαμόρφωσης. Ελέγξτε τη τεκμηρίωση του συστήματος πριν προσπαθήσετε να εγκαταστήσετε τον εκτυπωτή σας.
Το CUPS μπορεί επίσης να διαμορφωθεί μέσω μιας διεπαφής ιστού η οποία εκτελέιται στην θύρα 631 του υπολογιστή σας. Για να ελέγξετε αυτή τη δυνατότητα, προσπαθήστε να ανοίξετε το localhost:631/help ή localhost:631/.
Δεδομένου ότι όλο και περισσότεροι προμηθευτές εκτυπωτών διαθέτουν οδηγούς για CUPS, το CUPS επιτρέπει την εύκολη σύνδεση με οποιονδήποτε άλλο εκτυπωτή το οποίο μπορείτε να συνδέσετε με μια σειριακή, παράλληλη, ή USB θύρα, καθώς και οποιονδήποτε εκτυπωτή δικτύου. Το CUPS θα εξασφαλίσει μια ομοιόμορφη παρουσίαση των διαφορετικών τύπων εκτυπωτών σε εσάς και τις εφαρμογές σας.
Οι εκτυπωτές οι οποίοι έρχονται μόνο με έναν Win9x οδηγό μπορεί να παρουσιάσουν προβλήματα εάν δεν έχουν άλλη υποστήριξη. Ελέγξετε στο http://linuxprinting.org/ αν έχετε αμφιβολίες.
Στο παρελθόν, η καλύτερη επιλογή σας θα ήτανε εκτυπωτής με PostScript υποστήριξη στο firmwar, αφού σχεδόν όλο το λογισμικό UNIX ή Linux που παράγει εκτυπώσιμη έξοδο, χρησιμοποιεί τοε PostScript, τη βασική γλώσσα της εκδοτικής βιομηχανίας. Οι PostScript εκτυπωτές είναι συνήθως λίγο ακριβότεροι, αλλά εξασφαλίζουν 100% λειτουργία. Στις μέρες μας, εντούτοις, η σημασία αυτής της εμπειρικής συμβουλής μειώνεται.
Σε αυτή την ενότητα, θα συζητήσουμε τι μπορεί να κάνει κάποιος χρήστης αν κάτι πάει στραβά. Δεν θα συζητήσουμε προβλήματα που αναφέρονται στο τμήμα των υπηρεσιών εκτύπωσης το σχετικό με τους δαίμονες, καθώς αυτό είναι δουλειά των διαχειριστών συστημάτων.
Αν εκτυπώσετε λάθος αρχείο, η εργασία μπορεί να ακυρωθεί με την εντολή lprm jobID, όπου το jobID έχει τη μορφή όνομα_εκτυπωτή-αριθμός_εργασίας_εκτύπωσης (οι πληροφορίες εμφανίζονται στο lpq ή lpstat). Αυτό θα δουλέψει αν υπάρχουν και άλλες εργασίες που περιμένουν να εκτυπωθούν σε αυτήν την ουρά εκτύπωσης. Εντούτοις , πρέπει να είστε πραγματικά γρήγοροι αν είστε οι μόνοι που χρησιμοποιείται αυτόν τον εκτυπωτή, δεδομένου ότι οι εργασίες συνήθως μπαίνουν στην ουρά και στέλνονται στον εκτυπωτή σε μερικά δευτερόλεπτα. Μόλις φθάσουν στον εκτυπωτή , είναι πολύ αργά να αφαιρέσετε τις εργασίες με τα εργαλεία του Linux.
Αυτό που μπορείτε να προσπαθήσετε σε αυτές τις περιπτώσεις, ή σε περιπτώσεις όπου υπάρχει λάθος στον οδηγό εκτυπωτή και εμφανίζονται σκουπίδια στον εκτυπωτή, είναι να κλείσετε τον εκτυπωτή. Εντούτοις, αυτό μπορεί να μην είναι το καλύτερο σχέδιο, δεδομένου ότι μπορείτε να προκαλέσετε διαφόρων ειδών δυσλειτουργίες.
Χρησιμοποιείστε την εντολή lpq και δείτε αν μπορείτε να εντοπίσετε την εργασία σας:
elly:~> lpq Printer: lp@blob Queue: 2 printable jobs Server: pid 29998 active Unspooler: pid 29999 active Status: waiting for subserver to exit at 09:43:20.699 Rank Owner/ID Class Job Files Size Time 1 elly@blob+997 A 997 (STDIN) 129 09:42:54 2 elly@blob+22 A 22 /etc/profile 917 09:43:20 |
Πολλοί εκτυπωτές έχουν πλέον διεπαφές ιστού, οι οποίες μπορούν να εμφανίσουν τις πληροφορίες κατάστασης πληκτρολογώντας τη διεύθυνση IP του εκτυπωτή σας στον περιηγητή ιστού:
Εικόνα 8-1. Κατάσταση εκτυπωτή μέσω διεπαφής ιστού
Διεπαφή ιστού CUPS και διεπαφή ιστού εκτυπωτή |
|
---|---|
|
Σημειώστε αυτό δεν είναι η διεπαφή του CUPS και λειτουργεί μόνο για εκτυπωτές που υποστηρίζουν αυτά τα χαρακτηριστικά. Ελέγξτε τη τεκμηρίωση του εκτυπωτή σας. |
Αν το ID της εργασίας σας δεν βρίσκετε εκεί ούτε στον εκτυπωτή σας, ελάτε σε επαφή με τον διαχειριστή συστήματος. Αν το ID της εργασίας παρατίθεται στην έξοδο, ελέγξτε ότι ο εκτυπωτής τυπώνει αυτήν την στιγμή. Σε αυτή την περίπτωση, περιμένετε, η εργασία θα εκτελεστεί σε σύντομο χρονικό διάστημα.
Αν ο εκτυπωτής δεν εκτυπώνει, ελέγξτε ότι έχει χαρτί, ελέγξτε τις φυσικές συνδέσεις στην ηλεκτρική παροχή και στο δίκτυο δεδομένων. Αν αυτά είναι εντάξει, ο εκτυπωτής μπορεί να χρειάζεται επανεκκίνηση. Ρωτήστε τον διαχειριστή συστήματος για συμβουλές.
Στην περίπτωση ενός δικτυακού εκτυπωτή, δοκιμάστε να εκτυπώσετε από έναν άλλο υπολογιστή. Αν ο εκτυπωτής σας είναι προσπελάσιμος από τον υπολογιστή σας (δείτε το Κεφάλαιο 10 για την υπηρεσία ping), μπορείτε να προσπαθήσετε να εκτυπώσετε ένα το μορφοποιημένο αρχείο, όπως ένα αρχείο .ps σε περίπτωση PostScript εκτύπωσης, μέσω ενός πελάτη FTP. Αν αυτό λειτουργεί, το σύστημα εκτύπωσής σας δεν είναι σωστά διαμορφωμένο. Αν αυτό δεν δουλεύει, ίσως ο εκτυπωτής σας δεν αναγνωρίζει τη μορφοποίηση με την οποία το τροφοδοτείται.
Ο ιστοτόπος Eκτυπώσεις GNU/Linux παρέχει περισσότερες πληροφορίες.
Η υπηρεσία εκτύπωσης του Linux έρχεται με ένα σύνολο εργαλείων εκτύπωσης βασισμένα στο πρότυπα εργαλεία UNIX LPD, είτε είναι SystemV ή BSD. Παρακάτω ακολουθεί ένας πίνακας εντολών εκτύπωσης.
Πίνακας 8-1. Νέες εντολές του κεφαλαίου 8: Εκτυπώσεις
Εντολή |
Σημασία |
---|---|
lpr ήr lp |
Εκτύπωση αρχείου |
lpq ή lpstat |
Εμφάνιση ουράς αναμονής |
lprm ή cancel |
Αφαίρεση εργασίας εκτύπωσης |
acroread |
Εμφάνιση αρχείου PDF |
groff |
Εργαλείο μορφοποίησης |
gv |
Εμφάνιση αρχείου PostScript |
printconf |
Διαμόρφωση εκτυπωτών |
xdvi |
Εμφάνιση αρχείου DVI |
xpdf |
Εμφάνιση αρχείου PDF |
a2ps |
Μετασχηματισμός αρχείου σε PostScript |
Η διαμόρφωση και ο έλεγχος των εκτυπωτών συνήθως απαιτούν πρόσβαση σε λογαριασμό υπερ-χρήστη. Σε αυτήν την περίπτωση, μπορείτε να προσπαθήσετε να:
Εγκαταστήσετε έναν εκτυπωτή χρησιμοποιώντας τη γραφική διεπαφή του συστήματός σας.
Εκτυπώσετε μια σελίδα ελέγχου χρησιμοποιώντας τη γραφική διεπαφή.
Εκτυπώσετε μια σελίδα χρησιμοποιώντας την εντολή lp.
Εκτυπώσετε μέσα από μια εφαρμογή όπως, για παράδειγμα Mozilla ή OpenOffice, επιλέγοντας Αρχείο->Εκτύπωση από το μενού.
Αποσυνδέσετε τον εκτυπωτή από το δίκτυο ή το τοπικό μηχανήμα/διακομιστή εκτύπωσης. Τι γίνεται όταν προσπαθείτε να εκτυπώσετε κάτι;
Οι ακόλουθες ασκήσεις μπορούν να γίνουν χωρίς εκτυπωτή ή λογαρισμό υπερ-χρήστη.
Προσπαθήστε να κάνετε αρχεία PostScript από διαφορετικά αρχεία, (π.χ.HTML, PDF, man σελίδες). Ελέγξτε τα αποτελέσματα με την εντολή gv.
Ελέγξτε ότι εκτελείται ο δαίμονας εκτυπώσεων.
Εκτυπώστε τα αρχεία σε κάθε περίπτωση. Τι συμβαίνει;
Δημιουργείστε ένα PostScript αρχείο χρησιμοποιώντας Mozilla. Ελέγξτε το με το gv.
Μετασχηματίστε το σε τύπο PDF. Ελέγξτε το με το xpdf.
Πώς θα προσπαθούσατε να εκτυπώσετε ένα GIF αρχείο από την γραμμή εντολής;
Χρησιμοποιήστε την εντολή a2ps για να εκτυπώσετε το αρχείο /etc/profile σε ένα αρχείο εξόδου. Ελέγξτε πάλι με το gv. Τι συμβαίνει αν εσείς δεν ορίσετε ένα αρχείο εξόδου;
Ατυχήματα συμβαίνουν, αργά ή γρήγορα. Σα αυτό το κεφάλαιο θα συζητήσουμε πώς να διασφαλίσουμε τα δεδομένα χρησιμοποιώντας άλλους υπολογιστές, δισκέτες, CD-ROMs και ταινίες.χ Επίσης θα συζητήσουμε τις πιο δημοφιλείς εντολές συμπίεσης και αρχειοθέτησης.
Με τη συμπλήρωση του κεφαλαίου, θα γνωρίζετε πώς να:
Δημιουργείτε, ελέγχετε και ανοίγετε αρχειοθήκες
Δημιουργείτε δισκέτες εκκίνησης του συστήματός σας
Γράφετε σε CD-ROMs
Κάνετε αυξητικά εφεδρικά αντίγραφα
Δημιουργείτε αρχειοθήκες Java
Βρίσκετε τεκμηρίωση για τη χρήση συσκευών και προγραμμάτων εφεδρείας
Κρυπτογραφείτε τα δεδομένα σας
Αν και το Linux είναι από τα ασφαλέστερα λειτουργικά συστήματα, και ακόμη και αν έχει σχεδιαστεί για να λειτουργεί συνέχεια, τα δεδομένα μπορεί να χαθούν. Η απώλεια δεδομένων είναι συνήθως συνέπεια σφαλμάτων των χρηστών, αλλά μερικές φορές μπορεί να προκληθεί από ένα σφάλμα του συστήματος, όπως απώλεια παροχής ρεύματος, αστοχία δίσκου, γι' αυτό είναι καλή ιδέα να κρατούμε ένα εφεδρικό αντίγραφο των ευαίσθητων ή/και σημαντικών δεδομένων.
Τις περισσότερες φορές, πρώτα συλλέγουμε όλα τα δεδομένα προς αντιγραφή σε μια μοναδική αρχειοθήκη, που μετά θα συμπιέσουμε. Η διαδικασία αρχειοθέτησης περιλαμβάνει τη συν-ένωση όλων των αρχείων και την αφαίρεση των περιττών κενών. Στο Linux, αυτό γίνεται συνήθως με την εντολή tar. Η tar αρχικά σχεδιάστηκε για την αρχειοθέτηση δεδομένων σε ταινίες, αλλά μπορεί επίσης να δημιουργήσει αρχειοθήκες, γνωστές σαν tarballs.
Η tar έχει πολλές επιλογές, οι σημαντικότερες δίνονται παρακάτω:
-v: φλύαρη έξοδος
-t: έλεγχος, εμφανίζει τα περιεχόμενα του tarball
-x: εξαγωγή περιεχομένων αρχειοθήκης
-c: δημιουργία αρχειοθήκης
-f archivedevice: χρήση της archivedevice ως πηγή/προορισμό του tarball, η προεπιλεγμένη συσκευή είναι η πρώτη ταινία (συνήθως /dev/st0 ή κάτι αντίστοιχο)
-j: φίλτρο μέσω bzip2, see Ενότητα 9.1.1.2
Συχνά παραλείπουμε τη παύλα πριν τις επιλογές της tar, όπως θα δείτε στα παρακάτω παραδείγματα.
Χρησιμοποιείτε GNU tar για συμβατότητα |
|
---|---|
|
Οι αρχειοθήκες που δημιουργούνται με ιδιόκτητες εκδόσεις της tar σε ένα σύστημα, μπορεί να μην είναι συμβατές με τις αρχειοθήκες της tar σε άλλο ιδιόκτητο σύστημα. Αυτό μπορεί να σας δημιουργήσει προβλήματα, αφού στην ουσία είναι σαν να μην έχετε κάνει αρχειοθέτηση. Η χρήση της GNU tar σε όλα τα συστήματα γλυτώνει τον διαχειριστή συστημάτων σας από το να ξεσπάσει σε λυγμούς. Το Linux πάντα χρησιμοποιεί τη GNU tar. Όταν δουλεύετε με άλλα συστήματα UNIX, εισάγετε tar --help για να δείτε ποια έκδοση χρησιμοποιείτε. Επικοινωνήστε με το διαχειριστή συστημάτων σας αν δεν βλέπετε τη λέξη GNU. |
Στο παρακάτω παράδειγμα, δημιουργείται μια αρχειοθήκη και στη συνέχεια ανοίγεται.
gaby:~> ls images/ me+tux.jpg nimf.jpg gaby:~> tar cvf images-in-a-dir.tar images/ images/ images/nimf.jpg images/me+tux.jpg gaby:~> cd images gaby:~/images> tar cvf images-without-a-dir.tar *.jpg me+tux.jpg nimf.jpg gaby:~/images> cd gaby:~> ls */*.tar images/images-without-a-dir.tar gaby:~> ls *.tar images-in-a-dir.tar gaby:~> tar xvf images-in-a-dir.tar images/ images/nimf.jpg images/me+tux.jpg gaby:~> tar tvf images/images-without-dir.tar -rw-r--r-- gaby/gaby 42888 1999-06-30 20:52:25 me+tux.jpg -rw-r--r-- gaby/gaby 7578 2000-01-26 12:58:46 nimf.jpg gaby:~> tar xvf images/images-without-a-dir.tar me+tux.jpg nimf.jpg gaby:~> ls *.jpg me+tux.jpg nimf.jpg |
Αυτό το παράδειγμα επίσης δείχνει τη διαφορά ανάμεσα σε ένα αρχειοθετημένο κατάλογο και σε μερικά αρχειοθετημένα αρχεία. Είναι καλό να αρχειοθετείτε μόνο καταλόγους, ώστε τα αρχεία να μη σκορπίζονται εδώ και εκεί όταν ανοίξετε το tarball (αυτό μπορεί να είναι σε ένα άλλο σύστημα, όπου δεν ξέρετε ποια αρχεία ήταν εκεί και ποια προέκυψαν από την αρχειοθήκη).
Όταν στο σύστημά σας έχει συνδεθεί συσκευή ταινίας και έχει διαμορφωθεί από τον διαχειριστή συστήματος, τα ονόματα αρχείων που λήγουν σε .tar αντικαθίστανται με το όνομα της συσκευής, για παράδειγμα:
tar cvf /dev/tape mail/
Ο κατάλογος mail και όλα τα αρχεία που περιέχει θα συμπιεστούν σε ένα αρχείο που θα γραφεί κατ' ευθείαν στην ταινία Θα εμφανιστεί μια λίστα των περιεχομένων επειδή χρησιμοποιήσαμε την επιλογή φλύαρης εξόδου.
Το εργαλείο tar υποστηρίζει τη δημιουργία αυξητικών εφεδρικών αντιγράφων, με την επιλογή -N. Με αυτή την επιλογή, μπορείτε να ορίσετε μια ημερομηνία, και η tar θα ελέγξει την ημερομηνία τροποποίησης για όλα τα περιλαμβανόμενα αρχεία. Αν τα αρχεία έχουν τροποποιηθεί πιο πρόσφατα από την δεδομένη ημερομηνία, τα αρχεία θα συμπεριληφθούν στο εφεδρικό αντίγραφο. Το παρακάτω παράδειγμα χρησιμοποιεί την ημερομηνία δημιουργίας μιας παλαιότερης αρχειοθήκης για να ορίσει την ημερομηνία ελέγχου. Πρώτα, δημιουργείται η αρχική αρχειοθήκη και στη συνέχεια εμφανίζεται η ημερομηνία δημιουργίας της. Μετά δημιουργείται ένα νέο αρχείο, και αμέσως μετά ξεκινούμε αυξητικό εφεδρικό αντίγραφο, που ουσιαστικά περιέχει μόνο το νέο αρχείο:
jimmy:~> tar cvpf /var/tmp/javaproggies.tar java/*.java java/btw.java java/error.java java/hello.java java/income2.java java/income.java java/inputdevice.java java/input.java java/master.java java/method1.java java/mood.java java/moodywaitress.java java/test3.java java/TestOne.java java/TestTwo.java java/Vehicle.java jimmy:~> ls -l /var/tmp/javaproggies.tar -rw-rw-r-- 1 jimmy jimmy 10240 Jan 21 11:58 /var/tmp/javaproggies.tar jimmy:~> touch java/newprog.java jimmy:~> tar -N /var/tmp/javaproggies.tar \ -cvp /var/tmp/incremental1-javaproggies.tar java/*.java 2> /dev/null java/newprog.java jimmy:~> cd /var/tmp/ jimmy:~> tar xvf incremental1-javaproggies.tar java/newprog.java |
Τα πρότυπα σφάλματα ανακατευθύνονται στο /dev/null. Αν δεν γίνει αυτό, η tar θα εμφανίσει ένα μήνυμα για κάθε αμετάβλητο αρχείο, οτι δεν θα αντιγραφεί.
Αυτή η μέθοδος έχει το μειονέκτημα οτι ελέγχει τις ημερομηνίες αρχείων. Πείτε οτι μεταφορτώνετε μια αρχειοθήκη σε ένα κατάλογο που έχει τα εφεδρικά σας αντίγραφα, και η αρχειοθήκη περιέχει αρχεία δημιουργημένα πριν δύο χρόνια. When checking the timestamps of those files against the timestamp on the initial archive, the new files will actually seem old to tar, and will not be included in an incremental backup made using the -N option.
Μια καλύτερη επιλογή είναι η -g, που δημιουργεί μια λίστα αρχείων για αντιγραφή. 'Οταν κάνετε αυξητικά εφεδρικά αντίγραφα, τα αρχεία ελέγχονται με βάση τη λίστα. Το παράδειγμα δείχνει πως δουλεύει:
jimmy:~> tar cvpf work-20030121.tar -g snapshot-20030121 work/ work/ work/file1 work/file2 work/file3 jimmy:~> file snapshot-20030121 snapshot-20030121: ASCII text |
Την επόμενη μέρα, ο χρήστης jimmy εργάζεται στο αρχείο file3 ακόμη λίγο, και δημιουργεί το αρχείο file4. Στο τέλος της μέρα, κάνει ένα νέο εφεδρικό αντίγραφο:
jimmy:~> tar cvpf work-20030122.tar -g snapshot-20030121 work/ work/ work/file3 work/file4 |
Αυτά είναι μερικά πολύ απλά παραδείγματα, αλλά θα μπορούσατε να χρησιμοποιήσετε παρόμοιες εντολές σαν εργασίες cron (δες Ενότητα 4.4.4), που καθορίζει λόφου χάρη ένα όνομα αρχείου για το εβδομαδιαίο εφεδρικό αντίγραφο, και ένα όνομα για το ημερήσιο. Όταν παίρνουμε πλήρη εφεδρικά αντίγραφα, τα εβδομαδιαία και τα ημερήσια 'μηδενίζονται' και ξεκινούμε από την αρχή.
Περισσότερες πληροφορίες στη τεκμηρίωση της tar.
Τα αληθινά εργαλεία |
|
---|---|
|
Όπως πιθανά παρατηρήσατε, η tar είναι OK όταν μιλάμε για έναν απλό κατάλογο, ένα ομοειδές σύνολο αρχείων. Όμως, όταν χρειάζεται να αρχειοθετήσετε ολόκληρα διαμερίσματα ή δίσκους ή μεγαλύτερες εγκαταστάσεις, υπάρχουν ειδικά εργαλεία, που είναι πιο εύχρηστα. Η tar εξηγείται εδώ επειδή είναι πολύ δημοφιλής στη διανομή αρχειοθηκών. Θα σας τύχει συχνά να πρέπει να εγκαταστήσετε λογισμικό που έρχεται στη μορφή “συμπιεσμένου tarball". Δείτε την Ενότητα 9.3 για ένα ευκολότερο τρόπο λήψης τακτικών εφεδρικών αντιγράφων. |
Τα δσδομένα, και τα tarballs, μπορεί να συμπιεστούν με εργαλεία συμπίεσης. Η εντολή gzip θα προσθέσει ένα την κατάληξη .gz στο αρχείο και θα αφαιρέσει το αρχικό αρχείο.
jimmy:~> ls -la | grep tar -rw-rw-r-- 1 jimmy jimmy 61440 Jun 6 14:08 images-without-dir.tar jimmy:~> gzip images-without-dir.tar jimmy:~> ls -la images-without-dir.tar.gz -rw-rw-r-- 1 jimmy jimmy 50562 Jun 6 14:08 images-without-dir.tar.gz |
Η αποσυμπίεση γίνεται με την επιλογή -d.
Η εντολή bzip2 δουλεύει παρόμοια, αλλά χρησιμοποιεί βελτιωμένο αλγόριθμο συμπίεσης, και δημιουργεί παρόμοια αρχεία. Δείτε την τεκμηρίωση της bzip2 για περισσότερα.
Το λογισμικό του Linux συχνά διανέμεται σε μορφή συμπιεσμένου tarball. Η λογική σειρά ενεργειών είναι να ανοίξουμε τις αρχειοθήκες και να βρούμε το αρχείο README και να το διαβάσουμε. Γενικά θα περιέχει οδηγίες εγκατάστασης του λογισμικού.
Η εντολή GNU tar αντιλαμβάνεται τα συμπιεσμένα αρχεία. Με την εντολή
tar zxvf file.tar.gz
αποσυμπιέζουμε και απο-αρχειοθετούμε τα αρχεία .tar.gz ή .tgz files. Με την εντολή
tar jxvf file.tar.bz2
αποσυμπιέζουμε αρχειοθήκες tar που συμπιέστηκαν με bzip2.
Το έργο GNU παρέχει το εργαλείο jar για τη δημιουργία αρχειοθηκών Java. Είναι μια εφαρμογή Java που συνδυάζει πολλαπλά αρχεία σε μια αρχειοθήκη JAR. Αν και πρόκειται για γενικό εργαλείο αρχειοθέτησης και συμπίεσης, βασισμένο στα πρότυπα συμπίεσης ZIP και ZLIΒ, η jar σχεδιάστηκε κυρίως για το πακετάρισμα κώδικα Java, applets και εφαρμογών σε ένα μόνο αρχείο. Όταν συνδυάζονται σε ένα μοναδικό αρχείο, τα συστατικά μια εφαρμογής Java μεταφορτώνονται πολύ ταχύτερα.
Σε αντίθεση με τη tar, η jar συμπιέζει εξ' ορισμού, ανεξάρτητα από άλλα εργαλεία, γιατί βασικά είναι μια έκδοση Java της zip. Επιπλέον, επιτρέπει την υπογραφή από τον συγγραφές επιμέρους τμημάτων της αρχειοθήκης, ώστε να ταυτοποιείται η προέλευσή του.
Η σύνταξη είναι σχεδόν ίδια με αυτή της tar, αναφερόμαστε στη info jar για ειδικές διαφορές.
tar, jar και συμβολικοί σύνδεσμοι |
|
---|---|
|
Ένα αξιοσημείωτο χαρακτηριστικό που δεν αναφέρεται συχνά στη τεκμηρίωση είναι οτι η jar ακολουθεί συμβολικούς συνδέσμους. Τα δεδομένα που δείχνονται από τους συμβολικούς συνδέσμους θα περιληφθούν στην αρχειοθήκη. Η προεπιλογή της tar θα αποθηκεύσει μόνο το συμβολικό σύνδεσμο, αλλά αυτή η συμπεριφορά μπορεί να αλλάξει με την επιλογή -h στην tar. |
Η αποθήκευση αντιγράφων των δεδομένων σε άλλο υπολογιστή είναι άλλο είναι μια απλή και ακριβής μέθοδος εφεδρικών αντιγράφων. Δείτε το Κεφάλαιο 10 για περισσότερες πληροφορίες για τις scp, ftp κλπ..
Στην επόμενη ενότητα θα συζητήσουμε τις τοπικές συσκευές εφεδρικών αντιγράφων.
Στα περισσότερα συστήματα Linux, οι χρήστες έχουν πρόσβαση σε συσκευή δισκέτας. Το όνομα της συσκευής μπορεί να διαφέρει ανάλογα με το σύστημα και τον αριθμό των συσκευών, επικοινωνήστε με τον διαχειριστή του συστήματος σας. Σε μερικά συστήματα, υπάρχει σύνδεσμος /dev/floppy που δείχνει στη σωστή συσκευή, πιθανά τη /dev/fd0 (η πρώτη συσκευή δισκέτας) ή /dev/fd0H1440 (για δισκέτες 1,44MB).
Το εργαλείο fdformat μορφοποιεί τη δισκέτα σε χαμηλό επίπεδο. Το όνομα της συσκευής δίνεται ώς επιλογή. Η fdformat θα εμφανίσει σφάλμα όταν η δισκέτα προστατεύεται για εγγραφή.
emma:~> fdformat /dev/fd0H1440 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done emma:~> |
Η εντολή mformat (από το πακέτο mtools) χρησιμοποιείται για τη δημιουργία DOS-συμβατών δισκετών οι οποίες στη συνέχεια μπορούν να προσπελαστούν με τιςmcopy, mdir και άλλες m-εντολές.
Επίσης είναι διαθέσιμα πολλά γραφικά εργαλεία.
Εικόνα 9-1. Μορφοποιητής δισκέτας
Αφού η δισκέτα μορφοποιηθεί μπορεί να προσαρτηθεί και να προσπελαστεί κανονικά, σαν ένας μικρός κατάλογος, συνήθως ο /mnt/floppy.
Αν το χρειαστείτε, εγκαταστήστε την υπηρεσία mkbootdisk, που κατασκευάζει δισκέτα εκκίνησης για το σύστημά σας.
H εντολή dd χρησιμοποιείται και για να βάλουμε δεδομένα σε δίσκο, ή να τα πάρουμε από εκεί, ανάλογα με τις συσκευές εισόδου και εξόδου. Ένα παράδειγμα:
gaby:~> dd if=images-without-dir.tar.gz of=/dev/fd0H1440 98+1 records in 98+1 records out gaby~> dd if=/dev/fd0H1440 of=/var/tmp/images.tar.gz 2880+0 records in 2880+0 records out gaby:~> ls /var/tmp/images* /var/tmp/images.tar.gz |
Σημειώστε οτι η αποτύπωση γίνεται σε μη-προσαρτημένη συσκευή. Οι δισκέτες που δημιουργούνται με αυτή τη μέθοδο δεν μπορούν να προσαρτηθούν στο σύστημα αρχείων, αλλά σίγουρα είναι μια μέθοδος δημιουργίας δισκετών εκκίνησης και αποθήκευσης δεδομένων. Για περισσότερες πληροφορίες στις δυνατότητες της dd, διαβάστε τις σελίδες τεκμηρίωσης.
Αυτό το εργαλείο είναι μέρος του πακέτου GNU coreutils.
Αποτύπωση δίσκων |
|
---|---|
|
Η εντολή dd μπορεί επίσης να χρησιμοποιηθεί για την ακριβή (χαμηλού επιπέδου) αποτύπωση ολόκληρου σκληρού δίσκου. |
Σε μερικά συστήματα οι χρήστες μπορούν να χρησιμοποιήσουν συσκευές εγγραφής CD. Πρώτα τα δεδομένα σας πρέπει να μορφοποιηθούν. Χρησιμοποιούμε την εντολή mkisofs στον κατάλογο όπου βρίσκονται τα αρχεία προς αντιγραφή. Ελέγξτε με την df αν υπάρχει αρκετός ελεύθερος χώρος, γιατί θα δημιουργηθεί ένα καινούργιο αρχείο μεγέθους περίπου όσο ολόκληρος ο κατάλογος:
[rose@blob recordables] df -h . Filesystem Size Used Avail Use% Mounted on /dev/hde5 19G 15G 3.2G 82% /home [rose@blob recordables] du -h -s . 325M . [rose@blob recordables] mkisofs -J -r -o cd.iso . <--snap--> making a lot of conversions <--/snap--> 98.95% done, estimate finish Fri Apr 5 13:54:25 2002 Total translation table size: 0 Total rockridge attributes bytes: 35971 Total directory bytes: 94208 Path table size(bytes): 452 Max brk space used 37e84 166768 extents written (325 Mb) |
Οι επιλογές -J και -r επιτρέπουν στο δημιουργούμενο CD-ROM να προσαρτάται σε διαφορετικά συστήματα, δείτε τη τεκμηρίωση για πληροφορίες. Μετά από αυτό, το CD μπορεί να γραφτεί με το εργαλείο cdrecord και τις κατάλληλες επιλογές:
[rose@blob recordables] cdrecord -dev 0,0,0 -speed=8 cd.iso Cdrecord 1.10 (i686-pc-linux-gnu) (C) 1995-2001 Joerg Schilling scsidev: '0,0,0' scsibus: 0 target: 0 lun: 0 Linux sg driver version: 3.1.20 Using libscg version 'schily-0.5' Device type : Removable CD-ROM Version : 0 Response Format: 1 Vendor_info : 'HP ' Identification : 'CD-Writer+ 8100 ' Revision : '1.0g' Device seems to be: Generic mmc CD-RW. Using generic SCSI-3/mmc CD-R driver (mmc_cdr). Driver flags : SWABAUDIO Starting to write CD/DVD at speed 4 in write mode for single session. Last chance to quit, starting real write in 0 seconds. Operation starts. |
Ανάλογα με τη συσκευή εγγραφής CD, τώρα θα έχετε αρκετό χρόνο για να ... καπνίσετε ή να φάτε κάτι υγιεινό ή/και πιείτε ένα καφέ. Με το τέλος της εργασίας, θα λάβετε ένα μήνυμα επιβεβαίωσης:
Track 01: Total bytes read/written: 341540864/341540864 (166768 sectors). |
Υπάρχουν και μερικά γραφικά εργαλεία για τη διευκόλυνσή σας. Ένα από τα δημοφιλέστερα είναι το xcdroast, που είναι ελεύθερα διαθέσιμο από τον ιστοτόπο X-CD-Roast και περιλαμβάνεται στα περισσότερα συστήματα και στο κατάλογο GNU. Τόσο το KDE όσο και το Gnome έχουν γραφικές διεπαφές για τη δημιουργία CDs.
Αυτές οι συσκευές συνήθως προσαρτώνται στο σύστημα αρχείων. Μετά τη διαδικασία προσάρτησης, οι συσκευές προσπελαύνονται σαν κανονικοί κατάλογοι, έτσι μπορείτε να χρησιμοποιήσετε τις γνωστές εντολές διαχείρισης αρχείων.
Στο ακόλουθο παράδειγμα, αντιγράφονται εικόνες από μια κάμερα USB σε ένα σκληρό δίσκο:
robin:~> mount /mnt/camera robin:~> mount | grep camera /dev/sda1 on /mnt/camera type vfat (rw,nosuid,nodev) |
Αν η κάμερα είναι η μοναδική συσκευή USB αποθήκευσης που συνδέεται στο σύστημά σας, αυτό είναι ασφαλές. Αλλά οι συσκευές USB λαμβάνουν θέσεις στο κατάλογο /dev όπως συνδέονται στο σύστημα. Έτσι, αν έχετε συνδέσει ένα USB stick στο σύστημά σας, θα είναι στη θέση /dev/sda, και μετά συνδέσετε τη κάμερα, αυτή θα πάρει τη θέση /dev/sdb – αν δεν έχετε δίσκους SCSI disks, που είναι επίσης στις θέσεις /dev/sd*. Σε νεότερα συστήματα, από τον πυρήνα 2.6 και μετά, ένα σύστημα hotplug που λέγεται HAL (Hardware Abstraction Layer) διασφαλίζει οτι οι χρήστες δεν ασχολούνται με τέτοια πράγματα. Αν θέλετε να δείτε που βρίσκεται η συσκευή σας, εισάγετε την dmesg αφού βάλετε τη συσκευή σας.
Τώρα μπορείτε να αντιγράψετε τα αρχεία σας:
robin:~> cp -R /mnt/camera/* images/ robin:~> umount /mnt/camera |
Παρόμοια, ένας οδηγός jazz μπορεί να προσαρτηθεί στο /mnt/jazz.
Για να δουλέψει η συσκευή πρέπει να προστεθούν γραμμές στα /etc/modules.conf και /etc/fstab. Για περισσότερες πληροφορίες δείτε τα HOWTOs της συγκεκριμένης συσκευής. Σε συστήματα με πυρήνα 2.6.x ή ανώτερο, μπορείτε να ελέγξετε τις σελίδες τεκμηρίωσης της modprobe και το αρχείο modprobe.conf.
Αυτό γίνεται με τη tar (δες παραπάνω). Το εργαλείο mt χρησιμοποιείται για τον έλεγχο συσκευών μαγνητικής ταινίας, όπως η /dev/st0. Ολόκληρα βιβλία έχουν γραφεί για τα εφεδρικά αντίγραφα σε ταινίες, επομένως για περισσότερες πληροφορίες δείτε τη λίστα στο Παράρτημα B . Να έχετε υπ' όψη οτι οι βάσεις δεδομένων ίσως έχουν άλλη διαδικασία εφεδρικής αντιγραφής λόγω της αρχιτεκτονικής τους.
Οι κατάλληλες εντολές εφεδρικής αντιγραφής συνήθως τοποθετούνται στους καταλόγους cron για να εκτελούνται τακτικά. Σε μεγαλύτερα περιβάλλοντα, εφαρμόζεται είτε το ελεύθερα διαθέσιμο πακέτο Amanda ή κάποια εμπορική λύση για την εφεδρική αντιγραφή πολλών συστημάτων. Η διαχείριση ταινιών, όμως, είναι εργασία του διαχειριστή συστημάτων, πέρα από τους στόχους αυτού του εγχειριδίου.
Οι περισσότερες διανομές Linux προσφέρουν ειδικά εργαλεία για τη διευκόλυνσή σας. Μια μικρή επισκόπηση:
SuSE: Το YaST περιέχει εκτεταμένα αρθρώματα για εφεδρική αντιγραφή και επαναφορά..
RedHat: Το εργαλείο File Roller παρέχει οπτική διαχείριση για (συμπιεσμένες) αρχειοθήκες. Φαίνεται να προτιμούν το εργαλείο X-CD-Roast για τη μεταφορά δεδομένων σε εξωτερική συσκευή.
Mandrake: X-CD-Roast.
Οι περισσότερες διανομές έρχονται με τις υπηρεσίες BSD dump και restore που δημιουργούν εφεδρικά αντίγραφα για συστήματα αρχείων ext2 και ext3. Αυτό το εργαλείο μπορεί να γράψει σε μια ποικιλία συσκευών και κυριολεκτικά αποτυπώνει τα αρχεία και το σύστημα, bit προς bit στη συγκεκριμένη συσκευή. Όπως και η dd, αυτό επιτρέπει την αντιγραφή ειδικών τύπων αρχείων, όπως αυτά στο /dev.
Το πρόγραμμα rsync είναι ένα γρήγορο και ευέλικτο εργαλείο για απομακρυσμένα εφεδρικά αντίγραφα. Είναι συνηθισμένο στα συστήματα UNIX και τα παρόμοια, εύκολο στην διαμόρφωση και στην χρήση με σενάρια. Αν και το r στο rsync σημαίνει "απομακρυσμένο" ("remote"), δεν χρειάζεται να το πάρετε τοις μετρητοίς. Η "απομακρυσμένη" συσκευή σας μπορεί απλά να είναι μια συσκευή αποθήκευσης USB ή ένα άλλο διαμέρισμα στο δίσκο σας, δεν χρειάζονται ξεχωριστοί υπολογιστές.
Όπως συζητήσαμε στην Ενότητα 3.1.2.3, πρώτα θα πρέπει να προσαρτήσουμε τη συσκευή. Πιθανώς για το παρακάτω θα πρέπει να είστε υπερ-χρήστης (root):
root@theserver# mkdir /mnt/usbstore root@theserver# mount -t vfat /dev/sda1 /mnt/usbstore |
Φιλικότητα προς το χρήστη |
|
---|---|
|
Όλο και περισσότερες διανομές δίνουν στους απλούς χρήστες πρόσβαση σε αφαιρούμενες συσκευές και προσαρτούν αυτόματα συσκευές USB, CD-ROMs κλπ |
(Σε παλαιότερα συστήματα μπορεί να ..ΣτΜ) απαιτείται η εγκατάσταση υποστήριξης USB. Συμβουλευτείτε τον Οδηγό USB για βοήθεια. Ελέγξτε με τη dmesg ότι η /dev/sda1 είναι η σωστή συσκευή προσάρτησης.
Στη συνέχεια μπορείτε να ξεκινήσετε την εφεδρική αντιγραφή, λόγου χάρη για τον κατάλογο /home/karl:
karl@theserver:~> rsync -avg /home/karl /mnt/usbstore |
Ως συνήθως, αναφερθείτε στις σελίδες τεκμηρίωσης για περισσότερα. (Υπάρχουν επίσης διαθέσιμες γραφικές διεπαφές της rsync, ΣτΜ).
Η κρυπτογράφηση είναι συνώνυμη της μυστικότητας. Στη περίπτωση των εφεδρικών αντιγράφων, η κρυπτογράφηση μπορεί αν είναι πολύ χρήσιμη, λόγου χάρη αν πρέπει να αφήσετε τα αντίγραφα σε μέρος που δεν μπορείτε να ελεγξετε τη πρόσβαση, όπως κάποιος διακομιστής.
Εκτός από αυτό, η κρυπτογράφηση μπορεί να εφαρμοστεί επίσης και στ E-mails: κανονικά, το mail δεν είναι κρυπτογραφημένο και συχνά στέλνεται δημόσια στο Διαδίκτυο. Αν όμως το mail σας είναι ιδιωτικό και περιέχει ευαίσθητη πληροφορία, καλύτερα να το κρυπτογραφήσετε.
Στα συστήματα Linux θα βρείτε το GnuPG, δηλαδή GNU Privacy Guard (Φρουρός Ιδιωτικότητας), που είναι ένα πακέτο συμβατό με τα εργαλεία PGP (Pretty Good Privacy) που είναι εμπορικά διαθέσιμα.
Σε αυτό το εγχειρίδιο συζυτούμε μόνο την απλούστερη χρήση των εργαλείων κρυπτογράφησης και θα δείχνουμε τι χρειάζεται για να παράγετε ένα κρυπτογραφικό κλειδί, καθώς και τη χρήση του για τη κρυπτογράφηση των δεδομένων σας, το οποία μετά μπορείτε να αποθηκεύσετε με ασφάλεια. Κατευθύνσεις για πιο προχωρημένη χρήση μπορεί να βρεθεί στις σελίδες τεκμηρίωσης των διαφόρων εντολών.
Πριν κρυπτογραφήσετε τα δεδομένα σας, πρέπει να δημιουργήσετε ένα ζεύγος κλειδιών. Το ζεύγος αποτελείται από ένα ιδιωτικό και ένα δημόσιο κλειδί. Μπορείτε να στείλετε το δημόσιο κλειδί σε όσους ενδιαφέρονται να σας στείλουν κρυπτογραφημένη αλληλογραφία. Αυτοί θα χρησιμοποιήσουν το δημόσιο κλειδί για να κρυπτογραφήσουν τα δεδομένα που θα σας στείλουν, τα οποία εσείς θα αποκρυπτογραφήσετε με το ιδιωτικό κλειδί σας. Πάντα πρέπει να κρατάτε μυστικό το ιδιωτικό κλειδί σας, ποτέ μην το δίνετε, αλλιώς κάποιος άλλος μπορεί να διαβάσει τα δεδομένα που είναι μόνο για σας. Για λόγους πρόσθετης ασφαλείας, το ιδιωτικό κλειδί προστατεύεται από κωδικό πρόσβασης. Το ζεύγος των κλειδιών δημιουργείται με αυτή την εντολή:
willy@ubuntu:~$ gpg --key-gen gpg (GnuPG) 1.4.2.2; Copyright (C) 2005 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. gpg: directory `/home/willy.gnupg' created gpg: new configuration file `/home/willy/.gnupg/gpg.conf' created gpg: WARNING: options in `/home/willy/.gnupg/gpg.conf' are not yet active during this run gpg: keyring `/home/willy/.gnupg/secring.gpg' created gpg: keyring `/home/willy/.gnupg/pubring.gpg' created Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? 1 DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n month <n>y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Willy De Wandel Email address: wdw@mvg.vl Comment: Willem You selected this USER-ID: "Willy De Wandel (Willem) <wdw@mvg.vl>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. Passphrase: |
Τώρα εισάγετε τον κωδικό πρόσβασης. Αυτός μπορεί να είναι μια φράση, όσο μεγαλύτερη τόσο καλύτερα, με τη προυπόθεση οτι θα μπορείτε να τη θυμάστε πάντα. Για επιβεβαίωση, θα πρέπει να ξανα-εισάγετε τον ίδιο κωδικό ξανά:
Τώρα που το ζεύγος των κλειδιών δημιουργείται από ένα πρόγραμμα που βασίζεται σε πρώτους αριθμούς και, μεταξύ άλλων παραγόντων, χρησιμοποιεί και πληροφορίες από τη τρέχουσα δραστηριότητα του συστήματος. Γι' αυτό είναι καλή ιδέα να ξεκινήσετε κάποιο πρόγραμμα, να μετακινήσετε το ποντίκι ή να εισάγετε τυχαίους χαρακτήρες στο παράθυρο τερματικού. Έτσι αυξάνετε τις πιθανότητες να δημιουργήσετε πιο σύνθετο κλειδί, άρα δυσκολότερα στην παραβίαση.
Όταν δημιουργηθεί το κλειδί σας, θα λάβετε ένα μήνυμα σχετικά με το δακτυλικό αποτύπωμα (fingerprint). Αυτό είναι μια ακολουθία 40 δεκαεξαδικών αριθμών, τόσο μεγάλη που είναι πολύ-πολύ δύσκολο να δημιουργηθεί δυο φορές η ίδια ακολουθία, σε οποιονδήποτε υπολογιστή. Μπορείτε να είστε αρκετά σίγουροι οτι πρόκειται για μοναδική ακολουθία. Η σύντομη μορφή αυτού του κλειδιού αποτελείται από τοπ όνομά σας, ακολουθούμενο από τους 8 τελευταίους δεκαεξαδικούς χαρακτήρες..
Μπορείτε να πάρετε πληροφορίες για το κλειδί σας, όπως παρακάτω:
willy@ubuntu:~$ gpg --list-keys /home/willy/.gnupg/pubring.gpg ------------------------------ pub 1024D/BF5C3DBB 2006-08-08 uid Willy De Wandel (Willem) <wdw@mvg.vl> sub 4096g/A3449CF7 2006-08-08 |
Η ταυτότητα κλειδιού (key ID) αυτού του κλειδιού είναι "BF5C3DBB". Μπορείτε να στείλετε το key ID και το όνομά σας σε ένα διακομιστή κλειδιών (key server), ώστε άλλοι χρήστες να μπορούν να πάρουν αυτή τη πληροφορία για να κρυπτογραφήσουν δεδομένα για να σας τα στείλουν. Εναλλακτικά, μπορείτε να στείλετε το δημόσιο κλειδί σας απ´ ευθείας σε αυτούς που θέλετε. Το δημόσιο μέρος του κλειδιού σας είναι η μακρά σειρά αριθμών που βλέπετε όταν χρησιμοποιείτε την επιλογή --export στην εντολή gpg:
gpg --export -a
Όμως, όσον αφορά αυτό το εγχειρίδιο, υποθέτουμε οτι χρειάζεστε το κλειδί για να κρυπτογραφήσετε μόνοι σας τα δεδομένα σας. Διαβάστε τις σελίδες τεκμηρίωσης της gpg για περισσότερες πληροφορίες.
Τώρα μπορείτε να κρυπτογραφήσετε μια αρχειοθήκη .tar ή μια συμπιεσμένη αρχειοθήκη, πριν την αποθηκεύσετε στο μέσο εφεδρικής αντιγραφής ή στο μεταφέρετε στον διακομιστή εφεδρικών αντιγράφων. Χρησιμοποιείστε την εντολή gpg ως εξής:
gpg -e -r (part of) uid archive
Η επιλογή -e λέει στη gpg να κρυπτογραφήσει, η επιλογή -r υποδεικνύει για ποιόν γίνεται η κρυπτογράφηση. Να έχετε υπ' όψη οτι μόνο ο χρήστης που το όνομά του ακολουθεί την επιλογή -r μπορεί να αποκρυπτογραφήσει ξανά υα δεδομένα. Ένα παράδειγμα:
willy@ubuntu:~$ gpg -e -r Willy /var/tmp/home-willy-20060808.tar |
Με την επιλογή -d μπορείτε να αποκρυπτογραφήσετε δεδομένα που έχουν κρυπτογραφηθεί για σας. Τα δεδομένα θα εμφανιστοούν στην οθόνη σας αλλά ένα κρυπτογραφημένο αντίγραφο θα μείνει στο δίσκο σας. Έτσι, για να δείτε τα αποκρυπτογραφημένα δεδομένα με κάποιο πρόγραμμα πρέπει να τα σώσετε στο δίσκο. Αυτό γίνεται με την επιλογή -o της εντολής gpg:
willy@ubuntu:~$ gpg -d -o /var/tmp/home-willy-decrypt.tar /var/tmp/home-willy-20060808.tar.gpg You need a passphrase to unlock the secret key for user: "Willy De Wandel (Willem) <wdw@mvg.vl>" 4096 ELG-E key, ID A3449CF7, created 2006-08-08 (main key ID BF5C3DBB) gpg: encrypted with 4096-bit ELG-E key, ID A3449CF7, created 2006-08-08 "Willy De Wandel (Willem) <wdw@mvg.vl>" |
Όχι κωδικός πρόσβασης = όχι δεδομένα |
|
---|---|
|
Αν δεν μπορείτε να θυμηθείτε τον κωδικό πρόσβασης, τα δεδομένα είναι χαμένα. Ούτε ο διαχειριστής συστήματος μπορεί να αποκρυπτογραφήσει. Γι' αυτό το λόγο μερικές φορές σημαντικά κλειδιά και κωδικοί πρόσβασης αποθηκεύονται ακόμη και σε τραπεζικές θυρίδες |
Εδώ είναι μια λίστα εντολών σχετικών με τα εφεδρικά αντίγραφα:
Πίνακας 9-1. Νέες εντολές στο κεφάλαιο 9: Εφεδρικά αντίγραφα
Εντολή |
Σημασία |
---|---|
bzip2 |
Συμπίεση αρχέιων. |
cdrecord |
Εγγραφή δεδομένων σε CD. |
dd |
Αποτύπωση αρχείου |
fdformat |
Μορφοποίηση (χαμηλού επιπέδου) δισκέτας. |
gpg |
(Απο-)Κρυπτογράφηση δεδομένων. |
gzip |
(Απο-)Συμπίεση αρχείων. |
mcopy |
Αντιγραφή αρχείων MSDOS από/προς UNIX. |
mdir |
Εμφάνιση καταλόγου MSDOS. |
mformat |
Μορφοποίηση δισκέτας για σύστημα αρχείων MSDOS. |
mkbootdisk |
Δημιουργία αυτόνομης δισκέτας εκκίνησης του τρέχοντος συστήματος. |
mount |
Προσάρτηση συστήματος αρχείων (ενσωμάτωση στο υπάρχον σύστημα αρχείων συνδέοντάς το σε ένα σημείο προσάρτησης). |
rsync |
Συγχρονισμός περιεχομένου καταλόγων. |
tar |
Δημιουργία αρχειοθήκης σε ταινία, επίσης χρησιμοποιείται και για δημιουργία αρχειοθηκών σε δίσκους. |
umount |
Απο-προσάρτηση συστήματος αρχείων. |
Κάντε ένα εφεδρικό αντίγραφο του οικείου καταλόγου σας στο /var/tmp με την εντολή tar. Μετά συμπιέστε το αρχείο με την gzip ή bzip2. Κάντε μια καθαρή αρχειοθήκη, που δεν δημιουργεί χάος όταν ανοίγει.
Μορφοποιήστε μια δισκέτα και βάλτε μέσα μερικά αρχεία από τον οικείο κατάλογό σας. Ανταλλάξτε δισκέτες με άλλο χρήστη και πάρτε τα αρχεία από τη δική του δισκέτα.
Μορφοποιήστε τη δισκέτα για το MSDOS. Χρησιμοποιήστε τα mtools για μεταφορά και διαγραφή αρχείων.
Τι συμβαίνει όταν προσπαθείτε να προσαρτήσετε στο σύστημα αρχείων μια μη-μορφοποιημένη δισκέτα;
Αν έχετε ένα USB stick, προσπαθήστε να μεταφέρετε εκεί ένα αρχείο.
Με την εντολή rsync, κάντε ένα αντίγραφο του οικείου καταλόγου σας σε ένα άλλο τοπικό ή απομακρυσμένο σύστημα αρχείων.
Δημιουργείστε μια αρχειοθήκη tar του οικείου καταλόγου σας και κρυπτογραφήστε τη.
Όταν φθάνουμε στη δικτύωση, το Linux έχει σημαντικό προβάδισμα, όχι μόνο επειδή η δικτύωση είναι στενά συνυφασμένη με το ίδιο το λειτουργικό σύστημα και υπάρχει μια μεγάλη γκάμα ελεύθερων εργαλείων και εφαρμογών, αλλά επίσης επειδή είναι ιδιαίτερα ανθεκτικό σε βαρύ επικοινωνιακό φόρτο, πράγμα που μπορεί να επιτευχθεί μόνο μετά από πολλά χρόνια εκσφαλμάτωσης και ελέγχου σαν Ανοικτό Λογισμικό.
Έχουν γραφεί ράφια ολόκληρα με πληροφορίες σχετικές με το Linux και τη δικτύωση, εδώ θα προσπαθήσουμε να δώσουμε μια επισκόπηση. Με τη συμπλήρωση αυτού του κεφαλαίου θα γνωρίζετε περισσότερα για
υποστηριζόμενα πρωτόκολλα δικτύωσης
αρχεία διαμόρφωσης δικτύου
εντολές διαμόρφωσης και ελέγχου του δικτύου
δαίμονες και τα προγράμματα πελάτες διαφόρων δικτυακών εφαρμογών
διαμοιρασμό αρχείων και δικτυακές εκτυπώσεις
απομακρυσμένη εκτέλεση εντολών και εφαρμογών
βασική διασύνδεση δικτύων
ασφαλή εκτέλεση απομακρυσμένων εφαρμογών
τείχη προστασίας και ανίχνευση εισβολής
Ένα πρωτόκολλο, με απλά λόγια, είναι ένα σύνολο κανόνων επικοινωνίας.
Για να μεταφέρουμε δεδομένα στο δίκτυο, λόγου χάρη ένα E-mail από έναν υπολογιστή σε κάποιον άλλο στην άλλη άκρη του κόσμου, πρέπει να συνεργαστούν πολλοί υπολογιστές και πολλά διαφορετικά λογισμικά.
Όλο αυτό το υλικό και λογισμικό μπορεί να είναι ιδιαίτερα ετερογενές. Φανταστείτε το πρόγραμμα E-mail: μιλά με το λειτουργικό σύστημα του υπολογιστή, μέσω συγκεκριμένου πρωτοκόλλου, αλλά δεν μπορεί να μιλήσει με το υλικό. Χρειαζόμαστε ένα ειδικό πρόγραμμα στο λειτουργικό σύστημα που να εκτελεί αυτή τη λειτουργία. Με τη σειρά του, ο υπολογιστής πρέπει να μπορεί να επικοινωνεί με το δίκτυο μέσω τηλεφωνικής ή άλλης γραμμής. Και το υλικό επικοινωνίας μεταφέρει τα δεδομένα του E-mail από μια συσκευή σε άλλη, μέχρι τον υπολογιστή παραλαβής.
Όλοι αυτοί οι διαφορετικοί τύποι πρωτοκόλλων επικοινωνίας ομαδοποιούνται σε 7 επίπεδα, γνωστά ως το Open Systems Interconnection Reference Model, ή OSI Model για συντομία. Για εύκολη κατανόηση, το μοντέλο περιορίζεται σε ένα απλοποιημένο σύστημα 4 επιπέδων, όπως περιγράφεται παρακάτω:
Πίνακας 10-1. Το απλοποιημένο OSI Model
Όνομα επιπέδου |
Πρωτόκολλα επιπέδου |
---|---|
Επίπεδο εφαρμογής |
HTTP, DNS, SMTP, POP, ... |
Επίπεδο μεταφοράς |
TCP, UDP |
Επίπεδο δικτύου |
IP, IPv6 |
Επίπεδο προσπέλασης δικτύου |
PPP, PPPoE, Ethernet |
Κάθε επίπεδο μπορεί να ζητήσει τις υπηρεσίες του αμέσως κατώτερου επιπέδου, και να εξάγει υπηρεσίες στο αμέσως ανώτερο επίπεδο. Με άλλα λόγια επικοινωνεί μόνο με τα γειτονικά επίπεδα. Ας πάρουμε το παράδειγμα του E-mail: το εισάγετε μέσω του επιπέδου εφαρμογής. Στον υπολογιστή σας ταξιδεύει προς τα κάτω, μέσω του επιπέδου μεταφοράς και δικτύου. Ο υπολογιστής τελικά το αποστέλλει μέσω του επιπέδου προσπέλασης δικτύου. Μέσω αυτού του επιπέδου το μήνυμα ταξιδεύει στο κόσμο του διαδικτύου. Στον προορισμό, ο υπολογιστής παραλαμβάνει το μήνυμα μέσω του ίδιου επιπέδου, στη συνέχεια το μήνυμα ανέρχεται μέσω των επιπέδων δικτύου και μεταφοράς του υπολογιστή, και παρουσιάζεται στο χρήστη μέσω του επιπέδου εφαρμογής.
Είναι αρκετά πιο περίπλοκο |
|
---|---|
|
Τόσο στη παραπάνω όσο και στις ενότητες που ακολουθούν θα συναντήσετε ορολογία δικτύου. Οι όροι αυτοί σας δίνουν απλά μιαν αφετηρία, για να βρείτε περισσότερες πληροφορίες. |
Το Linux υποστηρίζει διάφορα δικτυακά πρωτόκολλα. Αναφέρουμε τα πιο σημαντικά:
Το Πρωτόκολλο Ελέγχου Μεταφοράς (Transport Control Protocol, TCP) και το Πρωτόκολλο Διαδικτύου (Ιnternet Protocol, ΙΡ) είναι οι δύο δημοφιλέστεροι τρόποι επικοινωνίας στο Διαδίκτυο. Πολλές εφαρμογές, όπως ο περιηγητής και η εφαρμογή E-mail, έχουν κτιστεί πάνω σε αυτά τα πρωτόκολλα.
Πολύ απλά, το IP παρέχει μια λύση για την αποστολή πακέτων πληροφορίας από έναν υπολογιστή σε άλλον, ενώ το TCP διασφαλίζει οτι τα πακέτα τακτοποιούνται σε ροές, έτσι ώστε πακέτα διαφορετικών εφαρμογών δεν μπερδεύονται, και τα πακέτα στέλνονται και παραλαμβάνονται στη σωστή σειρά.
Ένα καλό σημείο εκκίνησης για να μάθουμε περισσότερα για το TCP και IP είναι τα ακόλουθα τεκμήρια:
man 7 ip: Περιγράφει την υλοποίηση του πρωτοκόλλου IPv4 στο Linux (η έκδοση 4 είναι η πιο διαδεδομένη έκδοση του πρωτοκόλλου IP).
man 7 tcp: Υλοποίηση του πρωτοκόλλου TCP.
RFC793, RFC1122, RFC2001 για το TCP, και RFC791, RFC1122, RFC1112 για το IP.
Τα τεκμήρια Request For Comments (RFC) περιέχουν περιγραφές προτύπων δικτύωσης, πρωτοκόλλων, εφαρμογών και υλοποιήσεων. Αυτά τα τεκμήρια τα διαχειρίζεται η επιτροπή Internet Engineering Task Force, μια διεθνής κοινότητα που ασχολείται με την ομαλή λειτουργία και εξέλιξη του Διαδικτύου και την ανάπτυξη της αρχιτεκτονικής του.
Μπορείτε να βρείτε τα RFCs στο http://www.ietf.org/rfc.html.
Κανείς δεν περίμενε την τόσο γρήγορη ανάπτυξη του Διαδικτύου. Το IP αποδείχτηκε οτι έχει μερικά μειονεκτήματα όταν στο δίκτυο υπάρχει ένας πολύ μεγάλος αριθμός υπολογιστών. Το πιο σημαντικό μειονέκτημα είναι η διαθεσιμότητα μιας μοναδικής διεύθυνσης για κάθε υπολογιστή του δικτύου. Έτσι, η έκδοση 6 σχεδιάστηκε για να καλύψει τις ανάγκες του σημερινού Διαδικτύου.
Δυστυχώς το IPv6 δεν υποστηρίζεται από όλες τις εφαρμογές και τις υπηρεσίες. Αυτή τη στιγμή είναι σε εξέλιξη μια διαδικασία μετάβασης προς το IPv6. Για μερικές εφαρμογές εφαρμόζεται το παλιό πρωτόκολλο, ενώ για άλλες εφαρμογές ισχύει η νέα έκδοση. Έτσι, όταν ελέγχετε τη διαμόρφωση του δικτύου σας, μερικές φορές μπορεί να διαπιστώσετε τη ταυτόχρονη εκτέλεση των δύο πρωτοκόλλων, αν και λαμβάνονται πολλά μέτρα έτσι ώστε τα δύο πρωτόκολλα να μην μπερδεύονται.
Περισσότερες πληροφορίες μπορούν να βρεθούν στα ακόλουθα τεκμήρια:
man 7 ipv6: η Linux υλοποίηση του πρωτοκόλλου IPv6.
RFC1883: περιγράφει το πρωτόκολλο IPv6.
Ο πυρήνας του Linux έχει ενσωματωμένη υποστήριξη για τα πρωτόκολλα PPP (Point-to-Point-Protocol), SLIP (Serial Line IP), PLIP (Parallel Line IP) and (PPPoE) PPP-over-Ethernet. Το PPP είναι ο πιο δημοφιλής τρόπος σύνδεσης στο Διαδίκτυο μέσω τηλεφωνικής γραμμής, συνήθως μέσω ενός παρόχου (ISP-Internet Service Provider), αν και σε πυκνοκατοικημένες περιοχές συχνά αντικαθίσταται με το PPPoE, το πρωτόκολλο για συνδέσεις ADSL (Asymmetric Digital Subscriber Line)
Οι περισσότερες διανομές Linux παρέχουν εύχρηστα εργαλεία ρύθμισης των συνδέσεων με το Διαδίκτυο. Τα μόνα πράγματα που συνήθως χρειάζεστε για τη περίπτωση του PPP είναι μια τηλεφωνική γραμμή (και το απαραίτητα modem ΣτΜ.), καθώς το όνομα χρήστη και το κωδικό πρόσβασης για να συνδεθείτε με κάποιο πάροχο. Αυτά τα δεδομένα εισάγονται στη γραφική διεπαφή του εργαλείου διαμόρφωσης, το οποίο πιθανότατα θα ξεκινά και θα σταματά τη σύνδεση με την πάροχο.
(Στη πραγματικότητα τα πράγματα δεν είναι τόσο απλά, ιδίως όταν δεν έχετε ελέγξει τον τύπο του modem μέσω του οποίου θέλετε να συνδεθείτε. Πριν το αγοράσετε βεβαιωθείτε οτι συνεργάζεται με τη διανομή Linux που χρησιμοποιείτε, ιδίως αν πρόκειται για modem ενσωματωμένο στη μητρική πλακέτα. Επίσης, στη περίπτωση των συνδέσεων ADSL, χρειάζεται προσοχή στις συνδέσεις μέσω USB modem, λογω αντιστοίχων προβλημάτων. Πάντα να ελέγχετε για τη συμβατότητα των συσκευών. ΣτΜ.)
Ο πυρήνας Linux έχει ενσωματωμένες δυνατότητες ISDN. Το Isdn4linux ελέγχει τις κάρτες ISDN και εξομοιώνει ένα modem με το σύνολο εντολών Hayes ("AT" εντολές). Οι δυνατότητες ξεκινούν από απλή σύνδεση τερματικού μέρχι πλήρη σύνδεση στο Διαδίκτυο.
Ελέγξτε τη τεκμηρίωση του συστήματος.
Το Appletalk είναι το όνομα της ομάδας πρωτοκόλλων διαδικτύωσης της Apple. Επιτρέπει την ομότιμη (peer-to-peer) δικτύωση υπολογιστών και παρέχει βασικές λειτουργίες όπως διαμοιρασμό αρχείων και εκτυπωτών. Κάθε υπολογιστής μπορεί ταυτόχρονα να δρα ως πελάτης και διακομιστής, καθώς το απαραίτητο υλικό και λογισμικό είναι διαθέσιμα σε κάθε υπολογιστή Apple.
Το Linux παρέχει πλήρη δικτύωση AppleTalk. Το Netatalk είναι μια υλοποίηση του AppleTalk στο επίπεδο του πυρήνα, που αρχικά υπήρχε στα συστήματα BSD. Περιλαμβάνει υποστήριξη δρομολόγησης AppleTalk, υποστήριξη συστημάτων αρχείων UNIX και AFS με AppleShare, και υποστήριξη εκτυπωτών UNIX και AppleTalk.
Για τη συμβατότητα με τα περιβάλλοντα MS Windows, στα συστήματα UNIX μπορεί να εγκατασταθεί το πακέτο πρωτοκόλλων Samba, που περιλαμβάνει iυποστήριξη για τα πρωτόκολλα NMB και SMB. Το πρωτόκολλο SMB (Server Message Block, γνωστό και ως πρωτόκολλο Session Message Block, NetBIOS ή LanManager) χρησιμοποιείται στα MS Windows 3.11, NT, 95/98, 2000 και XP για το διαμοιρασμό δίσκων και εκτυπωτών.
Οι βασικές λειτουργίες του πακέτου Samba είναι: διαμοιρασμός οδηγών δίσκων Linux με υπολογιστές Windows, προσπέλαση διαμοιραζόμενων πόρων SMB από υπολογιστές Linux, διαμοιρασμός εκτυπωτών Linux με υπολογιστές Windows και το αντίστροφο.
Οι περισσότερες διανομές Linux παρέχουν ένα πακέτο samba, που εκτελεί τις περισσότερες ρυθμίσεις διακομιστή και ξεκινά εξ' ορισμού κατά την εκκίνηση τους δαίμονες smbd, τον διακομιστή Samba, και nmbd, τον διακομιστή ονομάτων NetBIOS. To Samba μπορεί να διαμορφωθεί μέσω γραφικής διεπαφής, ή διεπαφής ιστού και από τη γραμμή εντολών και μέσω αρχείων διαμόρφωσης. Οι δαίμονες κάνουν έναν υπολογιστή Linux να φαίνεται σαν υπολογιστής MS Windows. Σε ένα παράθυρο των MS Windows My Network Places/Network Neighbourhood; ο διαμοιρασμός αρχείων και εκτυπωτών από έναν υπολογιστή Linux θα είναι ακριβώς το ίδιο σαν νο διαμοιρασμό από υπολογιστή MS Windows.
Περισσότερες πληροφορίες μπορούν να βρεθούν στα τεκμήρια:
man smb.conf: περιγράφει τη μορφοποίηση του κύριου αρχείου διαμόρφωσης Samba.
Ο ιστοτόπος Samba Project Documentation (ή κάποιος κατοπτρικός του samba.org) περιέχει ένα ευανάγνωστο οδηγό εγκατάστασης και ελέγχου, που επίσης εξηγεί πως μπορείτε να διαμορφώσετε τον διακομιστή Samba σαν Primary Domain Controller. Επίσης είναι διαθέσιμες όλες οι σελίδες τεκμηρίωσης.
Το Linux επίσης υποστηρίζει Amateur Radio, WAN (X25, Frame Relay, ATM), InfraRed και άλλες ασύρματες συνδέσεις, αλλά επειδή αυτές οι συνδέσεις απαιτούν ειδικό υλικό, δεν θα τις συζητήσουμε σε αυτί το εγχειρίδιο.
Όλες οι μεγάλες, φιλικές προς το χρήστη διεπαφές παρέχουν γραφικές διεπαφές που επιτρέπουν την εύκολη σύνδεση του υπολογιστή σε ένα τοπικό δίκτυο, σε πάροχο υπηρεσιών Διαδικτύου ή για ασύρματη σύνδεση. Αυτά τα εργαλεία ξεκινούν είτε από τη γραμμή εντολών ή από το menu:
Στο Ubuntu η διαμόρφωση γίνεται με την επιλογή menu System->Administration->Networking.
Στο RedHat υπάρχει το εργαλείο redhat-config-network, που έχει γραφική διεπαφή και διεπαφή κειμένου.
Το YAST ή YAST2 του SuSe είναι ένα γενικό εργαλείο διαμόρφωσης.
Τα Mandrake/Mandriva έχουν το Network and Internet Configuration Wizard, που ξεκινά από το Mandrake Control Center.
Στο Gnome: gnome-network-preferences.
Στο KDE: knetworkconf.
Η τεκμηρίωση του συστήματος παρέχει πολλές συμβουλές και πληροφορίες για τη χρήση αυτών των εργαλείων.
Πληροφορίες που θα πρέπει να δώσετε::
Για σύνδεση σε τοπικό δίκτυο, στη δουλειά λόγου χάρη: όνομα υπολογιστή, όνομα πεδίου (υπο-δικτύου), διεύθυνση IP (καθώς και netmask, gateway IP, IP διακομιστή DNS ΣτΜ.). An θέλετε να στήσετε δικό σας τοπικό δίκτυο, στο σπίτι λόγου χάρη, καλύτερα να διαβάσετε λίγο παραπάνω. Σε οργανωμένα περιβάλλοντα οι παραπάνω πληροφορίες μπορεί να δίνονται αυτόματα στον υπολογιστή κατά την εκκίνηση (μέσω DHCP, ΣτΜ.). Αν βρίσκεστε σε αμφιβολία, αφήστε τη πληροφρία ασυμπλήρωτη (και ρωτήστε τον διαχειριστή συστημάτων ΣτΜ.).
Για σύνδεση με το Διαδίκτυο (μέσω τηλεφωνικής γραμμής ΣτΜ.): όνομα χρήστη και κωδικό πρόσβασης για τον πάροχό σας, τηλεφωνική γραμμή και modem. Συνήθως ο πάροχος δίνει αυτόματα τη διεύθυνση IP και όλες τις άλλες απαραίτητες πληροφορίες για να συνδεθείτε στο Διαδίκτυο.
Τα γραφικά εργαλεία τροποποιούν τα αρχεία διαμόρφωσης δικτύου, χρησιμοποιώντας λίγες συγκεκριμένες εντολές. Τα ακριβή ονόματα των αρχείων διαμόρφωσης και η θέση τους στο σύστημα αρχείων εξαρτάται κατά πολύ από τη διανομή και την έκδοση. Όμως, μερικά αρχεία διαμόρφωσης είναι κοινά σε όλα τα συστήματα UNIX:
Το αρχείο /etc/hosts περιέχει πάντα τη διεύθυνση IP του localhost, 127.0.0.1, που χρησιμοποιείται για δια-διεργασιακή επικοινωνία. Ποτέ μην αφαιρέσετε αυτή τη γραμμή! Μερικές φορές το αρχείο περιέχει και τις διευθύνσεις πρόσθετων υπολογιστών, που μπορούν να προσπελαστούν χωρίς τη χρήση εξωτερικής υπηρεσίας ονομασίας, δηλαδή διακομιστή DNS (Domain Name Service).
Να ένα δείγμα αρχείου hosts για ένα μικρό οικιακό δίκτυο:
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.52.10 tux.mylan.com tux 192.168.52.11 winxp.mylan.com winxp |
Διαβάστε περισσότερα στο man hosts.
Το αρχείο /etc/resolv.conf καθορίζει την IP διεύθυνση του(ων) διακομιστή(ων) DNS, δείτε την Ενότητα 10.3.7. Το αρχείο περιέχει επίσης το όνομα (ή ονόματα) πεδίου σας:
search mylan.com nameserver 193.134.20.4 |
Διαβάστε περισσότερα στις σελίδες τεκμηρίωσης resolv.conf.
Το αρχείο /etc/nsswitch.conf ορίζει τη σειρά προσπέλασης σε διαφορετικές υπηρεσίες ονομασίας. Για τη χρήση του Διαδικτύου, είναι σημαντικό να υπάρχει το dns στη γραμμή "hosts":
[bob@tux ~] grep hosts /etc/nsswitch.conf hosts: files dns |
Αυτό δίνει εντολή στον υπολογιστή σας να αναζητήσει ονόματα υπολογιστών και διευθύνσεις IP πρώτα στο αρχείο /etc/hosts, και να προσπελάσει ένα DNS server αν ο συγκεκριμένος υπολογιστής δεν εμφανίζεται στο τοπικό αρχείο hosts. Άλλες πιθανές υπηρεσίες ονομασίας είναι οι LDAP, NIS and NIS+.
Περισσότερα στο man nsswitch.conf.
Τα γραφικά εργαλεία και σενάρια των διαφόρων διανομών είναι front-ends της εντολής ip (ή των ifconfig και route σε παλιότερα συστήματα) για την εμφάνιση και διαμόρφωση της δικτυακής διαμόρφωσης του πυρήνα.
Η εντολή ip χρησιμοποιείται για να αποδίδει διευθύνσεις IP στις διεπαφές, να ρυθμίζει τις διαδρομές των υπο-δικτύων, να εμφανίζει πληροφορίες σχετικές με το TCP/IP κλπ..
Οι ακόλουθες εντολές εμφανίζουν διευθύνσεις IP και πληροφορίες δρομολόγησης:
benny@home benny> ip addr show 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo inet6 ::1/128 scope host 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:50:bf:7e:54:9a brd ff:ff:ff:ff:ff:ff inet 192.168.42.15/24 brd 192.168.42.255 scope global eth0 inet6 fe80::250:bfff:fe7e:549a/10 scope link benny@home benny> ip route show 192.168.42.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default via 192.168.42.1 dev eth0 |
Σημειώστε τα παρακάτω (εντολή ip addr show, ΣτΜ):
εμφανίζονται δύο διεπαφές δικτύου, ακόμη και σε συστήματα με μόνο μια κάρτα δικτύου: Το "lo" είναι ο τοπικός βρόχος, που χρησιμοποιείται για εσωτερική επικοινωνία. Το "eth0" είναι το συνηθισμένο όνομα της πραγαματικής διεπαφής. Μην αλλάξετε ποτέ τη διαμόρφωση του τοπικού βρόχου, αλλιώς ο υπολογιστής σας θα έχει προβλήματα! Οι ασύρματες διεπαφές συνήθως ορίζονται ως "wlan0"; οι διεπαφές modem ως "ppp0", αλλά μπορεί να υπάρχουν και άλλα ονόματα.
Οι διευθύνσεις IP σημειώνονται με "inet": ο τοπικός βρόχος έχει πάντα διεύθυνση 127.0.0.1, η πραγματική διεπαφή μπορεί να έχει οποιοδήποτε συνδυασμό.
Η διεύθυνση υλικού (MAC address) της διεπαφής δικτύου, που μπορεί να απαιτείται ως τμήμα της διαδικασίας ταυτοποίησης για τη σύνδεση στο δίκτυο, σημειώνεται με "ether". Ο τοπικός βρόχος έχει 6 ζεύγη μηδενικά, ενώ η κάρτα δικτύου έχει 6 ζεύγη δεκαεξαδικών αριθμών, όπου τα 3 πρώτα ζεύγη καθορίζουν τον κατασκευαστή της κάρτας.
(Η εντολή ip route show δείχνει πληροφορίες δρομολόγησης, δηλαδή την προεπιλεγμένη διεύθυνση IP της πύλης με την οποία επικοινωνεί η διεπαφή δικτύου για την αποστολή/παραλαβή των πακέτων, ΣτΜ.).
Αν και η εντολή ip είναι ο πιο σύγχρονος τρόπος διαμόρφωσης ενός συστήματος Linux, η εντολή ifconfig είναι ακόμη πολύ δημοφιλής. Χωρίς κάποια επιλογή εμφανίζει τις πληροφορίες της διεπαφής δικτύου:
els@asus:~$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:50:70:31:2C:1 inet addr:60.138.67.31 Bcast:66.255.255.255 Mask:255.255.255.192 inet6 addr: fe80::250:70ff:fe31:2c14/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31977764 errors:0 dropped:0 overruns:0 frame:0 TX packets:51896866 errors:0 dropped:0 overruns:0 carrier:0 collisions:802207 txqueuelen:1000 RX bytes:2806974916 (2.6 GiB) TX bytes:2874632613 (2.6 GiB) Interrupt:11 Base address:0xec00 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:765762 errors:0 dropped:0 overruns:0 frame:0 TX packets:765762 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:624214573 (595.2 MiB) TX bytes:624214573 (595.2 MiB) |
Εδώ, επίσης, σημειώνουμε τις σημαντικότερες πλευρές διαμόρφωσης της διεπαφής:
Η διεύθυνση IP σημειώνεται με "inet addr".
Η διεύθυνση υλικού σημειώνεται με "HWaddr".
Τόσο η ifconfig όσο και η ip εμφανίζουν λεπτομερέστερες πληροφορίες διαμόρφωσης και αρκετά στατιστικά για κάθε διεπαφή, καθώς επίσης αν είναι σε λειτουργία ("UP" and "RUNNING").
(Σημειώνουμε οτι οι εντολές δείχνουν περισσότερες πληροφορίες για τη διεπαφή που είναι ενεργή, ΣτΜ.).
Στους φορητούς υπολογιστές μερικές φορές απαιτείται η ενεργοποίηση πρόσθετων καρτών (για παράδειγμα σύνδεσης σε ασύρματα δίκτυα κινητής τηλεφωνίας ΣτΜ.) που εισάγονται μέσω θύρας PCMCIA. Αυτό επιτυγχάνεται μέσω της υπηρεσίας ελέγχου cardctl, ή pccardctl σε νεότερες διανομές.
Ένα παράδειγμα χρήσης:
cardctl insert
Τώρα η κάρτα μπορεί να διαμορφωθεί με τη βοήθεια της γραφικής διεπαφής ή της γραμμής εντολών. Πριν βγάλετε τη κάρτα, εισάγετε την εντολή:
cardctl eject
Όμως μια καλή διανομή πρέπει να περιλαμβάνει υποστήριξη PCMCIA στα εργαλεία διαμόρφωσης δικτύου, αποτρέποντας τους χρήστες από τη απ' ευθείας χρήση των εντολών PCMCIA.
Η λεπτομερής συζήτηση για τη διαμόρφωση του δικτύου είναι έξω από τους στόχους αυτού του εγχειριδίου. Η κύρια πηγή πληροφόρησής σας θα είναι οι σελίδες τεκμηρίωσης της υπηρεσίας που θέλετε να εγκαταστήσετε. Για πρόσθετο διάβασμα:
The Modem-HOWTO: Βοήθεια για την επιλογή, σύνδεση, διαμόρφωση, εκσφαλμάτωση και κατανόηση των modems για PC.
LDP HOWTO Index, section 4.4: κατηγοριοποιημένη λίστα από HOWTOs για γενική δικτύωση, πρωτόκολλα, τηλεφωνικές συνδέσεις, DNS, VPNs, γέφυρες, δρομολογητές, ασφάλεια, κλπ.
Τα περισσότερα συστήματα έχουν μια έκδοση του αρχείου ip-cref (εντοπίστε το με την εντολή locate); η μορφοποίηση ps είναι αναγνώσιμη με την εντολή gv. (Στο κατάλογο του Ubuntu /usr/share/doc θα βρείτε πολύ ενδιαφέρον υλικό ΣτΜ.).
Σε ένα σύστημα Linux, το όνομα συσκευής lo ή local loop (τοπικός βρόχος) συνδέεται με την εσωτερική διεύθυνση IP 127.0.0.1. Ο υπολογιστής θα ταλαιπωρηθεί πολύ αν αυτή η συσκευή δεν είναι παρούσα. Πρέπει να υπάρχει ακόμη και αν ο υπολογιστής δεν είναι στο δίκτυο.
Η πρώτη συσκευή Ethernet, eth0 είναι συνήθως η τυπική κάρτα δικτύου, που δείχνει στη διεύθυνση IP του τοπικού σας δικτύου. Οι κανονικοί υπολογιστές συνήθως έχουν μια μόνο διεπαφή δικτύου. Οι δρομολογητές, που συνδέουν υπο-δίκτυα μεταξύ τους, έχουν μια συσκευή δικτύου για κάθε υπο-δίκτυο που εξυπηρετούν.
Αν χρησιμοποιείτε modem to connect για να συνδεθείτε στο Διαδίκτυο, η συσκευή σας πιθανότατα ονομάζεται ppp0.
Υπάρχουν πολλά ακόμη ονόματα, λόγου χάρη για διεπαφές για Virtual Private Networks (VPNs). Επίσης πολλαπλές διεπαφές μπορεί να είναι ταυτόχρονα ενεργές, έτσι ώστε η έξοδος των εντολών ifconfig ή ip μπορεί να είναι αρκετά μεγάλη, αν δεν υπάρχουν ειδικές επιλογές. Ακόμη και πολλαπλές διεπαφές του ίδιου τύπου μπορεί να είναι ενεργές ταυτόχρονα. Σε αυτή τη περίπτωση αριθμούνται με τη σειρά: η πρώτη παίρνει την τιμή 0, η δεύτερη την τιμή 1, η τρίτη 2 κλπ. Αυτή η περίπτωση συναντάται σε πολλούς διακομιστές εφαρμογών, ή άλλα συστήματα που έχουν διαμόρφωση για περίπτωση βλάβης, σε δρομολογητές, τείχη ασφαλείας, κλπ.
Εκτός από την εντολή ip, η διαμόρφωση δικτύου μπορεί να εμφανιστεί και με την εντολή netstat που έχει πολλές επιλογές και είναι γενικά χρήσιμη σε συστήματα UNIX.
Οι πληροφορίες δρομολόγησης εμφανίζονται με την επιλογή -nr στην εντολή netstat:
bob:~> netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.42.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo 0.0.0.0 192.168.42.1 0.0.0.0 UG 40 0 0 eth0 |
Πρόκειται για ένα τυπικό υπολογιστή σε ένα δίκτυο IP. Έχει μόνο μια συσκευή δικτύου, την eth0. Η διεπαφή lo είναι ο τοπικός βρόχος.
Ο σύγχρονος τρόπος |
|
---|---|
|
Ο σύγχρονος τρόπος λήψης αυτής της πληροφορίας είναι με την εντολή ip (Δες παραπάνω για ένα ακόμη παράδειγμα ΣτΜ): ip route show |
Όταν ο υπολογιστής προσπαθεί να επικοινωνήσει με έναν υπολογιστή σε άλλο υπο-δίκτυο από το δικό του , πράγμα που σημειώνεται με τη γραμμή που ξεκινά με 0.0.0.0, θα στείλει τη σχετική αίτηση στον δρομολογητή (πύλη εξόδου, gateway, ΣτΜ.) με διεύθυνση IP 192.168.42.1, και θα το κάνει με τη κύρια διεπαφή του, eth0.
Υπολογιστές που βρίσκονται στο ίδιο δίκτυο, σύμφωνα μα τη γραμμή που ξεκινά με 192.168.42.0, θα προσεγγίζονται πάλι μέσω της κύριας διεπαφής, αλλά δεν απαιτείται δρομολογητής, τα δεδομένα απλά τοποθετούνται στο δίκτυο.
Η πληροφορία δρομολόγησης μπορεί να είναι πολύ πιο σύνθετη, με αρκετά ζεύγη διαφορετικών "Destination-Gateway" για σύνδεση σε διαφορετικά δίκτυα. Αν έχετε πρόσβαση σε ένα διακομιστή εφαρμογών δοκιμάστε να εμφανίσετε τις δικές του πληροφορίες δρομολόγησης.
Στα συστήματα Linux υπάρχει μια μεγάλη γκάμα εργαλείων για τη διαχείριση δικτύου και απομακρυσμένη διαχείριση συστημάτων. Τόσο η διανομή σας, όσο και οι γνωστοί ιστοτόποι ελεύθερου λογισμικού περιέχουν πολλά ενδιαφέροντα πακέτα. Εδώ δεν πρόκειται να τα συζητήσουμε γιατί θα ξεφύγουμε πολύ, γι' αυτό αναφερθείτε στη τεκμηρίωση του κάθε προγράμματος που σας ενδιαφέρει.
Θα συζητήσουμε μόνο τα συνήθη εργαλεία κειμένου για UNIX/Linux.
Για να εμφανίσετε πληροφορίες για υπολογιστές ή πεδία (domains), χρησιμοποιείστε την εντολή host:
[emmy@pc10 emmy]$ host www.eunet.be www.eunet.be. has address 193.74.208.177 [emmy@pc10 emmy]$ host -t any eunet.be eunet.be. SOA dns.eunet.be. hostmaster.Belgium.EU.net. 2002021300 28800 7200 604800 86400 eunet.be. mail is handled by 50 pophost.eunet.be. eunet.be. name server ns.EU.net. eunet.be. name server dns.eunet.be. |
Παρόμοια πληροφορία μπορείτε να εμφανίσετε με την εντολή dig, η οποία δίνει και πρόσθετες πληροφορίες για τον τρόπο αποθήκευσης των πληροφοριών στο διακομιστή ονομάτων.
Για να ελέγξετε αν ένα υπολογιστής λειτουργεί, χρησιμοποιείστε την εντολή ping. Αν το σύστημά σας στέλνει πολλά πακέτα, διακόπτετε τη ping μεCtrl+C (Μερικά συστήματα μπορεί για λόγους ασφαλείας να μην απαντούν στη ping και σε μερικές άλλες διερευνητικές εντολές ΣτΜ):
<[emmy@pc10 emmy]$ ping a.host.be PING a.host.be (1.2.8.3) from 80.20.84.26: 56(84) bytes of data. 64 bytes from a.host.be(1.2.8.3):icmp_seq=0 ttl=244 time=99.977msec --- a.host.be ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 99.977/99.977/99.977/0.000 ms |
Για να ελέγξουμε τη διαδρομή που ακολουθούν τα πακέτα από τον υπολογιστή μας προς κάποιον άλλο, χρησιμοποιούμε την εντολή traceroute:
[emmy@pc10 emmy]$ /usr/sbin/traceroute www.eunet.be traceroute to www.eunet.be(193.74.208.177),30 hops max,38b packets 1 blob (10.0.0.1) 0.297ms 0.257ms 0.174ms 2 adsl-65.myprovider.be (217.136.111.1) 12.120ms 13.058ms 13.009ms 3 194.78.255.177 (194.78.255.177) 13.845ms 14.308ms 12.756ms 4 gigabitethernet2-2.intl2.gam.brussels.skynet.be (195.238.2.226) 13.123ms 13.164ms 12.527ms 5 pecbru2.car.belbone.be (194.78.255.118) 16.336ms 13.889ms 13.028ms 6 ser-2-1-110-ias-be-vil-ar01.kpnbelgium.be (194.119.224.9) 14.602ms 15.546ms 15.959ms 7 unknown-195-207-939.eunet.be (195.207.93.49) 16.514ms 17.661ms 18.889ms 8 S0-1-0.Leuven.Belgium.EU.net (195.207.129.1) 22.714ms 19.193ms 18.432ms 9 dukat.Belgium.EU.net (193.74.208.178) 22.758ms * 25.263ms |
Σε μερικά συστήματα, η traceroute έχει μετονομαστεί σε tracepath.
Αν θέλετε να μάθετε συγκεκριμένες πληροφορίες για κάποιο όνομα πεδίου (domain name) μπορείτε να ρωτήσετε με την εντολή whois, που ρωτά κάποιον από τους πολλούς διακομιστές whois, όπως παρακάτω:
[emmy@pc10 emmy]$ whois cnn.com [whois.crsnic.net] Whois Server Version 1.3 $<--snap server message--> Domain Name: CNN.COM Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: http://www.networksolutions.com Name Server: TWDNS-01.NS.AOL.COM Name Server: TWDNS-02.NS.AOL.COM Name Server: TWDNS-03.NS.AOL.COM Name Server: TWDNS-04.NS.AOL.COM Updated Date: 12-mar-2002 >>> Last update of whois database: Fri, 5 Apr 2002 05:04:55 EST <<< The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and Registrars. [whois.networksolutions.com] $<--snap server message--> Registrant: Turner Broadcasting (CNN-DOM) 1 CNN Center Atlanta, GA 30303 Domain Name: CNN.COM Administrative Contact: $<--snap contactinfo--> Technical Contact: $<--snap contactinfo--> Billing Contact: $<--snap contactinfo--> Record last updated on 12-Mar-2002. Record expires on 23-Sep-2009. Record created on 22-Sep-1993. Database last updated on 4-Apr-2002 20:10:00 EST. Domain servers in listed order: TWDNS-01.NS.AOL.COM 149.174.213.151 TWDNS-02.NS.AOL.COM 152.163.239.216 TWDNS-03.NS.AOL.COM 205.188.146.88 TWDNS-04.NS.AOL.COM 64.12.147.120 |
Για άλλα ονόματα πεδίου, εκτός από τα .com, .net, .org και .edu, ίσως χρειαστεί να καθορίσετε τον διακομιστή whois που θα χρησιμοποιήσετε::
whois domain.be@whois.dns.be
Το Linux είναι πολύ καλή πλατφόρμα για τη παροχή δικτυακών υπηρεσιών. Σ' αυτή την ενότητα θα προσπαθήσουμε να δώσουμε μια επισκόπηση των πιο γνωστών διακομιστών και εφαρμογών δικτύου.
Η προσφορά μιας υπηρεσίας στους χρήστες μπορεί να προσεγγιστεί με δύο τρόπους. Ένας δαίμονας ή μια υπηρεσία μπορεί να εκτελεστεί αυτόνομα, ή μπορεί να εξαρτάται από την ενεργοποίηση μιας άλλης υπηρεσίας.
Οι υπηρεσίες δικτύων που χρησιμοποιούνται πολύ, συνήθως εκτελούνται αυτόνομα: είναι ανεξάρτητα προγράμματα δαίμονες που εκτελούνται συνεχώς. Ξεκινούν πιθανότατα κατά την εκκίνηση του συστήματος, και περιμένουν τα αιτήματα σε συγκεκριμένα σημεία σύνδεσης ή θύρες τις οποίες είναι ρυθμισμένα για να ακούν. Όταν έρχεται ένα αίτημα, υποβάλλεται σε επεξεργασία, και το ακρόαση συνεχίζεται μέχρι το επόμενο αίτημα. Ένας διακομιστής ιστού είναι ένα χαρακτηριστικό παράδειγμα: τον θέλετε να είναι διαθέσιμος 24 ώρες την ημέρα, και εάν είναι πάρα πολύ απασχολημένος πρέπει να δημιουργήσει περισσότερα στιγμιότυπα του εαυτού του για να εξυπηρετήσει τους ταυτόχρονους χρήστες. Άλλα παραδείγματα είναι οι μεγάλες αρχειοθήκες λογισμικού όπως το Sourceforge ή ο ο κατοπτρικός διακομσιτής Tucows, οι οποίοι πρέπει να χειριστούν χιλιάδες αιτήματα FTP ανά ημέρα.
Ένα παράδειγμα μιας αυτόνομης υπηρεσίας δικτύου στον υπολογιστή σας μπορεί να είναι το named (δαίμονας ονομάτων), ένας ενταμιευτής-διακομιστής ονομάτων. Οι αυτόνομες υπηρεσίες εκτελούν ξεχωριτή διεργασίας, που μπορείτε να ελέγξετε οποτεδήποτε χρησιμοποιώντας τη ps:
bob:~> ps auxw | grep named named 908 0.0 1.0 14876 5108 ? S Mar14 0:07 named -u named |
Εντούτοις, υπάρχουν μερικές υπηρεσίες που μπορείτε να χρησιμοποιήσετε στον υπολογιστή σας, ακόμα κι αν δεν υπάρχει καμία εκτελούμενη διεργασία διακομιστή για αυτές τις υπηρεσίες. Τέτοια παραδείγματα είναι η υπηρεσία FTP, η υπηρεσία ασφαλούς αντιγραφής ή η υπηρεσία finger. Αυτές οι υπηρεσίες έχουν τον δαίμονα Διαδικτύου (inetd) να ακούει γι' αυτές..
Στον οικιακό υπολογιστή σας, τα πράγματα είναι συνήθως λίγο πιο ήρεμα. Μπορεί να έχετε ένα μικρό δίκτυο, λόγου χάριν, και μπορεί να μεταφέρετε τα αρχεία από ένα υπολογιστή σε άλλο κατά διαστήματα, χρησιμοποιώντας FTP ή Samba (για συνδεσιμότητα με υπολογιστές MS-Windows). Σ' αυτές τις περιπτώσεις, η εκκίνηση όλων αυτών των υπηρεσιών που χρειάζεστε περιστασιακά και η διαρκής εκτέλεσή τους θα ήταν μια απώλεια πόρων. Έτσι, στις μικρές εγκαταστάσεις, θα βρείτε τους απαραίτητους δαίμονες να εξαρτώνται από ένα κεντρικό πρόγραμμα, που ακούει σε όλους τις θύρες των υπηρεσιών για τις οποίες είναι αρμόδιο.
Αυτός ο υπερ-διακομιστής, ο δαίμονας υπηρεσιών Διαδικτύου, τίθεται σε λειτουργία στην εκκίνηση του συστήματος. Υπάρχουν δύο συνηθισμένες υλοποιήσεις: ο inetd και ο xinetd (ο εκτεταμένος δαίμονας υπηρεσιών Διαδικτύου). Σε κάθε σύστημα Linux εκτελείται ο ένας ή ο άλλος δαίμονας.
bob:~> ps -ef | grep inet root 926 1 0 Mar14 ? 00:00:00 xinetd-ipv6 -stayalive -reuse \ -pidfile /var/run/xinetd.pid |
Οι υπηρεσίες για τις οποίες είναι υπεύθυνος ο δαίμονας Διαδικτύου, παρατίθενται στο αρχείο διαμόρφωσής, /etc/inetd.conf, για το inetd, και στον κατάλογο /etc/xinetd.d για το xinetd. Υπηρεσίες που διαχειρίζεται συνήθως ο δαίμονας είναι ο διαμοιρασμός αρχείων και εκτυπωτών, τα SSH, FTP, Telnet, ο δαίμονας διαμόρφωσης Samba, οι υπηρεσίες talk και time.
Μόλις παραληφθεί ένα αίτημα σύνδεσης, ο κεντρικός διακομιστής θα αρχίσει ένα στιγμιότυπο του απαιτούμενου διακομιστή. Έτσι, στο παρακάτω παράδειγμα, όταν ο χρήστης bob αρχίζει μια σύνοδο FTP στον τοπικό υπολογιστή, εκτελείται ένας δαίμονας FTP όσο η σύνοδος είναι ενεργή:
bob:~> ps auxw | grep ftp bob 793 0.1 0.2 3960 1076 pts/6 S 16:44 0:00 ncftp localhost ftp 794 0.7 0.5 5588 2608 ? SN 16:44 0:00 ftpd: localhost.localdomain: anonymous/bob@his.server.com: IDLE |
Φυσικά, το ίδιο συμβαίνει όταν ανοίγετει συνδέσεις με απομακρυσμένους υπολογιστές: είτε ένας δαίμονας απαντά άμεσα, ή ένας απομακρυσμένος (x)inetd ξεκινά την υπηρεσία χρειάζεστε και την σταματά όταν εγκαταλείπετε.
Το Sendmail είναι το τυπικό πρόγραμμα διακομιστή ή Πράκτορα Μεταφοράς Ταχυδρομείου για πλατφόρμες Unix. Είναι στιβαρό, επεκτάσιμο, και όταν διαμορφώνεται κατάλληλα με το σωστό υλικό, μπορεί να διαχειριστεί χιλιάδες χρήστες χωρίς πρόβλημα. Περισσότερες πληροφορίες για το τη διαμόρφωση του Sendmail περιλαμβάνονται στα πακέτα sendmail και sendmail-cf. Θα χρειαστεί να διαβάσετε τα αρχεία README και README.cf στο /usr/share/doc/sendmail. Επίσης χρήσιμη είναι η τεκμηρίωση στα man sendmail και man aliases.
Το Qmail είναι ένας άλλος διακομιστής ταχυδρομείου, που κερδίζει δημοτικότητα επειδή υποστηρίζει ότι είναι ασφαλέστερος από το Sendmail. Ενώ το Sendmail είναι ένα μονολιθικό πρόγραμμα, το Qmail αποτελείται από τα μικρότερα μέρη που αλληλεπιδρώντας και εξασφαλίζουν καλύτερη ασφάλεια. Το Postfix είναι ένας άλλος διακομιστής ταχυδρομείου ο οποίος είναι κερδίζει δημοτικότητα.
Αυτοί οι διακομιστές διαχειρίζονται ταχυδρομικέ λίστες, φίλτρα, ανίχνευση ιών και άλλα πολλά. Ελεύθεροι και εμπορικοί ανιχνευτές ιών είναι διαθέσιμοι για χρήση με Linux. Παραδείγματα του λογισμικού ταχυδρομικών λιστών είναι τα Mmailman, Listserv, Majordomo και EZmlm. Δείτε ιστοσελίδες του αγαπημένου σας ανιχνευτή ιών για πληροφορίες υποστήριξης πελατών και διακομιστών Linux. Τα Amavis και Spamassassin είναι ελεύθερες υλοποιήσεις ανιχνευτή ιών και ανιχνευτή ανεπιθύμητου ταχυδρομείου (spam).
Τα δημοφιλέστερα πρωτόκολλα στο ταχυδρομείο πρόσβασης εξ αποστάσεως είναι τα POP3 και IMAP4. Τα IMAP και POP επιτρέπουν την offline λειτουργία, την απομακρυσμένη πρόσβαση στο νέο ταχυδρομείο, και οι δύο στηρίζονται σε έναν διακομιστή SMTP για να στείλουν την αλληλογραφία.
Ενώ το POP είναι ένα απλό πρωτόκολλο, εύκολο να εφαρμοστεί και το οποίο υποστηρίζεται από σχεδόν οποιοδήποτε πελάτη ταχυδρομείου, το IMAP προτιμάται επειδή:
It can manipulate persistent message status flags.
Μπορεί να αποθηκεύσει και να μεταφέρει μηνύματα ταχυδρομείου.
Μπορεί να προσπελάσει και να διαχειριστεί πολλαπλές ταχυδρομικές θυρίδες (mailboxes).
Υποστηρίζει ταυτόχρονες ενημερώσεις μοιραζόμενων ταχυδρομικών θυρίδων.
Είναι επίσης κατάλληλο για πρπσπέλαση του Usenet και άλλων τεκμηρίων.
Το IMAP δουλεύει on-line και off-line.
Είναι βελτιστοποιημένο για λειτουργία on-lin, ειδικά σε συνδέσεις χαμηλής ταχύτητας.
Υπάρχουν πολλοί πελάτες ταχυδρομείου, διεπαφής κειμένου και γραφικών, θα αναφέρουμε λίγους από τους πιο συνηθισμένους. Διαλέξτε όποιον θέλετε.
Η εντολή mail του UNIX υπάρχει εδώ και πολλά χρόνια, ακόμη και πριν τη δικτύωση. Είναι μια απλή διεπαφή για αποστολή μηνυμάτων και αρχείων small fπρος άλλους χρήστες, που μπορούν να σώσουν το μήνυμά τους, να το ανακατευθύνουν, να απαντήσουν, κλπ.
Αν δεν χρησιμοποιείται πια σαν πελάτης, το πρόγραμμα mail είναι ακόμη χρήσιμο, για παράδειγμα για να στείλουμε το αποτέλεσμα μιας εντολής σε κάποιον:
mail <future.employer@whereIwant2work.com> < cv.txt
Ο αναγνώστης ταχυδομείου elm παρουσιάζει πολλές βελτιώσεις ως προς το mail, όπως και το pine (Pine Is Not ELM). Ο αναγνώστης ταχυδρομείου mutt είναι ακόμη πιο πρόσφατος και προσφέρει χαρακτηριστικά όπως νήματα.
Για αυτούς που προτιμούν γραφική διεπαφή για το ταχυδρομείο τους (και προβλήματα στον καρπό ή στον αγκώνα) υπάρχουν εκατοντάδες επιλογές πρακτόρων. Οι πιο δημοφιλείς στους νέους χρήστες είναι ο Mozilla Mail/Thunderbird, που έχει εύκολη διαμόρφωση επιλογών αντι-spam, και το Evolution, που μοιάζει πολύ με το MS-Outlook. Το Kmail είναι δημοφιλές στους χρήστες KDE.
Εικόνα 10-1. Ανάγνωση ταχυδρομείου και ειδήσεων με το Evolution
Επίσης υπάρχουν διαθέσιμες δεκάδες εφαρμογές web mail, όπως τα Squirrelmail, (Horde ΣτΜ.), Yahoo! mail, gmail του Google και Hotmail.
Μια επισκόπηση είναι διαθέσιμη στο Linux Mail User HOWTO.
Οι περισσότερες διανομές Linux περιλαμβάνουν το fetchmail, μια υπηρεσία ανάκτησης και προώθησης ταχυδρομείου. Προσκομίζει το ταχυδρομείο από τους απομακρυσμένους διακομιστές ταχυδρρομείου (POP, IMAP και μερικούς άλλους) και το προωθείι στο τοπικό σύστημα παράδοσης.. Στη συνέχεια μπορείτε να χειριστείτε το ανακτημένο ταχυδρομείο χρησιμοποιώντας τους κανονικούς πελάτες ταχυδρομείου. Το fetchmail μπορεί να δουλεύει σαν δάιμονας για να ελέγχει διαδοχικά ένα ή περισσότερα συστήματα ανά καθορισμένο χρονικό διάστημα. Παραδείγματα πληροφοριών και χρήσης μπορούν να βρεθούν στις σελίδες τεκμηρίωσης, και στο κατάλογο /usr/share/doc/fetchmail[-<version>]. που περιέχει μια πλήρη λίστα χαρακτηριστικών και ένα FAQ για αρχαρίους
Το φίλτρο procmail μπορεί να χρησιμοποιηθεί για το φιλτράρισμα του εισερχόμενου ταχυδρομείου, να δημιουργήσει τους ταχυδρομικές λίστες, να προ-επεξεργαστεί το ταχυδρομείο, να προωθήσει επιλεκτικά ταχυδρομείο, κλπ. Το συνοδευτικό πρόγραμμα formail, μεταξύ των άλλων, επιτρέπει την παραγωγή αυτόματων απαντήσεων και τον διαχωρισμό των ταχυδρομικών θυρίδων. Το procmail λειτουργεί εδώ και αρκετά χρόνια σε συστήματα Unix και Linux και είναι ένα πολύ στιβαρό σύστημα, σχεδιασμένο να εργάζεται και στις χειρότερες συνθήκες. Περισσότερες πληροφορίες μπορούν να βρεθούν στο κατάλογο /usr/share/doc/procmail[-<version>]και στις σελίδες τεμκηρίωσης.
Ο Apache είναι κατά πολύ ο δημοφιλέστερος διακομιστής Ιστού, που χρησιμοποιείται σε περισσότερους από τους μισούς διακομιστές Ιστού στο Διαδίκτυο. Οι περισσότερες διανομές Linux περιλαμβάνουν τον Apache. Ανάμεσα στα πλεονεκτήματα του Apache είναι ο τμηματικός σχεδιασμός, η υποστήριξη SSL, η σταθερότητα και η ταχύτητα. Με κατάλληλο υλικό και διαμόρφωση μπορεί να υποστηρίξει ακόμα και τα υψηλότερα φορτία.
Στα συστήματα Linux, η διαμόρφωση διακομιστή βρίσκεται συνήθως στο κατάλογο /etc/httpd. Το σημαντικότερο αρχείο διαμόρφωσης είναι το httpd.conf που είναι αρκετά ευεξήγητο. Εάν χρειαστείτε τη βοήθεια, μπορείτε να την βρείτε στη τεκμηρίωση του httpd ή στον ιστοτόπο του Apache.
Στη πλατφόρμα του Linux υπάρχουν διάφοροι περιηγητές Ιστού, ελεύθεροι και εμπορικοί. Ο πλοηγός Netscape ως η μόνη συμπαθής επιλογή είναι από καιρό παρελθόν, δεδομένου ότι το Mozilla/Firefox προσφέρει μια ανταγωνιστική εναλλακτική λύση που εκτελείτται σε πολλά άλλα λειτουργικά συστήματα, όπως το MS-Windows και MacOS Χ επίσης.
Ο Amaya είναι ο περιηγητής του W3C. Ο Opera είναι ένας εμπορικός περιηγητής, συμπαγής και γρήγορος. Πολλοί διαχειριστές επιφάνειας εργασίας προσφέρουν χαρακτηριστικά περιήγησης Ιστού, στους διαχειριστές αρχείων τους, όπως ο nautilus.(του Gnome, και ο konqueror του KDE, ΣτΜ).
Μεταξύ των περιηγητών κειμένου οι δημοφιλέστεροι είναι οι lynx και links. Ίσως να χρειαστεί να ορίσετε διακομιστές διαμεσολάβησης (proxy servers) στο φλοιό σας, ρυθμίζοντας τις αντίστοιχες μεταβλητές. Οι περιηγητές κειμένου είναι γρήγοροι και εύχρηστοι ότνα δεν υπάρχει γραφικό περιβάλλον, για παράδειγμα μέσα σε σενάρια φλοιού.
Οι επιχειρήσεις και οι οργανισμοί συχνά θέλουν τους χρήστες τους να χρησιμοποιούν διακομιστή διαμεσολάβησης. Ειδικά σε περιβάλλοντα με πολλούς χρήστες, ένας διακομιστής διαμεσολάβησης επιτρέπει την ταχύτερη φόρτωση ιστοσελίδων. Ο διακομιστής διαμεσολάβησης αποθηκεύει ιστοσελίδες. Όταν ένας χρήστης ζητά μια ιστοσελίδα που έχει ζητηθεί ήδη, ο διακομιστής διαμεσολάβησης δίνει την σελίδα στο χρήστη άμεσα, έτσι ώστε να μην ξαναπάρει από το Διαδίκτυο, πράγμα που θα απαιτούσε περισσότερο χρόνο. Φυσικά, μπορούν να ληφθούν μέτρα έτσι ώστε ο διακομιστής διαμεσολάβησης να κάνει έναν γρήγορο έλεγχο και να προσφέρει πάντα την πιο πρόσφατη έκδοση μιας σελίδας. Σε μερικά περιβάλλοντα, η χρήση του διακομιστή διαμεσολάβησης είναι υποχρεωτική, σε άλλα περιβάλλοντα μπορείτε να έχετε την επιλογή.
Αν έχετε το όνομα και τη θύρα του διακομιστή διαμεσολάβησης, πρέπει να είναι μάλλον προφανές πώς θα εισάγετε αυτή τη πληροφορία στο περιηγητή σας. Όμως, πολλές εφαρμογές (από την εντολή γραμμής) για να λειτουργήσουν σωστά εξαρτώνται από τις μεταβλητές http_proxy και ftp_proxy. Για ευκολία μπορείτε να προσθέσετε στο αρχείο σας ~/.bashrc:
export http_proxy=http://username:password@proxy_server_name:port_number
Για παράδειγμα:
export http_proxy=http://willy:Appelsi3ntj3@proxy:80
Αν δεν χρειάζεται να δώσετε όνομα χρήστη και κωδικό πρόσβασης, απλά αφαιρέστε το κείμενο από τo "//" μέχρι το "@" (συμπεριλαμβανομένου του τελευταίου).
Σε ένα σύστημα Linux, ο διακομιστής FTP τυπικά εκτελείται από το xinetd, χρησιμοποιώντας τον διακομιστή WU-ftpd, αν και σε συστήματα με μεγάλη κίνηση FTP, ο διακομιστής μπορεί να διαμορφωθεί ως αυτόνομος. Δείτε τις ασκήσεις.
Άλλοι διακομιστές FTP είναι, μεταξύ άλλων, οι vsftpd, Ncftpd και Proftpd. (Επίσης υπάρχουν και γραφικές διεπαφές για διακομιστές FTP, όπως το Net2FTP, ΣτΜ.).
Οι περισσότερες διανομές Linux περιέχουν και το πακέτο anonftp, που εγκαθιστά ένα δένδρο διακομιστή ανώνυμου FTP και τα συνοδευτικά αρχεία ρύθμισης.
Οι περισσότερες διανομές Linux περιλαμβάνουν το ncftp, μια βελτιωμένη έκδοση της κοινής εντολής UNIX ftp, η οποία είναι γνωστή και στους χρήστες Windows. Το πρόγραμμα ncftp διαθέτει επιπλέον χαρακτηριστικά όπως μιαομορφότερη και πιο κατανοητή διεπαφή χρήστη, αυτόματη συμπλήρωση ονομάτων αρχείων, λειτουργίες προσάρτησης και συνέχισης, σημείωση αρχείων, διαχείριση συνόδων κλπ.:
thomas:~> ncftp blob NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com). Connecting to blob... blob.some.net FTP server (Version wu-2.6.1-20) ready. Logging in... Guest login ok, access restrictions apply. Logged in to blob. ncftp / > help Commands may be abbreviated. 'help showall' shows hidden and unsupported commands. 'help <command>' gives a brief description of <command>. ascii cat help lpage open quote site bgget cd jobs lpwd page rename type bgput chmod lcd lrename pdir rhelp umask bgstart close lchmod lrm pls rm version binary debug lls lrmdir put rmdir bookmark dir lmkdir ls pwd set bookmarks get lookup mkdir quit show ncftp / > |
Εξαιρετική βοήθεια με πολλά παραδείγματα βρίσκονται στις σελίδες τεκμηρίωσης. Και πάλι, υπάρχουν διαθέσιμες πολλές εφαρμογές με γραφική διεπαφή (όπως, για παράδειγμα το gftp. Επίσης, οι περισσότεροι περιηγητές Ιστού, όπως οι Mozilla/Firefox, και οι γραφικοί διαχειριστές αρχείων, όπως οι nautilus και konqueror, ενσωματώνουν λειτουργίες πελάτη FTP, ΣτΜ.).
Το FTP είναι ανασφαλές! |
|
---|---|
|
Μην χρησιμοποιείτε το FTP για μη-ανώνυμες συνδέσεις εκτός αν ξέρετε τι κάνετε. Το όνομα και κωδικός πρόσβασης μπορεί να υποκλαπούν από κακοπροαίρετους χρήστες του δικτύου! Καλύτερα να χρησιμοποιείτε το ασφαλές FTP, το πρόγραμμα sftp βρίσκεται στο πακέτο του Ασφαλού; Φλοιού (Secure Shell, ssh), δείτε την Ενότητα 10.4.4.4. |
Υπάρχουν διάφοροι πελάτες και συστήματα διαθέσιμα σε κάθε διανομή, που αντικαθιστούν το παλιό IRC που βασίζεται σε κείμενο. Μια σύντομη και ατελής λίστα δημοφιλών προγραμμάτων:
gaim: πελάτης μηνυμάτων πολλαπλών πρωτοκόλλων για Linux, Windows και Mac, συμβατός με MSN Messenger, ICQ, IRC και πολλά άλλα; για περισσότερα δείτε τις σελίδες τεκμηρίωσης ή τον ιστοτόπο Gaim site.
xchat: πελάτης IRC για το σύστημα X window:
Εικόνα 10-2. X-Chat
Η ιστοσελίδα του είναι στοt SourceForge.
aMSN: κλώνος του MSN.
Konversation, kopete, KVIrc και πολλά άλλα K-εργαλεία που συνοδεύουν το KDE.
gnomemeeting: πρόγραμμα τηλε-συνεδρίασης για UNIX (τώρα Ekiga).
jabber: Πλατφόρμα Ανοικτού Κώδικα για Μηνύματα, συμβατό με ICQ, AIM, Yahoo, MSN, IRC, SMTP και πολλά άλλα.
psi: πελάτης jabbert, δείτε την ιστοσελίδα PSI Jabber Client.
skype: πρόγραμμα για τηλεφωνία Διαδικτύου (προς άλλους χρήστες Skype), για πληροφορίες δείτε http://www.skype.com. Το Skype είναι δωρεάν αλλά όχι ανοικτό.
Gizmo: ένα δωρεα (αλλά όχι ανοικτό) τηλέφωνο για τον υπολογιστή σας, δείτε http://www.gizmoproject.com.
Η διαχείριση ενός διακομιστή Usenet απαιτεί μεγάλη εμπειρία και λεπτές ρυθμίσεις, γι´ αυτό διαβάστε την ιστοσελίδα INN για περισσότερες πληροφορίες.
Υπάρχουν μερικές ενδιαφέρουσες ομάδες ειδήσεων στην ιεραρχία comp.* , που μπορείτε να τις παρακολουθείτε με μια ποικιλία εργαλείων, γραφικών και κειμένου. Πολλοί πελάτες ταχυδρομείου υποστηρίζουν επίσης και ανάγνωση ειδήσεων. Αν ενδιαφέρεστε για εργαλεία κειμένου ελέγξτε τη διανομή σας ή τους ιστοτόπους Ανοικτού Κώδικα για πελάτες όπως οι tin, slrnn και mutt. Στα γραφικά εργαλεία μπορείτε να μεταφορτώσετε το Mozilla/Thunderbird ή κάποιο άλλο γραφικό πελάτη ταχυδρομείου.
Το Deja.com, του Google, (τώρα πλέον Google Groups, ΣτΜ) sδιατηρεί μια αρχειοθήκη όλων των ομάδων ειδήσεων, στην οποία μπορείτε να κάνετε διάφορες αναζητήσεις. Πρόκειται για ένα πανίσχυρο εργαλείο για λήψη βοήθειας: υπάρχουν πολλές πιθανότητες ότι κάποιος συνάντησε το πρόβλημά σας, βρήκε μια λύση και την ανάρτησε σε κάποια ομάδα ειδήσεων.
Όλες αυτές οι εφαρμογές απαιτούν υπηρεσίες DNS για να ταυτίσουν διευθύνσεις IP με ονόματα υπολογιστών και αντίστροφα. Ένας διακομιστής DNS δεν γνωρίζει όλες τις διευθύνσεις IP του κόσμου, αλλά δικτυώνεται με άλλους διακομιστές DNS που μπορούν να ρωτήσουν για την άγνωστη διέυθυνση. Τα περισσότερα συστήματα UNIX μπορούν να εκτελέσουν το named, που είναι τμήμα του πακέτου BIND (Berkeley Internet Name Domain) και διανέμεται από το Internet Software Consortium. Μπορεί να εκτελεστεί ως αυτοδύναμος ενταμιευτής nameserver, πράγμα που γίνεται σε συστήματα Linux για να επιταχύνει την πρόσβαση στο δίκτυο.
Το κύριο αρχείο διαμόρφωσης είναι το /etc/resolv.conf, όπου ορίζονται οι διακομιστές DNS, η σειρά προσπέλασης και τα πεδία αναζήτησης:
search somewhere.org nameserver 192.168.42.1 nameserver 193.74.208.137 |
Περισσότερες πληροφορίες μπορούν να βρεθούν στις σελίδες τεκμηρίωσης του named, στα αρχεία /usr/share/doc/bind[-<version>] και στον ιστοτόπο του Bind project. Το DNS HOWTO καλύπτει τη χρήση του BIND ως διακομιστή DNS.
Το DHCP είναι το Πρωτόκολλο Δυναμικής Διαμόρφωσης Υπολογιστών (Dynamic Host Configuration Protocol), που σταδιακά αντικαθιστά το παλιό καλό bootp iσε μεγαλύτερα περιβάλλοντα. Χρησιμοποιείται για τον έλεγχο ζωτικών δικτυακών παραμέτρων όπως διευθύνσεις IP, διακομιστές DNS των υπολογιστών ενός δικτύου. Το DHCP είναι υπερσύνολο του bootp. Για να διαμορφώσετε ένα διακομιστή DHCP, θα πρέπει να διαβάσετε το HOWTO.
Οι πελάτες DHCP συνήθως διαμορφώνονται κατά την εγκατάσταση ή κατά την εκκίνηση/σύνδεση με τη βοήθεια μιας γραφικής διεπαφής που διαμορφώνει τον δαίμονα πελάτη του DHCP, dhcpd. Αν χρειάζεται να διαμορφώσετε τον υπολογιστή σας ως πελάτη DHCP μελετήστε τις σχετικές σελίδες τεκμηρίωσης.
Παραδοσιακά, οι χρήστες ταυτοποιούνται τοπικά, με βάση τη πληροφορία που βρίσκεται στα αρχεία /etc/passwd και /etc/shadow σε κάθε σύστημα. Ακόμη και αν το σύστημα χρησιμοποιεί δικτυακή υπηρεσία ταυτοποίησης, τα τοπικά αρχεία είναι πάντοτε διαθέσιμα για διαχειριστική χρήση, όπως ο λογαριασμός χρήστη, οι λογαριασμοί δαιμόνων και συχνά πρόσθετοι λογαριασμοί προγραμμάτων.
Αυτά τα αρχεία είναι συχνά οι πρώτοι υποψήφιοι για παραβίαση από τους hackers, γι' αυτό βεβαιωθείτε οτι οι άδειες και τα δικαιώματα πρόσβασης είναι όσο αυστηρότερα γίνεται:
bob:~> ls -l /etc/passwd /etc/shadow -rw-r--r-- 1 root root 1803 Mar 10 13:08 /etc/passwd -r-------- 1 root root 1116 Mar 10 13:08 /etc/shadow |
Το Linux μπορεί να χρησιμοποιήσει το PAM (Pluggable Authentication Module), μια ευέλικτη μέθοδο ταυτοποίησης στο UNIX. Πλεονεκτήματα του PAM:
Ένα κοινό σύστημα ταυτοποίησης που μπορεί να χρησιμοποιηθεί από πολλές εφαρμογές.
Το PAM μπορεί να συνδεθεί με διάφορες εφαρμογές χωρίς να είναι απαραίτητη η εκ νέου μεταγλώττιση των εφαρμογών.
Μεγάλη ευελιξία και έλεγχος της διαδικασίας ταυτοποίησης από τον διαχειριστή και τον προγραμματιστή εφαρμογών.
Οι προγραμματιστές εφαρμογών δεν χρειάζεται να αναπτύξει μηχανισμό ταυτοποίησης.
Ο κατάλογος /etc/pam.d περιέχει τα αρχεία διαμόρφωσης του PAM (παλιότερα ήταν /etc/pam.conf). Κάθε εφαρμογή ή υπηρεσία έχει το δικό της αρχείο. Κάθε γραμμή αρχείου έχει τέσσερα στοιχεία:
Module:
auth: παρέχει την καθ' αυτό ταυτοποίηση (ίσως ζητά και ελέγχει τον κωδικό πρόσβασης) και θέτει αδειοδοτήσεις ή Kerberos tickets.
account: ελέγχει αν ο χρήστης έχει δικαίωμα πρόσβασης (λήξη λογαριασμού, περιορισμοί ώρας, ημέρας, τοποθεσίας κλπ.).
password: ρύθμιση κωδικών πρόσβασης.
session: χρησιμοποιείται μετά τη ταυτοποίηση του χρήστη, εκτελεί πρόσθετες λειτουργίες (όπως προσάρτηση οικείου καταλόγου, διάθεση ταχυδρομικής θυρίδας κλπ.).
Η σειρά τοποθέτησης των modules είναι πολύ σημαντική, ώστε να μπορούν να χρησιμοποιηθούν πολλαπλά modules.
Control Flags: λένε στο PAM τι ενέργειες να πάρει σε περίπτωση αποτυχίας. Δυνατές τιμές required, requisite, sufficient or optional.
Module Path: διαδρομή προς το χρησιμοποιούμενο module, συνήθως στο /lib/security.
Arguments: πληροφορίες για τα modules
Τα αρχεία Shadow password ανιχνεύονται αυτόματα από το PAM.
Περισσότερες πληροφορίες θα βρείτε στις σελίδες τεκμηρίωσης του pam ή στον ιστοτόπο του Linux-PAM project.
Το LDAP (Lightweight Directory Access Protocol) είναι ένα σύστημα πελάτη-διακομιστή για τη πρόσβαση σε καθολικές ή τοπικές υπηρεσίες καταλόγου σε ένα δίκτυο.. Στο Linux, χρησιμοποιείται η υλοποίηση OpenLDAP. Περιλαμβάνει το slapd, έναν αυτόνομο διακομιστή, το slurpd, έναν αυτόνομο διακομιστή ομοιοτυπίας (replication) LDAP; lβιβλιοθήκες που υλοποιούν το πρωτόκολλο LDAP και μια σειρά υπηρεσίες, εργαλεία και υποδειγματικούς πελάτες.
Το κύριο όφελος του LDAP είναι η συγκέντρωση ορισμένων τύπων πληροφοριών μέσα στον οργανισμόη σας. Παραδείγματος χάριν, όλοι οι διαφορετικοί κατάλογοι χρηστών μέσα στον οργανισμό σας μπορούν να συγχωνευθούν σε έναν κατάλογο LDAP. Αυτός ο κατάλογος μπορεί να ερωτηθεί από οποιεσδήποτε LDAP εφαρμογές που χρειάζονται αυτές τις πληροφορίες. Μπορεί επίσης να προσπελαστεί από χρήστες που χρειάζονται τις πληροφορίες καταλόγου.
Άλλα οφέλη του LDAP ή του X.500 Lite (Χ.500 είναι ο κωδικός του αρχικού πρωτοκόλλου υπηρεσίας καταλόγου, ΣτΜ.) περιλαμβάνουν την ευκολία εφαρμογής του (συγκρινόμενο με το αρχικό X.500) και το καλά καθορισμένη διεπαφή προγραμματισμού (API), που σημαίνει ότι ο αριθμός εφαρμογών και πυλών LDAP αναμένεται να αυξηθεί στο μέλλον.
Στην αρνητική πλευρά, εάν θέλετε να χρησιμοποιήσετε LDAP, θα χρειαστείτε τις LDAP εφαρμογές ή τη δυνατότητα να χρησιμοποιήσετε τις πύλες LDAP. Ενώ η χρήση του LDAP αναμένεται να αυξηθεί, σήμερα δεν υπάρχουν πάρα πολλές LDAP εφαρμογές διαθέσιμες για Linux. Επίσης, ενώ το LDAP υποστηρίζει κάποιο έλεγχο πρόσβασης, δεν υποστηρίζει τόσο πολλά χαρακτηριστικά ασφάλειας όπως το X.500.
Δεδομένου ότι το LDAP είναι ένα ανοικτό και διαμορφώσιμο πρωτόκολλο, μπορεί να χρησιμοποιηθεί για να αποθηκεύει σχεδόν οποιοδήποτε είδος πληροφοριών με μια ιδιαίτερη οργανωτική δομή. Τα κοινά παραδείγματα είναι η διαδικασία αναζήτησης διευθύνσεων ταχυδρομείου, η κεντρική ταυτοποίηση σε συνδυασμό με το PAM, τηλεφωνικοί κατάλογοι και βάσεις δεδομένων διαμόρφωσης υπολογιστών.
Δείτε τις πληροφορίες για το σύστημά σας και τις σελίδες τεκμηρίωσης για λεπτομέρειες των σχετικών εντολών όπως ldapmodify και ldapsearch. Περισσότερες πληροφορίες μπορούν να βρεθούν στο LDAP Linux HOWTO, το οποίο συζητά την εγκατάσταση, τη διαμόρφωση, την διαχείριση και τη συντήρηση ενός διακομιστή LDAP σε Linux. Ο συγγραφέας αυτού του εγχειριδίου έγραψε επίσης το LDAP Operations HOWTO, όπου περιγράφονται τα βασικά που πρέπει να ξέρει κάποιος για τη διαχείριση LDAP, τις διαδικασίες και την ολοκλήρωση των υπηρεσιών.
Υπάρχουν ορισμένοι διαφορετικοί τρόποι να εκτελέσετε εντολές ή προγράμματα σε έναν απομακρυσμένο υπολογιστή και να έχετε την έξοδο, σε κείμενο ή γραφικά, πίσω στο σταθμό εργασίας σας. Οι συνδέσεις μπορεί να είναι ασφαλείς ή ανασφαλείς. Αν και φυσικά είναι καλό να χρησιμοποιείτε ασφαλείς συνδέσεις και να μην στέλνετε το κωδικό πρόσβασης σας στο δίκτυο χωρίς κρυπτογράφηση, θα συζητήσουμε μερικές πρακτικές εφαρμογές παλιότερων (ανασφαλών) μηχανισμών, γιατί παραμένουν χρήσιμες σε ένα σύγχρονο δικτυωμένο περιβάλλον, όπως η εκσφαλμάτωση ή εκτέλεση ειδικών εφαρμογών.
Οι εντολές rlogin και rsh για απομακρυσμένη σύνδεση και εκτέλεση εντολών κληρονομήθηκαν από το UNIX. Αν και χρησιμοποιούνται σπάνια επειδή είναι εντελώς ανασφαλή, ακόμη διατίθενται σχεδόν με κάθε διανομή Linux για συμαβτότητα με παλιές εφαρμογές UNIX.
Το telnet, από την άλλη πλευρά, ακόμη χρησιμοποιείται συχνά, από διαχειριστές συστημάτων και δικτύων. Το telnet είναι ένα από τα ισχυρότερα εργαλεία για απομακρυσμένη πρόσβαση σε αρχεία και απομακρυσμένη διαχείριση, επιτρέποντας συνδέσεις από οπουδήποτε στο Διαδίκτυο. Σε συνδυασμό με ένα διακομιστή X, επιτρέπει την τοπική εμφάνιση απομακρυσμένων γραφικών εφαρμογών. Δεν υπάρχει διαφορά μεταξύ απομακρυσμένης και τοπικής εργασίας.
Επειδή η όλη σύνδεση δεν είναι κρυπτογραφημένη, το telnet αφήνει πολλά κενά ασφάλειας. Για κανονική απομακρυσμένη εκτέλεση προγραμμάτων, είναι προτιμότερη η χρήση του Ασφαλούς Φλοιού (Secure Shell), ssh. Η ασφαλής μέθοδος θα συζητηθεί αργότερα σε αυτή την ενότητα.
Παρόλα αυτά, το telnet ακόμη χρησιμοποιείται σε αρκετές περιπτώσεις. Παρακάτω δίνονται μερικά παραδείγματα όπου ένας διακομιστής ταχυδρομείου και ένας διακομιστής Ιστού ελέγχονται για απαντήσεις:
Έλεγχος λειτουργίας διακομιστή ταχυδρομείου (πρωτόκολλο SMTP, ΣτΜ.):
[jimmy@blob ~] telnet mailserver 25 Trying 192.168.42.1... Connected to mailserver. Escape character is '^]'. 220 m1.some.net ESMTP Sendmail 8.11.6/8.11.6; 200302281626 ehlo some.net 250-m1.some.net Hello blob.some.net [10.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP mail from: jimmy@some.net 250 2.1.0 jimmy@some.net... Sender ok rcpt to: davy@some.net 250 2.1.5 davy@some.net... Recipient ok data 354 Enter mail, end with "." on a line by itself test . 250 2.0.0 g2MA1R619237 Message accepted for delivery quit 221 2.0.0 m1.some.net closing connection Connection closed by foreign host. |
Έλεγχος βασικών λειτουργιών ενός διακομιστή Ιστού (πρωτόκολλο HTTP, ΣτΜ.):
[jimmy@blob ~] telnet www.some.net 80 Trying 64.39.151.23... Connected to www.some.net. Escape character is '^]'. HEAD / ;HTTP/1.1 HTTP/1.1 200 OK Date: Fri, 22 Mar 2002 10:05:14 GMT Server: Apache/1.3.22 (UNIX) (Red-Hat/Linux) mod_ssl/2.8.5 OpenSSL/0.9.6 DAV/1.0.2 PHP/4.0.6 mod_perl/1.24_01 Last-Modified: Fri, 04 Jan 2002 08:21:00 GMT ETag: "70061-68-3c3565ec" Accept-Ranges: bytes Content-Length: 104 Connection: close Content-Type: text/html Connection closed by foreign host. [jimmy@blob ~] |
Αυτά είναι απόλυτα ασφαλή αφού ποτέ δεν δίνετε όνομα χρήστη και κωδικό πρόσβασης για να πάρετε τα δεδομένα που θέλετε, άρα κανείς δεν μπορεί να υποκλέψει πληροφορίες στο δίκτυο.
Όπως ήδη έχουμε εξηγήσει στο Κεφάλαιο 7 (δείτε Ενότητα 7.3.3), το σύστημα Χ Window συνοδεύεται από έναν διακομιστή Χ ο οποίος προσφέρει γραφικό περιβάλλον στους πελάτες που χρειάζονται μία απεικόνιση.
Είναι σημαντικό να αντιληφθούμε την διαφορά μεταξύ των εφαρμογών διακομιστή Χ και πελάτη Χ. O διακομιστής X ελέγχει άμεσα την απεικόνιση και είναι υπεύθυνος γιά όλες τις εισόδους και εξόδους που προέρχονται από το πληκτρολόγιο, ποντίκι και την οθόνη. Ο πελάτης X , από την άλλη πλευρά, δεν μπορεί να προσπελάσει άμέσα τις διατάξεις εισόδου και εξόδου. Επικοινωνεί με τον διακομιστή Χ ο οποίος διαχειρίζεται τις εισόδους και εξόδους. Ο πελάτης Χ κάνει την πραγματική δουλειά, δηλαδή τους υπολογισμούς τιμών, την εκτέλεση εφαρμογών κλπ. Ο διακομιστής Χ, απλά ανοίγει παράθυρα και χειρίζεται την είσοδο και έξοδο του συγκεκριμένου πελάτη.
Σε κανονική λειτουργία (γραφικό περιβάλλον), κάθε σταθμός εργασίας Linux είναι ένας διακομιστής Χ για ευατό του, ακόμη και αν εκτελεί μόνο εφαρμογές πελάτη. Όλες οι εφαρμογές που εκτελούνται (για παράδειγμα, το Gimp, ένα παράθυρο τερματικού, ο περιηγητής σας , οι εφαρμογές γραφείου, το εργαλείο αναπαραγωγής CD , κλπ.) είναι πελάτες του διακομιστή Χ. Σε αυτή τη περίπτωση διακομιστής και πελάτης εκτελούν εφαρμογές στον ίδιο υπολογιστή.
Αυτή η λογική πελάτη/διακομιστή του συστήματος Χ το καθιστά ιδανικό περιβάλλον για απομακρυσμένη εκτέλεση εφαρμογών και προγραμμάτων. Επειδή η διεργασία ουσιαστικά εκτελείται στο απομακρυσμένο μηχάνημα , απαιτείται πολύ λίγη υπολογιστική ισχύς στον τοπικό υπολογιστή. Τέτοιοι υπολογιστές, που λειτουργούν αποκλειστικά σχεδόν σαν διακομιστές Χ, ονομάζονται τερματικά Χ και παλιότερα ήταν πολύ δημοφιλή. Περισσότερες πληροφορίες μπορείτε να βρείτε στο Remote X applications mini-HOWTO.
Εάν θέλετε να χρησιμοποιήσετε το telnet για να εμφανίσετε γραφικές εφαρμογές που εκτελούνται σε ένα απομακρυσμένο μηχάνημα , πρώτα χρειάζεστε να δώσετε στο απομακρυσμένο μηχάνημα την δυνατότητα προσπέλασης στην οθόνης σας (στον διακομιστή Χ σας!) χρησιμοποιώντας την εντολή xhost, πληκτρολογώντας μία εντολή όπως παρακάτω στο παράθυρο τερματικού στο τοπικό υπολογιστή:
davy:~> xhost +remote.machine.com |
Μετά, συνδέεστε με τον απομακρυσμένο υπολογιστή λέγοντας του να εμφανίσει τα γραφικά του στο τοπικό υπολογιστή ρυθμίζοντας τη μεταβλητή περιβάλλοντος DISPLAY:
[davy@remote ~] export DISPLAY="local.host.com:0.0" |
Μετά την ολοκλήρωση αυτού του βήματος, κάθε εφαρμογή που ξεκινά από αυτό το παράθυρο τερματικού θα εμφανίζεται στην τοπική οθόνη, χρησιμοποιώντας απομακρυσμένους πόρους για υπολογισμούς, αλλά οι τοπικούς πόρους γραφικών (ο διακομιστής Χ) για την εμφάνιση της εφαρμογής.
Αυτή η διαδικασία υποθέτει ότι έχετε ένα είδος διακομιστή Χ (Xfree86, X.org, Exceed, Cygwin) ήδη εγκατεστημένο στον τοπικό υπολογιστή σας. Η αρχιτεκτονική και το λειτουργικό σύστημα του τοπικού υπολογιστή δεν είναι σημαντικά αρκεί να σας επιτρέπουν να εκτελέσετε έναν διακομιστή Χ.
Σκεφτείτε ότι η εμφάνιση ενός παράθυρου τερματικού από το απομακρυσμένο υπολογιστή θεωρείται ότι είναι επίσης η εμφάνιση μίας εικόνας.
Τα περισσότερα συστήματα UNIX και Linux τώρα πλέον χρησιμοποιούν τον Ασφαλή Φλοιό (Secure SHell, SSH) ώστε να αποφέυγονται οι κίνδυνοι ασφαλείας που προέρχονται από το telnet. Τα περισσότερα συστήματα Linux εκτελούν μια έκδοση του OpenSSH, μια υλοποίηση Ανοικτού Κώδικα του πρωτοκόλλου SSH, προσφέροντας ασφαλή κρυπτογραφημένη επικοινωνία μεταξύ μη-έμπιστων υπολογιστών μέσω ενός μη-έμπιστου δικτύου. Στην τυπική ρύθμιση, οι συνδέσεις Χ προωθούνταιι αυτόματα, αλλά και αυθαίρετες TCP/IP θύρες μπορούν να είναι επίσης να προωθηθούν μέσω ενός ασφαλούς καναλιού.
Ο πελάτης ssh συνδέεται στο συγκεκριμένο απομακρυσμένο υπολογιστή. Ο χρήστης πρέπει να δώσει το όνομά του στο απομακρυσμένο υπολογιστή όπως ορίζεται στο αρχείο sshd_config, το οποίο συνήθως βρίσκεται στο /etc/ssh. Το αρχείο διαμόρφωσης είναι αρκετά επεξηγηματικό και οι προεπιλεγμένες ρυθμίσεις αρκούν για μια συνήθη λειτουργία Εάν χρειασθείτε βοήθεια μπορείτε να την βρείτε στις σελίδες τεκμηρίωσης του sshd .
Όταν η ταυτότητα του χρήστη γίνει δεκτή από τον απομακρυσμένο υπολογιστή, ο υπολογιστής είτε εκτελεί μια συγκεκριμένη εντολή , είτε δίνει στον χρήστη τον συνηθισμένο φλοιό του. Όλη η επικοινωνία με την απομακρυσμένη εντολή ή το φλοιό θα είναι αυτόματα κρυπτογραφημένη.
Η σύνοδος τελειώνει όταν η εντολή ή ο φλοιός του απομακρυσμένου υπολογιστή τερματίσει και όλες οι Χ11 και TCP/IP επικοινωνίες έχουν κλείσει.
Όταν συνδέεστε σε έναν υπολογιστή για πρώτη φορά, χρησιμοποιώντας οποιοδήποτε από τα προγράμματα που συμπεριλαμβάνονται στη συλλογή SSH, απαιτείται ταυτοποίηση του απομακρυσμένου υπολογιστή και επιβεβαίωση ότι θέλετε να συνδεθείτε:
lenny ~> ssh blob The authenticity of host 'blob (10.0.0.1)' can't be established. RSA fingerprint is 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'blob,192.168.30.2' (RSA) to the list of known hosts. Last login: Sat Dec 28 13:29:19 2002 from octarine This space for rent. lenny is in ~ |
Είναι σημαντικό να εισάγετε "yes", με τρείς χαρακτήρες, όχι μόνο "y". Αυτό τροποποιεί το αρχείο ~/.ssh/known_hosts, δείτε Ενότητα 10.4.4.3.
Αν θέλετε απλά να ελέγξετε κάτι σε ένα απομακρυσμένο υπολογιστή και η προτροπή να επιστρέψει πίσω στο τοπικό υπολογιστή, μπορείτε να δώσετε τις εντολές που θέλετε να εκτελεστούν απομακρυσμένα ως ορίσματα στην εντολή ssh:
lenny ~> ssh blob who jenny@blob's password: root tty2 Jul 24 07:19 lena tty3 Jul 23 22:24 lena 0: Jul 25 22:03 lenny ~> uname -n magrat.example.com |
Αν η γραμμή X11Forwarding στο αρχείο sshd_config στον απομακρυσμένο υπολογιστή ρυθμιστεί στο yes και ο χρήστης εκτελεί εφαρμογές X, η μεταβλητή περιβάλλοντος DISPLAY ρυθμίζεται αυτόματα έτσι ώστε η τοπικός υπολογιστής λειτουργεί ως διακομιστής X ενώ ο απομακρυσμένος υπολογιστής λειτουργεί ως πελάτης Χ, με όλα τα προγράμματα X11 που ξεκινούν από τον ασφαλή φλοιό στον απομακρυσμένο υπολογιστή επικοινωνούν μέσω του κρυπτογραφημένου καναλιού με τον τοπικό υπολογοστή. Ο χρήστης δεν χρειάζεται να ρυθμίσει χειρονακτικά τη μεταβλητή DISPLAY. Η προώθηση των συνδέσεων X11 μπορούν να διαμορφωθούν είτε από τη γραμμή εντολών (για παράδειγμα με την επιλογή -Χ κατά την χρήση της εντολής ssh .Προσοχή, πρόκειται για κεφαλαίο γράμμα, η επιλογή με πεζό γράμμα έχει το αντίθετο αποτέλεσμα. ΣτΜ.) ή μέσω του αρχείου διαμόρφωσης του sshd.
Η τιμή της μεταβλητής DISPLAY όπως ρυθμίζεται από την ssh θα δείχνει στον διακομιστή X, αλλά με αριθμό απεικόνισης μεγαλύτερο του μηδενός. Αυτό είναι φυσιολογικό γιατί η ssh δημιουργεί ένα διακομιστή διαμεσολάβησης (proxy) X μέσα στο πελάτη X (τον απομακρυσμένο υπολογιστή που εκτελεί τις εφαρμογές Χ) που προωθεί τις συνδέσεις μέσω του κρυπτογραφημένου καναλιού.
Όλα αυτά γίνονται αυτόματα, ώστε εσείς απλά εισάγετε το όνομα της γραφικής εφαρμογής Χ στο απομακρυσμένο ασφαλή φλοιό και η εφαρμογή εμφανίζεται στην οθόνη σας. Χρησιμοποιούμε ως παράδειγμα την εφαρμογή xclock επειδή είναι μικρό πρόγραμμα και είναι εγκαταστημένο παντού, άρα ιδανικό για έλεγχο:
Εικόνα 10-3. SSH προώθηση X11
Το πρωτόκολλο SSH επίσης αυτόματα ρυθμίζει τα δεδομένα του Xauthority στο απομακρυσμένο υπολογιστή. Γι' αυτό το σκοπό, δημιουργεί ένα τυχαίο cookie ταυτοποίησης, το αποθηκεύει στη στο αρχείο ~/.Xauthority και χρησιμοποιεί αυτό το cookie για κάθε σύνδεση X που ανοίγει. Το πραγματικό cookie ταυτοποίησης ποτέ δεν αποστέλλεται (και κανένα cookie δεν στέλνεται χωρίς κρυπτογράφηση).
Η προώθηση αυθαίρετων συνδέσεων TCP/IP μέσω ασφαλούς καναλιού μπορεί να καθοριστεί είτε από τη γραμμή εντολών (για παράδειγμα δείτε τις σελίδες τεκμηρίωσης για την επιλογή -Α της εντολής ssh, ΣτΜ.) ή μέσω του αρχείου διαμόρφωσης του sshd.
O διακομιστής X |
|
---|---|
|
Αυτή η διαδικασία υποθέτει ότι στο τοπικό υπολογιστή σας εκτελείται ένας διακομιστής X όπου εμφανίζονται όλες οι εφαρμογές Χ του απομακρυσμένου υπολογιστή, Ο τοπικός υπολογιστής μπορεί να είναι διαφορετικής αρχιτεκτονικής ή/και να χρησιμοποιεί διαφορετικό λειτουργικό σύστημα από τον απομακρυσμένο υπολογιστή, αρκεί να εκτελεί ένα διακομιστή X. Τέτοια παραδείγματα είναι το Cygwin (ένα ελεύθερο λογισμικό που υλοποιεί ένα διακομιστή X.org sγια υπολογιστές με λειτουργικό σύστημα MS Windows ή άλλο) ή clients and others) or το Exceed (αντίστοιχο εμπορικό λογισμικό), μέσω των οποίων μπορεί κανείς να συνδεθεί με απομακρυσμένα συστήματα Linux ή UNIX μέσω γραφικής διεπαφής. (Σε όλο το παραπάνω κείμενο χρειάζεται προσοχη χρήση των όρων πελάτης/διακομιστής σε σχέση με το πρωτόκολλο SSH και το σύστημα X: στη συνηθισμένη διαμόρφωση έχουμε το εξής 'παράδοξο': ο τοπικος υπολογιστής είναι ο πελάτης SSH αλλά ταυτόχρονα ο διακομιστής X. Αντίστοιχα, ο απομακρυσμένος υπολογιστής είναι ο διακομιστής SSH αλλά ο πελάτης Χ, ΣτΜ.). |
Το σύστημα πελάτη/διακομιστή ssh συντηρεί και διαχειρίζεται αυτόματα μια βάση δεδομένων που περιέχει στοιχεία ταυτοποίησης όλων των απομακρυσμένων υπολογιστών με τους οποίους έχει συνδεθεί. Τα κλειδιά των απομακρυσμένων υπολογιστών αποθηκεύονται στο αρχείο ~/.ssh/known_hosts στον οικείο κατάλογο του χρήστη. Επιπλέον, ελέγχεται αυτόματα και το αρχείο /etc/ssh/ssh_known_hosts για καθολικά γνωστούς απομακρυσμένους υπολογιστές. Κάθε νέος υπολογιστής προστίθεται στο αρχείο του χρήστη. Αν ποτέ αλλάξουν τα στοιχεία ταυτοποίησης ενός υπολογιστή, η ssh εμφανίζει σχετικό μήνυμα και αποκλείει την αποστολή και ταυτοποίηση του συνθηματικού πρόσβασης του χρήστη ώστε να αποτρέψει τη πιθανότητα ο κωδικός να αποσταλεί σε Δούρειο ίππο. Ένας άλλος σκοπός αυτής της απαγόρευσης είναι να αποτρέψει επιθέσεις τύπου man-in-the-middle που πιθανώς προσπαθούν να παρακάμψουν την κρυπτογράφηση. (Ένας τρόπος να προχωρήσουμε σε αυτές τις περιπτώσεις είναι να διαγράψουμε τη γραμμή του υπολογιστή που προκαλεί το πρόβλημα από το αρχείο ~/.ssh/known_hosts, έτσι ώστε η ssh να θεωρήσει τον απομακρυσμένο υπολογιστή ως νέο και να τον εγγράψει στο αρχείο με νέα στοιχεία ταυτοποίησης, ΣτΜ.). Σε περιβάλλοντα που απαιτείται μεγάλη ασφάλεια, ο δαίμονας sshd μπορεί να διαμορφωθεί έτσι ώστε να μην επιτρέπει συνδέσεις με υπολογιστές που είναι άγνωστοι ή τα στοιχεία ταυτοποίησης έχουν μεταβληθεί. (Σε αυτή τη περίπτωση, η ασφάλεια ελέγχεται όχι μόνο από τον πελάτη αλλά και από τον διακομιστή SSH, ΣτΜ.).
Το πακέτο SSH παρέχει την εντολή scp ως μια ασφαλή εναλλακτική στην εντολή rcp που ήταν δημοφιλής όταν υπήρχε μόνο το rsh. Το scp χρησιμοποιεί το ssh για μεταφορά δεδομένων, με την ίδια ταυτοποίηση και ασφάλεια όπως το ssh. Σε αντίθεση με το το rcp, το scp θα ζητήσει για κωδικούς πρόσβασης εάν χρειάζονται για τη πιστοποίηση:
lenny /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/ lenny@blob's password: Schedule.sdc.gz 100% |*****************************| 100 KB 00:00 lenny /var/tmp> |
Οποιοδήποτε όνομα αρχείου μπορεί να περιέχει προδιαγραφή χρήστη και υπολογιστή για να δηλώσει ότι το αρχείο είναι για αντιγραφή από/προς αυτόν τον υπολογιστή. Αντίγραφα μεταξύ δύο απομακρυσμένων υπολογιστών επιτρέπονται. Δείτε τις σελίδες τεκμηρίωσης για περισσότερες πληροφορίες.
Εάν επιθυμείτε αντίθετα να χρησιμοποιήσετε μια διεπαφή τύπου FTP, χρησιμοποιήστε την εντολή sftp:
lenny /var/tmp> sftp blob Connecting to blob... lenny@blob's password: sftp> cd /var/tmp sftp> get Sch* Fetching /var/tmp/Schedule.sdc.gz to Schedule.sdc.gz sftp> bye lenny /var/tmp> |
Γραφικές διεπαφές για ασφαλή αντιγραφή ή FTP |
|
---|---|
|
Δεν νοιώθετε άνετα με τη γραμμή εντολών; Μπορείτε να δοκιμάσετε τις δυνατότητες του konqueror (στο KDE, ή του nautilus στο Gnome, ή να εγκαταστήσετε το gftp. Όλα υποστηρίζουν πρωτόκολλο SSH. Σε περιβάλλον MS-Windows μπορείτε να εγκαταστήσετε το Putty, ανοικτό λογισμικό με αντίστοιχες δυνατότητες, χωρίς φυσικά γραφικό περιβάλλον X, ΣτΜ). |
Η εντολή ssh-keygen δημιουργεί, διαχειρίζεται και μετατρέπει τα κλειδιά ταυτοποίησης για την ssh. Μπορεί να δημιουργήσει κλειδιά τύπου RSA για χρήση από το πρωτόκολλο SSH έκδοση 1 και κλειδιά RSA ή DSA για χρήση από το πρωτόκολλο SSH έκδοση 2.
Κανονικά κάθε χρήστης που θέλει να χρησιμοποιήσει το SSH με ταυτοποίηση RSA ή DSA εκτελεί αυτή τη διαδικασία μια φορά και δημιουργεί το κλειδί ταυτοποίησης στο πιστοποίηση εκτελώντας αυτό για δημιουργήσει κλειδί πιστοποίησης στα ~/.ssh/identity, id_dsa ή id_rsa. Επιπλέον, ο διαχειριστής συστήματος μπορεί να χρησιμοποιήσει την ίδια εντολή για να δημιουργήσει αντίστοιχα κλειδιά για τον υπολογιστή.
Το πρόγραμμα δημιουργεί το κλειδί και ρωτά τον χρήστη σε ποιο αρχείο να αποθηκεύσει το ιδιωτικό κλειδί. Το δημόσιο κλειδί αποθηκεύεται σε ένα αρχείο με το ίδιο όνομα αλλά με επεκταση .pub. Το πρόγραμμα ζητάει ακόμη και έναν κωδικό πρόσβασης. Ο κωδικός μπορεί να είναι άδειος ώστε να δηλώνεται η ανυπαρξία κωδικού (τα κλειδιά του οικοδεσπότη πρέπει να περιέχουν άδειο κωδικό πρόσβασης), ή μπορεί να είναι ένα αλφαριθμητικό αυθαίρετου μήκους.
Δεν υπάρχει τρόπος να επαναφέρουμε ένα ‘χαμένο’ κωδικό πρόσβασης. Εάν ο κωδικός έχει χαθεί ή δεν τον θυμόμαστε, πρέπει να δημιουργηθεί νέο κλειδί και να αντιγραφεί στα σχετικά δημόσια κλειδι.
Θα μελετήσουμε τα κλειδιά SSH στις ασκήσεις. Όλες τις πληροφορίες μπορείτε να τις βρείτε στις σελίδες τεκμηρίωσης.
Το VNC - Virtual Network Computing (Εικονικός Δικτυακός Υπολογισμός) είναι στη πραγματικότητα ένα σύστημα απομακρυσμένης απεικόνισης που επιτρέπει την εμφάνιση της επιφάνειας εργασίας όχι μόνο στον τοπικό υπολογιστή αλλά οπουδήποτε στο Διαδίκτυο και από μια μεγάλη ποικιλία συστημάτων και αρχιτεκτονικών, όπως MS Windows και αρκετών διανομών UNIX. Μπορείτε, για παράδειγμα, να εκτελείτε MS Word σε ένα υπολογιστή Windows Nt και να εμφανίζετε την έξοδο στην επιφάνεια εργασίας ενός συστήματος Linux. Το VNC παρέχει διακομιστές και πελάτες, έτσι ώστε μπορείτε να κάνετε και το αντίθετο, δηλαδή να εμφανίζετε εφαρμογές Linux σε πελάτες Windows. Το VNC είναι πιθανά ο ευκολότερος τρόπος έχουμε συνδέσεις με περιβάλλον X σε ένα υπολογιστή με MS Windows. Τα παρακάτω χαρακτηριστικά καθιστούν το VNC διαφορετικό από το διακομιστή X ή από εμπορικές υλοποιήσεις:
Η τοπική κατάσταση δεν επηρεάζει την απομακρυσμένη εφαρμογή: μπορείτε να αφήσετε την τοπική επιφάνεια εργασίας και να συνεχίσετε από μια άλλη, συνεχίζοντας από εκεί που σταματήσατε. Όταν ο τοπικός υπολογιστής εκτελεί διακομιστή X, και σταματήσει να λειτουργεί, όλες οι απομακρυσμένες εφαρμογές θα τερματιστούν. Με το VNC, θα συνεχίσουν να εκτελούνται.
Είναι μικρό και απλό, δεν απαιτείται εγκατάσταση, μπορεί να εκτελεστεί ακόμη και από δισκέτα αν χρειαστεί.
Είναι ανεξάρτητο από πλατφόρμα, ο πελάτης είναι γραμμένος σε Java, εκτελείται οπουδήποτε υπάρχει υποστήριξη X.
Μποραζόμενο: η ίδια επιφάνεια εργασίας (εφαρμογή) μπορεί να εμφανίζεται σε πολλές οθόνες (read-only).
Ελέυθερο.
Περισσότερες πληροφορίες για τον πελάτη VNC στις σελίδες τεκμηρίωσης (man vncviewer) ή στον ιστοτόπο του VNC.
Με σκοπό την εύκολη διαχείριση υπολογιστών με MS Windows, πρόσφατες διανομές Linux υποστηρίζουν το RDP - Remote Desktop Protocol (Πρωτόκολλο Απομακρυσμένης Επιφάνειας εργασίας), το οποίο υλοποιείται με τον πελάτη rdesktop. Το πρωτόκολλο χρησιμοποιείται από προϊόντα της Microsoft, συμπεριλαμβανομένου Windows NT Terminal Server, Windows 2000 Server, Windows XP Server, Windows 2003 Server.
Κάντε έκπληξη στους φίλου σας (ή τον διευθυντή σας) με πλήρη οθόνη σε λειτουργία, πολλαπλές διαμορφώσεις πληκτρολογίου και single application mode, όπως ακριβώς σε πραγματικό περιβάλλον MS Windows. Η τεκμηρίωση με την εντολή man rdesktop παραθέτει περισσότερες πληροφορίες. Η ιστοσελίδα του έργου είναι η http://www.rdesktop.org/
Το Cygwin δίνει πλήρη λειτουργικότητα UNIX σε συστήματα MS Windows. Εκτός από παροχή εργαλείων γραμμής εντολών UNIX και γραφικών εφαρμογών, μπορεί να χρησιμοποιηθεί για να εμφανίσει επιφάνεια εργασίας Linux σε υπολογιστή με MS Windows, εκτελώντας ένα διακομιστή Χ. Από ένα φλοιό Cygwin , πληκτρολογήστε την εντολή
/usr/X11R6/bin/XWin.exe -query your_linux_machine_name_or_IP
Η επικοινωνία κατ' αρχήν μπορεί να απορριφθεί από τον απομακρυσμένο υπολογιστή. Για να πετύχετε αυτό το τύπο επικοινωνίας πρέπει να αλλάξετε τη διαμόρφωση του Χ Display Manager (XDM), (δηλαδή να επιτρέψετε απομακρυσμένες συνδέσεις XDMCP, ΣτΜ) και του διακομιστή γραμματοσειρών Χ (X Font Server - XFS) ώστε να λάβετε στο τοπικό σας υπολογιστή την γραφική οθόνη σύνδεσης με το απομακρυσμένο σύστημα. Ανάλογα με τον διαχειριστή επιφανείας εργασίας (Gnome,KDE, άλλος), μπορείτε να χρειαστεί να αλλάξετε κάποιες διαμορφώσεις.
Εάν δεν θέλετε να εμφανίσετε ολόκληρη την επιφάνεια εργασίας, μπορείτε να χρησιμοποιήσετε το SSH σε Cygwin, ακριβώς όπως εξηγείτε στην SΕνότητα 10.4.4. χωρίς όλη την φασαρία της τροποποίησης των αρχείων διαμόρφωσης.
Μόλις ένας υπολογιστής συνδέεται στο δίκτυο, όλα τα είδη προσβολών είναι πιθανά, είτε πρόκειται για σύστημα UNIX ή άλλο. Ομολογουμένως, βουνά από χαρτιά έχουν ξοδευτεί για αυτό το θέμα και μια λεπομερής συζήτηση θα μας οδηγούσε πολύ μακριά . Υπάρχουν, ωστόσο, μερικά λογικά πράγματα που ακόμη και ένας αρχάριος χρήστης μπορεί να κάνει για να εξασφαλίσει ένα πολύ ασφαλές σύστημα, επειδή οι περισσότερες παραβιάσεις οφείλονται σε αρχάριους ή απρόσεκτους χρήστες.
Ίσως αναρωτηθείτε αν όλα αυτά ισχύουν και σε σάς, που χρησιμοποιείτε τον υπολογιστή στο σπίτι ή στο γραφείο σας σε ένα ήσυχο προστατευμένο περιβάλλον. Οι ερωτήσεις που πρέπει να κάνετε στον εαυτό σας, ωστόσο, είναι λίγο ως πολύ κάπως έτσι:
Θέλετε να μην έχετε τον έλεγχο του συστήματος σας ;
Θέλετε να συμμετέχετε (ακούσια) σε εγκληματικές δραστηριότητες;
Θέλετε ο εξοπλισμό σας να χρησιμοποιείται από κάποιον άλλον;
Θέλετε να διακινδυνεύσετε να χάσετε την σύνδεση σας με το Διαδίκτυο;
Θέλετε να ξαναχτίζετε το σύστημα κάθε φορά που δέχεται εισβολή;
Θέλετε να διακινδυνεύετε την απώλεια προσωπικών δεδομένων;
Υποθέτοντας οτι δεν θέλετε τα παραπάνω, σε αυτή την ενότητα θα φτιάξετε μια λίστα με τα βήματα που πρέπει να ακολουθήσετε ώστε να ασφαλίσετε το σύστημά σας. Εκτεταμένες πληροφορίες μπορείτε να βρείτε στο Linux Security HOWTO.
Ο σκοπός μας είναι να εκτελούνται όσο το δυνατόν λιγότερες υπηρεσίες. Όσο ο αριθμός των ανοικτών προς τα έξω θυρών διατηρηθούν στο ελάχιστο, τόσο το καλύτερο για να διατηρείτε τη γενική εποπτεία του συστήματος. Εάν οι υπηρεσίες δεν μπορούν να απενεργοποιηθούν στο τοπικό δίκτυο, δοκιμάστε να τις απενεργοποιήσετε τουλάχιστο για εξωτερικές συνδέσεις.
Ένας πρόχειρος κανόνας είναι ότι εάν δεν αναγνωρίζετε μια συγκεκριμένη υπηρεσία,πιθανότατα δεν τη χρειάζεστε. Επίσης να έχετε υπ’ όψη ότι μερικές υπηρεσίες δεν πρέπει ότι θα χρησιμοποιηθούν από το Διαδίκτυο. Μην βασίζεστε στο τι θα έπρεπε να εκτελείται, ελέγξετε ποιες υπηρεσίες παρακολουθούν τις TCP θύρες χρησιμοποιώντας την εντολή netstat:
[elly@mars ~] netstat -l | grep tcp tcp 0 0 *:32769 *:* LISTEN tcp 0 0 *:32771 *:* LISTEN tcp 0 0 *:printer *:* LISTEN tcp 0 0 *:kerberos_master *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:6001 *:* LISTEN tcp 0 0 *:785 *:* LISTEN tcp 0 0 localhost.localdom:smtp *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 ::1:x11-ssh-offset *:* LISTEN |
Πράγματα που πρέπει να αποφεύγετε:
Εκτέλεση εντολών όπως exec, rlogin, rsh και telnet για είστε σίγουροι
Χ11 σε διακομιστές.
Όχι lp εάν δεν υπάρχει φυσικά συνδεδεμένος εκτυπωτής.
Όχι υπολογιστές με MS Windows στο δικτύου, ώστε να μην απαιτείται Samba
Μην επιτρέπετε FTP εκτός αν απαιτείται διακομιστής FTP
Μην επιτρέπετε NFS και NIS στο Διαδίκτυο, εξουδετερώστε όλες τις σχετικές υπηρεσίες σε μία αυτοδύναμη εγκατάσταση.
Μην εκτελείτε ένα MTA εάν δεν βρίσκεστε σε διακομιστή αλληλογραφίας.
...
Σταματήστε εκτελούμενες υπηρεσίες χρησιμοποιώντας την εντολή chkconfig, τα σενάρια αρχικοποίησης ή τροποποιώντας τα αρχεία διαμόρφωσης (x)inetd..
Ένας βασικός λόγος που επιτρέπει το Linux να αναπτύσσεται είναι η ικανότητά του να προσαρμόζεται γρήγορα σε ένα συνεχώς μεταβαλλόμενο περιβάλλον. Αλλά αυτό επίσης δημιουργεί την πιθανότητα οι ανανεώσεις ασφαλείας να ανακοινώνονται την ώρα που εγκαθιστάτε μία νέα έκδοση, οπότε το πρώτο πράγμα που πρέπει να κάνετε (και αυτό αναφέρετε για κάθε λειτουργικό σύστημα που μπορείτε να σκεφτείτε) είναι μετά την εγκατάσταση να εγκαταστήσετε τις ενημερώσεις όσο το δυνατόν πιο γρήγορα. Επίσης, ενημερώνετε τακτικά όλα τα πακέτα που χρησιμοποιείτε.
Μερικές ενημερώσεις μπορεί να απαιτούν νέα αρχεία διαμόρφωσης, και αντικατάσταση των παλιών αρχείων. Ελέγξτε τη τεκμηρίωση και βεβαιωθείτε οτι όλα δουλεύουν καλά μετά την ενημέρωση.
Οι περισσότερες διανομές Linux παρέχουν ταχυδρομικές λίστες για ανακοινώσεις ενημερώσεων ασφαλείας, καθώς και εργαλεία εφαρμογής των ενημερώσεων. Θέματα ασφαλείας του Linux συζητούνται μεταξύ άλλων στο Linuxsecurity.com.
Η ανανέωση είναι μία διαρκής διαδικασία, οπότε θα έπρεπε να είναι μία καθημερινή συνήθεια.(Το Ubuntu παρέχει αυτόματες ενημερώσεις ασφαλείας, και γενικότερες ενημερώσεις, οπότε ο χρήστης δεν χρειάζεται να ελέγχει για ενημερώσεις, απλά τις εγκαθιστά ΣτΜ.).
Στη προηγούμενη ενότητα είχαμε ήδη τονίσει τις δυνατότητες του τείχους ασφαλείας στο Linux. Αν και η διαχείριση του τείχους ασφαλείας είναι δουλειά του διαχειριστή δικτύου, καλό είναι να γνωρίζετε μερικά πράγματα για το τείχος ασφαλείας.
Το τείχος ασφαλείας (firewall) είναι ένας ασαφής όρος που μπορεί να σημαίνει οτιδήποτε που δρα ως προστατευτικό φράγμα μεταξύ σας και του έξω κόσμου, γενικά του Διαδικτύου. Ένα τείχος ασφαλείας μπορεί να είναι ένα εξειδικευμένο σύστημα ή μία ειδική εφαρμογή που εξασφαλίζει αυτή την λειτουργία. Η μπορεί να είναι ένας συνδυασμός από συστατικά, όπως διαφόρων συνδυασμών υλικού και λογισμικού. Τα τείχη ασφαλείας περιέχουν ‘κανόνες’ που χρησιμοποιούνται για να καθοριστούν τι επιτρέπεται να εισέλθει και / ή να εξέλθει σε ένα δεδομένο σύστημα ή δίκτυο.
Μετά τον τερματισμό των περιττών υπηρεσιών, τώρα θέλουμε να περιορίσουμε τις αποδεκτές υπηρεσίες ώστε να επιτρέπουμε τις ελάχιστες απαιτούμενες συνδέσεις. Ένα καλό παράδειγμα είναι η δουλειά από το σπίτι: πρέπει να επιτρέπεται μόνο μια ειδική σύνδεση μεταξύ του γραφείου σας και του σπιτιού σας, ενώ συνδέσεις από άλλους υπολογιστές πρέπει να αποτρέπονται.
Η πρώτη γραμμή αμύνης είναι ένα φίλτρο πακέτων, το οποίο μπορεί να δει μέσα στα πακέτα IP και να πάρει αποφάσεις βασισμένες στο περιεχόμενο. Τα πιο κοινό είναι το φίλτρο Netfilter, που παρέχει την εντολή iptables, μια επόμενη γενιά πακέτων φίλτρου για το Linux.
Μια από τις πιο αξιοσημείωτες ενισχύσεις στους καινούργιους πυρήνες είναι η επιθεώρηση κατασάσεων (stateful inspection), πού δεν λέει μόνο τι περιέχει το πακέτο, αλλά επίσης ανιχνεύει εάν ένα πακέτο ανήκει ή σχετίζεται με νεά ή υπάρχουσα σύνδεση.
Το Shoreline ή Shorewall είναι μια διεπαφή για τις τυπικές υπηρεσίες τείχους ασφαλείας του Linux.
Για περισσότερες πληροφορίες μπορείτε να βρείτε στην ιστοσελίδα του έργου Netfilter/iptables.
Οι TCP wrappers προσφέρουν τα ίδια περίπου αποτελέσματα με τα πακέτα φίλτρων, αλλά λειτουργούν διαφορετικά. Ο wrapper αποδέχεται την προσπάθεια σύνδεσης, μετά εξετάζει τα αρχεία διαμόρφωσης και αποφασίζει εάν θα αποδεχθεί ή θα απορρίψει το αίτημα σύνδεσης. Ελέγχει τις συνδέσεις σε επίπεδο εφαρμογής περισσότερο παρά σε επίπεδο δικτύου.
Οι TCP wrappers χρησιμοποιούνται τυπικά με το xinetd για να εξασφαλίσουν έλεγχο πρόσβασης βασισμένο στο όνομα υπολογιστή και διεύθυνση IP. Ακόμη, αυτά τα εργαλεία παρεουν δυνατότητες διαχείρισης και καταγραφής που είναι εύκολο να διαμορφωθούν.
Τα πλεονεκτήματα των TCP wrappers είναι ότι ο συνδεόμενος πελάτης είναι απληροφόρητος ότι χρησιμοποιούνται wrappers και ότι λειτουργούν ξεχωριστά από τις εφαρμογές που προστατεύουν.
O έλεγχος πρόσβασης βασισμένος στο όνομα υπολογιστή καθορίζεται στα αρχεία hosts.allow και hosts.deny. Περισσότερες πληροφορίες μπορείτε να βρείτε στα αρχεία τεκμηρίωσης στο/usr/share/doc/tcp_wrappers[-<version>/] ή /usr/share/doc/tcp και στις σχετικές σελίδες τεκμηρίωσης, που περιέχουν και παραδείγματα.
Οι διαμεσολαβητές μπορούν να εκτελέσουν πολλά καθήκοντα, πολλά από τα οποία δεν αφορούν την ασφάλεια. Αλλά το γεγονός ότι είναι μεσάζοντες κάνει τους μεσολαβητές ένα καλό μέρος για την ενίσχυση των πολιτικών ελέγχου πρόσβασης, περιορισμού των συνδέσεων μέσω ενός τείχους ασφαλείας, και ελέγχου της εικόνας του προστατευόμενου δικτύου προς το Διαδίκτυο.
Συχνά σε συνδυασμό με ένα πακέτο φίλτρου, αλλά μερικές μόνοι τους, οι διαμεσολαβητές εξασφαλίζουν ένα επιπρόσθετο επίπεδο ελέγχου. Περισσότερες πληροφορίες μπορείτε να βρείτε στο Firewall HOWTO ή στην ιστοσελίδα του Squid
Μερικοί διακομιστές μπορεί να έχουν ειδικό έλεγχο πρόσβασης. Μερικά παραδείγματα είναι οι διακομιστές Samba, X Window, Bind, Apache και CUPS. Για κάθε υπηρεσία που θέλετε να προσφέρετε ελέγξετε ποια αρχεία διαμόρφωσης εφαρμόζονται.
Αν μη τι άλλο, το UNIX καταγράφει όλα τα είδη των δραστηριοτήτων σε όλα τα είδη αρχείων.. Βέβαια , τα αρχεία καταγραφής πρέπει να ελέγχονται συχνά, χειροκίνητα ή αυτόματα. Τα τείχη ασφαλείας και άλλα είδη ελέγχου πρόσβασης τείνουν να δημιουργούν μεγάλα αρχεία καταγραφής, οπότε το κόλπο είναι να καταγράφετε μόνο αντικανονικές διαδικασίες.
Τα συστήματα εντοπισμού εισβολέα (Intrusion Detection Systems -IDS) είναι σχεδιασμένα να εντοπίζουν ότι έχει διαπεράσει το τείχος ασφαλείας. Μπορούν να σχεδιαστούν ώστε να εντοπίζουν είτε μια εισβολή εν δράσει ή μια εισβολή που έχει συντελεστεί ήδη. Στην δεύτερη περίπτωση, θα είναι πολύ αργά για να προλάβετε οποιαδήποτε ζημία, αλλά τουλάχιστο γνωρίζετε το πρόβλημα. Υπάρχουν δύο βασικοί τύποι IDS: αυτοί που προστατεύουν δίκτυα, και αυτοί που προστατεύουν μεμονωμένους υπολογιστές.
Τα IDS ενός υπολογιστή, εργάζονται με υπηρεσίες που ελέγχουν το σύστημα αρχείων για τυχόν αλλαγές. Τα αρχεία συστήματος που έχουν αλλαχτεί κατά κάποιο τρόπο , αλλά δεν έπρεπε να αλλάξουν, είναι ένα σήμα οτι κάτι δεν πάει καλά. Οποιοσδήποτε συνδέεται και λαμβάνει δικαιώματα υπερ-χρήστη θα κάνει πιθανότατα αλλαγές κάπου στο σύστημα. Αυτό είναι συνήθως το πρώτο πράγμα που γίνεται, είτε έτσι ώστε να μπορεί να επιστρέψει στο σύστημα από μια 'πίσω πόρτα' , ή να ξεκινήσει μια επίθεση εναντίον κάποιου άλλου, οπότε, πρέπει να αλλάξει ή να προσθέσει αρχεία στο σύστημα. Μερικά συστήματα συνοδεύονται από το σύστημα παρακολούθησης tripwire σύστημα ελέγχου, που είναι τεκμηριωμένο στον ιστοτόπο Tripwire Open Source Project.
Ο εντοπισμός εισβολέα σε δίκτυο καθοδηγείται από ένα σύστημα που βλέπει την κυκλοφορία που περνά το τείχος ασφαλείας (όχι από τους σαρωτές θυρών, που δημοσιοποιούν τις χρησιμοποιούμενες θύρες). Το Snort είναι ένα παράδειγμα τέτοιου λογισμικού Ανοιχτού Κώδικα. Η Whitehats.com παρέχει μια ανοικτή βάση δεδομένων ανίχνευσης εισβολών , arachNIDS.
Μερικά γενικά πράγματα που πρέπει να έχετε υπόψη σας:
Μην επιτρέπετε συνδέσεις υπερ-χρήστη. Οι προγραμματιστές UNIX έχουν εφεύρει την εντολή su εδώ και δύο δεκαετίες για επιπλέον ασφάλεια
Η πρόσβαση στα δικαιώματα υπερ-χρήστη είναι πάντα επικίνδυνη και επιρρεπής σε ανθρώπινα λάθη, είτε πρόκειται για απ' ευθείας σύνδεση ή για χρήση της εντολής su. Προτιμότερο από την χρήση της su , είναι η χρήση της εντολής sudo μόνο για να εκτελέσετε την εντολή που χρειάζεστε επιπλέον δικαιώματα, και να επιστρέψετε μετά στο προσωπικό σας περιβάλλον
Πάρτε τους κωδικούς πρόσβασης στα σοβαρά. Χρησιμοποιήστε κρυφούς κωδικούς. Αλλάξτε τους κωδικούς σας τακτικά.
Προσπαθήστε πάντα να χρησιμοποιείτε το SSH ή SSL. Αποφύγετε τα telnet, FTP και πελάτες ηλεκτρονικού ταχυδρομείου και άλλους πελάτες προγραμμάτων που στέλνουν μη-κρυπτογραφημένους κωδικούς στο δίκτυο. Ασφάλεια δεν είναι μόνο να ασφαλίζετε τον υπολογιστή σας, είναι να ασφαλίζετε τους κωδικούς πρόσβασής σας.
Περιορίστε τους πόρους σας χρησιμοποιώντας quota και / ή unlimit.
Το ταχυδρομείο του υπερ-χρήστη πρέπει να παραλαμβάνεται, ή το ελάχιστο να διαβάζεται, από ένα φυσικό πρόσωπο.
Το SANS institute έχει περισσότερες υποδείξεις, ταξινομημένα ανά διανομή, με υπηρεσία ταχυδρομικής λίστας.
Ελέγξτε την αυθεντικότητα του νέου λογισμικού, παίρνοντας το από ένα έμπιστο μέρος / σελίδα. Επαληθεύστε τα νέα πακέτα πριν τα εγκαταστήσετε .
Όταν χρησιμοποιείτε μία περιστασιακή σύνδεση στο Διαδίκτυο, τερματίστε την μόλις δεν τη χρειάζεστε πλέον.
Εκτελέστε ιδιωτικές υπηρεσίες σε περίεργες θύρες και όχι σε αυτές που αναμένονται από πιθανούς εισβολείς.
Γνωρίστε καλά το σύστημα σας. Μετά θα νιώθετε όταν κάτι πηγαίνει στραβά..
Πώς μπορείτε να το καταλάβετε; Εδώ είναι ένας κατάλογος από ύποπτα γεγονότα:
Περίεργες πόρτες ανοιχτές, περίεργες διεργασίες.
Υπηρεσίες του συστήματος (κοινές εντολές) συμπεριφέρονται περίεργα..
Προβλήματα σύνδεσης..
Ανεξήγητο χρήση του εύρους ζώνης του δικτύου.
Κατεστραμμένα ή χαμένα αρχεία καταγραφής, ο δαίμονας καταγραφής συστήματος συμπεριφέρεται περίεργα.
Διεπαφές με ασυνήθιστες ρυθμίσεις.
Αναπάντεχα τροποποιημένα αρχεία διαμόρφωσης.
Περίεργες γραμμές στα αρχεία ιστορικού του φλοιού.
Άγνωστα προσωρινά αρχεία.
Εν συντομία, παραμείνετε ψύχραιμοι. Μετά κάντε τις ακόλουθες κινήσεις με τη σειρά.
Απο-συνδέστε τον μηχάνημα από το δίκτυο.
Προσπαθήστε να βρείτε όσο περισσότερο μπορείτε πώς παραβιάστηκε η ασφάλειά σας .
Κάντε εφεδρικά αντίγραφα των σημαντικών δεδομένων (όχι του συστήματος). Εάν είναι δυνατόν συγκρίνετα αυτά τα δεδομένα με παλιότερα αντίγραφα, πριν το σύστημά σας εκτεθεί, για να εξασφαλίσετε ακεραιότητα δεδομένων.
Επαν-εγκαταστήστε το σύστημα.
Χρησιμοποιήστε νέους κωδικούς.
Επαναφέρετε εφαρμογές και δεδομένα από εφεδρικά αντίγραφα συστήματος και δεδομένων.
Εφαρμόστε όλες τις δυνατές ενημερώσεις.
Επαν-εξετάστε το σύστημα: απενεργοποιήστε όλες τις άχρηστες υπηρεσίες, ελέγξτε τους κανόνες του τείχους ασφαλείας και τις υπόλοιπες πολιτικές πρόσβασης.
Επανασυνδεθείτε στο δίκτυο.
Το Linux και η δικτύωση πάνε μαζί. Ο πυρήνας του Linux υποστηρίζει όλα τα κοινά και πολλά μη-κοινά πρωτόκολλα δικτύου. Το συνηθισμένα εργαλεία δικτύωσης του UNIX περιλαμβάνονται σε κάθε διανομή. Εκτός από αυτό οι περισσότερες διανομές προσφέρουν εργαλεία για εύκολη εγκατάσταση και διαχείριση δικτύου.
Το Linux είναι γνωστό ως μία σταθερή πλατφόρμα για εκτέλεση πολλών υπηρεσιών Διαδικτύου, το διαθέσιμο λογισμικό στο Διαδικτύου είναι ατελείωτο. Όπως και το UNIX, μπορούμε να χρησιμοποιήσουμε και να διαχειριστούμε το Linux από απόσταση, χρησιμοποιώντας μία από τις αρκετές λύσεις για απομακρυσμένη εκτέλεση των προγραμμάτων.
Θίξαμε σύντομα το θέμα της ασφάλειας. Το Linux σαν ένα ιδανικό σύστημα τείχους ασφαλαείας, ελαφρύ και φτηνό, αλλά μπορεί να χρησιμοποιηθεί και σε αρκετές άλλες δικτυακές λειτουργίες όπως δομολογητές και διακομηστές μεσολάβησης.
Η ενίσχυση της ασφάλειας του δικτύου επιτυγχάνεται κυρίως με την εφαρμογή τακτικών ενημερώσεων και κοινής λογικής.
Παρακάτω δίνεται μία περίληψη από εντολές που σχετίζονται με το δίκτυο:
Πίνακας 10-2. Νέες εντολές στο κεφάλαιο 10: Δικτύωση
Εντολή |
Σημασία |
---|---|
ftp |
Μεταφορά αρχείων μεταξύ υπολογιστών (ανασφαλής). |
host |
Λήψη πληροφοριών για δικτυωμένο υπολογιστή. |
ifconfig |
Εμφάνιση πληροφοριών διεπαφής δικτύου. |
ip |
Εμφάνιση πληροφοριών διεπαφής δικτύου (νεότερο). |
netstat |
Εμφάνιση πληροφοριών δρομολόγησης και στατιστικών δικτύου. |
ping |
Αποστολή αιτήσεων απόκρισης σε υπολογιστή. |
rdesktop |
Εμφάνιση επιφάνειας εργασίας MS Windows σε σύστημα Linux. |
route |
Εμφάνιση πληροφοριών δρομολόγησης. |
scp |
Ασφαλής αντιγραφή αρχείων από/προς άλλο υπολογιστή. |
sftp |
Ασφαλής μεταφορά αρχείων μεταξύ υπολογιστών |
ssh |
Κρυπτογραφημένη σύνδεση σε απομακρυσμένο υπολογιστή. |
ssh-keygen |
Δημιουργία κλειδιών ταυτοποίσης για το Secure SHell. |
telnet |
Σύνδεση σε απομακρυσμένο υπολογιστή (ανασφαλής). |
tracepath/traceroute |
Εμφάνιση δικτυακής διαδρομής προς απομακρυσμένο υπολογιστή. |
whois |
Λήψη πληροφοριών για όνομα πεδίου (domain). |
xclock |
Εφαρμογή ρολογιού X Window. |
xhost |
Εργαλείο ελέγχου πρόσβασης X Window. |
Εμφανίστε τις πληροφορίες δικτύωσης του υπολογιστή σας: διεύθυνση IP, πύλη δρομολόγησης, διακομιστές ονομάτων.
Έστω οτι δεν υπάρχει διαθέσιμο o DNS. Τι θα κάνετε για να προσπελάσετε το διπλανό υπολογιστή χωρίς να εισάγετε συνεχώς τη διεύθυνση IP;
Πώς θα αποθηκεύσετε μόνιμα πληροφορίες διαμεσολάβησης για ένα περιηγητή κειμένου όπως ο links;
Ποιοι διακομιστές ονομάτων διαχειρίζονται το πεδίο redhat.com;
Στείλτε ένα E-mail στον τοπικό σας λογαριασμό. Δοκιμάστε δύο διαφορετικούς τρόπους και διαβάστε το. Πώς μπορείτε να ελέγξετε αν έφτασε;
Δέχεται ο υπολογιστής σας ανώνυμες συνδέσεις FTP; Πώς θα χρησιμοποιήσετε το πρόγραμμα ncftp για να ταυτοποιηθείτε με όνομα χρήστη και κωδικό πρόσβασης;
Ο υπολογιστής σας εκτελεί διακομιστή ιστού; Αν όχι, ενεργοποιείστε τον. Ελέγξτε τα αρχεία καταγραφής!
Από τον τοπικό σας υπολογιστή, εμφανίστε μια γραφική εφαρμογή, όπως το xclock στην οθόνη του διπλανού υπολογιστή. Πρέπει να δημιουργηθούν κατάλληλοι λογαριασμοί. Χρησιμοποιήστε ασφαλή σύνδεση!
Ρυθμίστε κλειδιά ταυτοποίησης SSH ώστε να μπορείτε να συνδέεστε στο διπλανό υπολογιστή χωρίς συνθηματικό πρόσβασης.
Κάντε ένα εφεδρικό αντίγραφο του οικείου καταλόγου σας στο /var/tmp του διπλανού σας υπολογιστή, με χρήση scp. Πριν τη μεταφορά αρχειοθετήστε και συμπιέστε! Συνδεθείτε με τον απομακρυσμένο υπολογιστλη με ssh, ανοίξτε το εφεδρικό αντίγραφο, και βάλτε ένα αρχείο πίσω στο τοπικό υπολογιστή με sftp.
Κάντε μια λίστα τον ανοικτών θυρών (που ακούν) στον υπολογιστή σας.
Έστω οτι θέλετε να εκτελέσετε ένα διακομιστή ιστού. Ποιες υπηρεσίες θα απενεργοποιήσετε; Πώς θα το πετύχετε;
Εγκαταστήσετε διαθέσιμες ενημερώσεις.
Πώς μπορείτε να δείτε ποιος είναι συνδεδεμένος στο σύστημά σας;
Δημιουργείστε μια επαναλαμβανόμενη εργασία που θα σας υπενθυμίζει να αλλάξετε κωδικό πρόσβασης κάθε μήνα, αλλάζοντας κατά προτίμηση και τον κωδικό πρόσβασης του root..
Αυτό το κεφάλαιο συζητά τα παρακάτω (σύντομα, καθώς τα πεδία ήχου και video είναι πολύ ευρύ):
Διαμόρφωση κάρτας ήχου
Αναπαραγωγή και αντιγραφή CDs
Αναπαραγωγή αρχείων μουσικής
Έλεγχος έντασης ήχου
Video και τηλεόραση
Ηχογράφηση
Πιθανότατα, το σύστημά σας έχει ήδη εγκατεστημένους οδηγούς ήχου και η διαμόρφωσή τους έγινε κατά την εγκατάσταση. Παρόμοια, αν ποτέ χρειαστεί να αντικαταστήσετε το υλικό ήχου, πολλά συστήματα παρέχουν εργαλεία που επιτρέπουν την εύκολη ρύθμιση και διαμόρφωση της συσκευής. Οι πιο σύγχρονες κάρτες ήχου plug-and-play αναγνωρίζονται αυτόματα. Αν μπορείτε να ακούσετε τα δείγματα ήχου που αναπαράγονται κατά τη διαμόρφωση, απλά πατήστε OK και όλα θα ρυθμιστούν για σας.
Αν η κάρτα σας δεν αναγνωριστεί αυτόματα, μπορεί να δείτε μια λίστα καρτών ήχου και/ή ιδιότητες καρτών ήχου από όπου θα επιλέξετε. Μετά από αυτό, θα πρέπει να δώσετε τη σωστή θύρα Εισόδου/Εξόδου, ρυθμίσιες IRQ και DMA. Οι πληροφορίες ρυθμίσεων μπορούν να βρεθούν στη τεκμηρίωση της κάρτας ήχου. Αν βρίσκεστε σε σύστημα dual boot με MS Windows, tαυτή η πληροφορία μπορεί να βρεθεί επίσης στο Windows Control Panel.
Αν η αυτόματη ανίχνευση κάρτας αποτύχει |
|
---|---|
|
Αν η κάρτα ήχου δεν διαθέτει προ-επιλεγμένη υποστήριξη, θα πρέπει να εφαρμόσετε άλλες τεχνικές. Αυτές περιγράφονται στο Linux Sound HOWTO. |
Υπάρχουν γενικά δύο αρχιτεκτονικές ήχου: η παλαιότερη Open Sound System ή OSS, που λειτουργεί με κάθε σύστημα τύπου UNIX, και η νεότερη Advanced Linux Sound Architecture ή ALSA, που έχει καλύτερη στήριξη στο Linux, όπως φανερώνει το όνομα. Η ALSA επίσης έχει περισσότερα χαρακτηριστικά και ταχύτερη ανάπτυξη οδηγών. Θα εστιαστούμε στο ALSA.
Σήμερα, υποστηρίζονται σχεδόν όλα τα chipsets ήχου. Δεν υποστηρίζονται μόνο κάποιες εξειδικευμένες λύσεις και μερικές κάρτες κατασκευαστών που αρνούνται να δώσουν στοιχεία. Μια επισκόπηση των υποστηριζόμενων συσκευών μπορεί να βρεθεί στον ιστοτόπο της ALSA στο http://www.alsa-project.org/alsa-doc/index.php?vendor=All#matrix.
Συστήματα διαμόρφωσης που εγκαθίστανται με την ALSA χρησιμοποιούν το εργαλείο alsaconf. Επιπρόσθετα, συνήθως οι διανομές συνήθως παρέχουν δικά τους εργαλεία διαμόρφωσης. Αυτά τα εργαλεία μπορεί να ολοκληρώσουν παλιές και νέες μορφές διαχείρισης.
Το πακέτο cdp έρχεται με τις περισσότερες διανομές και παρέχει το πρόγραμμα cdp ή cdplay, ένα CD-player κειμένου. Οι διαχειριστές επιφάνειας εργασίας συνήθως περιλαμβάνουν ένα γραφικό εργαλείο, όπως το gnome-cd στοGnome, που μπορεί να ξεκινήσει από το menu.
Βεβαιωθείτε οτι καταλαβαίνετε τη διαφορά μεταξύ CD ήχου και CD δεδομένων. Για να ακούσετε ένα CD ήχου δεν χρειάζεται να το προσαρτήσετε στο σύστημα αρχείων. Αυτό συμβαίνει επειδή τα δεδομένα του CD ήχου δεν είναι δεδομένα που αναγνωρίζονται από το σύστημα αρχείων του Linux: διαβάζονται και στέλνονται κατ' ευθείαν στο κανάλι εξόδου ήχου, μέσω του προγράμματος αναπαραγωγής ήχου. Αν το Cd σας είναι CD δεδομένων που περιέχει αρχεία .mp3 files, πρέπει πρώτα να το προσαρτήσετε στο σύστημα αρχείων, και μετά να χρησιμοποιήσετε τα προγράμματα αναπαραγωγής ήχου που συζητάμε παρακάτω. Η διαδικασία προσάρτησης εξηγείται στην Ενότητα 7.5.5.
Το εργαλείο cdparanoia από το ομώνυμο πακέτο διαβάζει ήχο απ' ευθείας από το CD, χωρίς αναλογικές μετατροπές, και γράφει δεδομένα σε ένα αρχείο ή σωλήνωση σε διαφορετικές μορφοποιήσεις, από τις οποίες η .wav είναι μάλλον η δημοφιλέστερη. Υπάρχουν διάφορα εργαλεία μετατροπής μορφοποιήσεων, όπως το .mp3, που έρχονται με τις περισσότερες διανομές ή μεταφορτώνονται ξεχωριστά. Το έργο GNU παρέχει διάφορα εργαλεία αναπαραγωγή και επεξεργασίας CD, δείτε το Free Software Directory, Audio section για λεπτομέρειες.
Η δημιουργία CD ήχου διευκολύνεται, μεταξύ των άλλων, από το εργαλείο kaudiocreator του KDE.Η τεκμηρίωση του KDE Help Center είναι καθαρή.
Η δημιουργία CD γενικά καλύπτεται στην Ενότητα 9.2.2.
Η δημοφιλής μορφοποίηση .mp3 υποστηρίζεται ευρύτατα στα συστήματα Linux. Οι περισσότερες κατανομές περιλαμβάνουν πολλαπλά προγράμματα που μπορούν να παίξουν τέτοια αρχεία. Μεταξύ άλλων εφαρμογών, η XMMS, που παρουσιάζεται στην παρακάτω εικόνα, είναι μια από τις πιο διαδεδομένες, εν μέρει γιατί μοιάζει με την αντίστοιχη εφαρμογή των Windows.
Εικόνα 11-1. XMMS mp3 player
Επίσης πολύ δημοφιλής είναι η AmaroK, μιά εφαρμογή KDE που σταθερά κερδίζει δημοτικότητα, και η εφαρμογή MPlayer, που παίζει και ταινίες.
Περιορισμοί |
|
---|---|
|
Μερικές διανομές δεν επιτρέπουν αναπαραγωγή MP3 χωρίς τροποποίηση της διαμόρφωσης του συστήματος, εξ' αιτίας των περιορισμών αδειοδότησης των εργαλείων MP3. Μπορεί να απαιτηθεί η εγκατάσταση επιπλέον λογισμικού. |
Στη διεπαφή κειμένου, μπορείτε να χρησιμοποιήσετε την εντολή mplayer:
[tille@octarine ~]$ mplayer /opt/mp3/oriental/*.mp3 MPlayer 1.0pre7-RPM-3.4.2 (C) 2000-2005 MPlayer Team CPU: Advanced Micro Devices Duron Spitfire (Family: 6, Stepping: 1) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0 Playing /opt/oldopt/mp3/oriental/Mazika_Diana-Krozon_Super-Star_Ensani-Ma- Bansak.mp3. Cache fill: 1.17% (98304 bytes) Audio file detected. Clip info: Title: Ensani-Ma-Bansak.mp3 Artist: Diana-Krozon Album: Super-Star Year: Comment: Genre: Unknown ========================================================================== Opening audio decoder: [mp3lib] MPEG layer-2, layer-3 mpg123: Can't rewind stream by 450 bits! AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400) Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3) ========================================================================== Checking audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le... AF_pre: 44100Hz/2ch/s16le AO: [oss] 44100Hz 2ch s16le (2 bps) Building audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le... Video: no video Starting playback... A: 227.8 (03:23:.1) 1.8% 12% |
Η συζήτηση όλων των μορφοποιήσεων θα μας οδηγούσε πολύ μακριά. Εδώ παρουσιάζουμε μια (ατελή) επισκόπηση των πιο συνηθισμένων μορφοποιήσεων αρχείων ήχου και του αντίστοιχου λογισμικού:
Ogg Vorbis: Ελεύθερη μορφοποίηση ήχου: δείτε το GNU audio directory για εργαλεία – μπορεί να βρίσκονται ήδη στη διανομή σας. Η μορφοποίηση αυτή αναπτύχθηκε επειδή το πρότυπο MP3 είναι ιδιόκτητο.
Real audio και video: realplay από τη RealNetworks
SoX ή Sound eXchange: μετατροπέας ήχου, έρχεται με το πρόγραμμα play. Αναπαράγει .wav, . ogg και διάφορες άλλες μορφοποιήσεις, ακόμη και καθαρά δυαδική μορφοποίηση.
Playmidi: πρόγραμμα αναπαραγωγής MIDI, δείτε το GNU audio directory.
AlsaPlayer: από το έργο Advanced Linux Sound Architecture, δείτε τον ιστοτόπο AlsaPlayer.
mplayer: αναπαράγει σχεδόν τα πάντα, ακόμη και αρχεία mp3. Πληροφορίες στον ιστοτόπο MPlayerHQ.
hxplay: υποστηρίζει RealAudio και RealVideo, mp3, mp4 audio, Flash, wav και άλλα., δείτε στο HelixDNA (μερικά συστατικά του δεν είναι εντελώς ελεύθερα).
rhythmbox: βασισμένο στο GStreamer, μπορεί να παίξει οτιδήποτε υποστηρίζει το GStreamer, που ισχυρίζεται οτι μπορεί να παίξει οτιδήποτε, δείτε τους ιστοτόπους Rhythmbox και GStreamer.
Ελέγξτε τη τεκμηρίωση του συστήματός για συγκεκριμένα εργαλεία και λεπτομερείς οδηγίες χρήσης.
Δεν έχω αυτές τις εφαρμογές στο σύστημά μου! |
|
---|---|
|
Πολλά από τα εργαλεία και τις εφαρμογές που συζητήθηκαν παραπάνω είναι προαιρετικό λογισμικό. Είναι πιθανό να μην περιλαμβάνονται στο προ-επιλεγμένο λογισμικό προς εγκατάσταση στη διανομή σας, αλλά μπορείτε να το βρείτε στα πρόσθετα πακέτα. Μπορεί επίσης η εφαρμογή που ψάχνετε να μην βρίσκεται καθόλου στη διανομή σας. Σε αυτή τη περίπτωση μεταφορτώστε την από το αποθετήριο της διανομής σας ή από τον ιστοτόπο της εφαρμογής. |
Δύο κοινά εργαλεία κειμένου για τη προσαρμογή της έντασης του ήχου, είναι τα aumix και alsamixer. Οι ρυθμίσεις γίνονται με τα πλήκτρα βελών. Το alsamixer έχει μια γραφική διεπαφή στο menu του Gnome, ή αν ξεκινήσει από τη γραμμή εντολών ως gnome-alsamixer. Το kmix κάνει τα ίδια στο KDE.
Ανεξάρτητα από το πως επιλέγετε να ακούσετε τη μουσική σας, θυμηθείτε οτι οι άλλοι μπορεί να μην θέλουν να ακούσουν τη μουσική σας. Προσπαθήστε να είστε ευγενικοί, ιδίως σε εργασιακά περιβάλλοντα. Χρησιμοποιείτε καλά ακουστικά, όχι τα πολύ μικρά. Είναι καλύτερα για τα αυτιά σας και ακούγονται λιγότερο στο περίγυρο.
Πάλι υπάρχουν πολλά διαθέσιμα εργαλεία για εγγραφή φωνής ή μουσικής. Για ηχογράφηση της φωνής σας μπορείτε να εισάγετε στη γραμμή εντολών την εντολή arecord:
alexey@russia:~> arecord /var/tmp/myvoice.wav Recording WAVE '/var/tmp/myvoice.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono Aborted by signal Interrups... |
"Interrupt" σημαίνει οτι η εφαρμογή συνέλαβε ένα Ctrl+C. Αναπαράγουμε την εγγραφή με την εντολή play.
Αυτός είναι ένας καλός έλεγχος που μπορούμε να κάνουμε πριν ξεκινήσουμε εφαρμογές που χρειάζονται φωνητική είσοδο, όπως το Voice over IP (VoIP). Να έχετε υπ' όψη οτι το μικρόφωνο πρέπει να έχει ενεργοποιηθεί. Αν δεν ακούτε τη φωνή σας ελέγξτε τις ρυθμίσεις ήχου. Συχνά το μικρόφωνο είναι κλειστό ή σε μικρή ένταση. Μπορεί να ρυθμιστεί με το alsamixer ή τη γραφική διεπαφή της διανομής σας.
Στο KDE μπορέιτε να ξεκινήσετε την λειτουργία krec, το Gnome παρέχει το gnome-sound-recorder.
Υπάρχουν διάφορες εφαρμογές:
xine: ελεύθερη αναπαραγωγή video
ogle: DVD player.
okle: KDE έκδοση του ogle
mplayer: Movie Player για Linux.
totem: αναπαράγει αρχεία ήχου και video, CD ήχου, VCD και DVD.
realplay: της RealNetworks.
hxplay: εναλλακτική του Real, δες HelixDNA.
kaffeine: media player για το KDE3.
Πιθανότατα, θα βρείτε κάποια από αυτές στα γραφικά menus.
Να έχετε υπ' όψη οτι οι απαραίτητες κωδικοποιήσεις (codecs) για παρακολούθηση διαφόρων τύπων video μπορεί να μην είναι διαθέσιμες στο σύστημά σας. Ισως χρειαστείτε πολύ ώρα για τη μεταφόρτωση των W32codecs και libdvdcss.
Το LDP δημοσίευσε ένα πολύ κατάλληλο για αυτή την ενότητα. Ονομάζεται DVD Playback HOWTO και περιγράφει τα διάφορα διαθέσιμα εργαλεία για παρακολούθηση ταινιών σε σύστημα με οδηγό DVD. Είναι μια εξαιρετική συνέχεια στο DVD HOWTO που εξηγεί την εγκατάσταση του οδηγού.
Για τη παρακολούθηση και εγγραφή τηλεόρασης, video και άλλων ροών υπάρχουν, μεταξύ των άλλων, τα παρακάτω:
tvtime: πολύ καλό πρόγραμμα με διαχείριση σταθμών, διαλογικό teletext, και πολλά άλλα.
zapping: παρακολούθηση τηλεοπτικών προγραμμάτων για το Gnome.
xawtv: παρακολούθηση τηλεοπτικών προγραμμάτων για το X11.
Η τηλεφωνία διαδικτύου, Voice over IP (VoIP) ή ψηφιακή τηλεφωνία επιτρέπει τηλεφωνική επικοινωνία μέσω δικτύου. Η μεγάλη διαφορά είναι οτι οι ροές ήχου (φωνής) μεταφέρονται μέσω ενός δικτύου γενικού σκοπού, του Διαδικτύου, σε αντίθεση με τη συμβατική τηλεφωνία, που χρησιμοποιεί ειδικό δίκτυο γραμμών μεταφοράς ήχου (φωνής). Τα δύο δίκτυα μπορεί να διασυνδεθούν, κάτω από ειδικές συνθήκες, αλλά για την ώρα δεν είναι τυπική περίπτωση. Με άλλα λόγια: είναι πολύ πιθανό οτι δεν θα μπορείτε να τηλεφωνείτε σε συνδρομητές συμβατικής τηλεφωνίας. Αν είναι δυνατό, πιθανότατα θα πρέπει να πληρώσετε κάποια συνδρομή. (Τώρα πλέον οι περισσότεροι πάροχοι ADSL προσφέρουν διασύνδεση VoIP με συμβατική τηλεφωνία, ΣτΜ).
Αν και ήδη υπάρχουν αρκετές εφαρμογές για μεταφόρτωση, τόσο ελεύθερες όσο και ιδιόκτητες, υπάρχουν μερικά σημαντικά μειονεκτήματα για το VoIP. Το σημαντικότερο, το σύστημα είναι αναξιόπιστο, μπορεί να είναι αργό στην επιστροφή ήχου ή με πολύ θόρυβο. Έτσι δεν μπορεί να αντικαταστήσει τη συμβατική τηλεφωνία, σκεφτείτε για παράδειγμα τα επείγοντα τηλεφωνήματα. Αν και γίνονται προσπάθειες δεν είναι πάντα σίγουρο ότι μπορείε να επικοινωνήσετε με αυτόν που προσπαθείτε.
Οι περισσότερες εφαρμογές δεν χρησιμοποιούν κρυπτογράφηση, έτσι να ξέρετε οτι θα μπορούσε κάποιος να σας κρυφακούσει. Αν σας ενδιαφέρει η ασφάλεια διαβάστε τη τεκμηρίωση του πελάτη VoIP που έχετε. Επιπρόσθετα, αν χρησιμοποιείτε τείχος ασφαλείας, θα πρέπει να διαμορφωθεί ώστε να επιτρέπει συνδέσεις από παντού, έτσι η χρήση VoIP αυξάνει γενικότερα τους κινδύνους ασφάλειας.
Πρώτα απ' όλα χρειάζεστε ένα πάροχο που να προσφέρει αυτή την υπηρεσία. Η υπηρεσία παρέχεται συνήθως μαζί με την υπηρεσία σύνδεσης ADSL και με πρόσβαση στη συμβατική τηλεφωνία, με επιπλέον συνδρομή. Καθαρά τηλεφωνία διαδικτύου προσφέρεται από τα Skype, Google και πολλούς άλλους.
Αν θέλετε να εγκαταστήσετε μόνος σας ένα διακομιστή, δείτε το Asterisk.
Στη πλευρά του πελάτη, οι εφαρμογές που μπορείτε να χρησιμοποιήσετε εξαρτώνται από τη διαμόρφωση του δικτύου. Αν έχετε απ' ευθείας σύνδεση με το Διαδίκτυο δεν θα έχετε προβλήματα, αρκεί να γνωρίζετε με ποιο διακομιστή να συνδεθείτε και να έχετε δυνατότητα σύνδεσης (όνομα χρήστη και κωδικό πρόσβασης).
Αν όμως βρίσκεστε πίσω από τείχος ασφαλείας που έχει Network Address Translation (NAT), μερικές υπηρεσίες μπορεί να μη δουλεύουν, γιατί θα βλέπουν μόνο τη διεύθυνση IP του τείχους ασφαλείας και όχι τη διεύθυνση IP του υπολογιστή, που μπορεί να μην είναι προσβάσιμη από το Διαδίκτυο. Αυτό εξαρτάται από το πρωτόκολλο που χρησιμοποιείται από την εφαρμογή.
Επίσης, ένας ανασταλτικός παράγοντας μπορεί να είναι το διαθέσιμο εύρος ζώνης: μερικές εφαρμογές είναι βελτιστοποιημένες για χαμηλή κατανάλωση εύρους ζώνης, ενώ άλλες απαιτούν υψηλό εύρος ζώνης.
Μεταξύ των συνηθέστερων εφαρμογών είναι ο πελάτης Skype, που έχει μια διεπαφή που θυμίζει instant messaging, και το X-Lite, η ελεύθερη έκδοση του XTen softphone, που μοιάζει με κινητό τηλέφωνο. Όμως, αν και αυτά τα προγράμματα είναι διαθέσιμα για ελεύθερη μεταφόρτωση και πολύ δημοφιλή, δεν είναι ανοικτά αφού χρησιμοποιούν ιδιόκτητα πρωτόκολλα.
Ελεύθεροι και ανοικτοί πελάτες VoIP είναι λόγου χάρη οι Gizmo, Linphone, GnomeMeeting και KPhone.
Υλικό πελάτη |
|
---|---|
|
Αν και ο υπολογιστής σας, ειδικά αν είναι φορητός, έχει ενσωματωμένο μικρόφωνο, το αποτέλεσμα είναι πολύ καλύτερο αν χρησιμοποιείτε ακουστικά και ειδικό μικρόφωνο. Αν έχετε επιλογή, τα ακουστικά USB είναι καλύτερα γιατλι είναι ανεξάρτητα από το υλικό ήχου. Με το alsamixer μπορείτε να διαμορφώσετε τα επίπεδα εισόδου και εξόδου. |
Οι εφαρμογές VoIP είναι σίγουρα μια αναπτυσσόμενη αγορά. Εθελοντές μπορούν να τεκμηριώσουν τη τρέχουσα κατάσταση στο http://www.voip-info.org/.
Η πλατφόρμα GNU/Linux είναι εξοπλισμένη για πολυμέσα. Υποστηρίζει μια μεγάλη ποικιλία συσκευών όπως κάρτες ήχου, κάρτες τηλεόρασης, ακουστικά, μικρόφωνα, συστήματα CD και DVD. Η λίστα των εφαρμογών είναι ατέλειωτη, γι' αυτό πρέπει να περιοριστούμε στις γενικές μόνο εντολές.
Πίνακας 11-1. Νέες εντολές στο κεφάλαιο 11: Ήχος
Εντολή |
Σημασία |
---|---|
alsaconf |
Διαμόρφωση του συστήματος ήχου ALSA. |
alsamixer |
Ρύθμιση επιπέδων εξόδου του οδηγού ALSA. |
arecord |
Εγγραφή ήχου. |
aumix |
Εργαλείο μίξης ήχου. |
cdp |
Αναπαραγωγή CD ήχου. |
cdparanoia |
Αναπαραγωγή CD ήχου. |
cdplay |
Αναπαραγωγή CD ήχου. |
gnome-alsamixer |
Gnome διεπαφή ALSA. |
gnome-cd |
Gnome διεπαφή για αναπαραγωγή CD. |
gnome-sound-recorder |
Gnome διεπαφή για εγγραφή ήχου. |
kaudiocreator |
KDE διεπαφή για δημιουργία CD ήχου. |
kmix |
KDE διεπαφή για ρύθμιση ήχου. |
krec |
KDE διεπαφή για εγγραφή ήχου. |
mplayer |
Αναπαραγωγή πολυμέσων. |
play |
Εργαλείο γραμμής εντολών για αναπαραγωγή ήχου. |
Από το menu του Gnome ή του KDE, ανοίξτε τη κονσόλα ρύθμισης ήχου. Βεβαιωθείτε οτι οι συσκευές είναι συνδεδεμένες σωστά και ρυθμίστε την ένταση ήχου που σας βολεύει. Αν το σύστημά σας είναι ALSA-συμβατό, εβαιωθείτε οτι χρησιμοποιείτε τη σωστή κονσόλα.
Αν έχετε μικρόφωνο, προσπαθήστε να ηχογραφήσετε τη φωνή σας. Βεβαιωθείτε οτι η ένταση εγγραφής δεν είναι πολύ μεγάλη, γιατί αυτό έχει σαν αποτέλεσμα ψηλούς τόνους και αρκετό θόρυβο όταν επικοινωνείτε με άλλους. Στη γραμμή εντολών, μπορείτε ακόμη να προσθήσετε τη χρήση των arecord και aplay για εγγραφή και αναπαραγωγή ήχων.
Βρείτε αρχεία ήχου στο σύστημά σας και προσπαθήστε να τα ακούσετε..
Εισάγετε ένα CD ήχου και προσπαθήστε να το ακούσετε.
Βρείτε ένα συνομιλητή και ρυθμίστε ένα πρόγραμμα VoIP. (Ίσως πρέπει να το εγκαταστήσετε πρώτα..)
Μπορείτε να ακούσετε ραδιόφωνο διαδικτύου;
Αν έχετε οδηγό DVD και μια ταινία σε δίσκο DVD, προσπαθήστε να τη παρακολουθήσετε.
Αυτό το παράρτημα παρουσιάζει μια επισκόπηση χρήσιμων βιβλίων και ιστοτόπων.
"Linux in a Nutshell" by Ellen Siever, Jessica P. Hackman, Stephen Spainhour, Stephen Figgins, O'Reilly UK, ISBN 0596000251
"Running Linux" by Matt Welsh, Matthias Kalle Dalheimer, Lar Kaufman, O'Reilly UK, ISBN 156592469X
"Linux Unleashed" by Tim Parker, Bill Ball, David Pitts, Sams, ISBN 0672316889
"When You Can't Find Your System Administrator" by Linda Mui, O'Reilly UK, ISBN 1565921046
When you actually buy a distribution, it will contain a very decent user manual.
"Learning the Vi Editor" by Linda Lamb and Arnold Robbins, O'Reilly UK, ISBN 1565924266
"GNU Emacs Manual" by Richard M.Stallman, iUniverse.Com Inc., ISBN 0595100333
"Learning GNU Emacs" by Debra Cameron, Bill Rosenblatt and Eric Raymond, O'Reilly UK, ISBN 1565921526
"Perl Cookbook" by Tom Christiansen and Nathan Torkington, O'Reilly UK, ISBN 1565922433
"Unix Shell Programming" by Stephen G.Kochan and Patrick H.Wood, Sams Publishing, ISBN 067248448X
"Learning the Bash Shell" by Cameron Newham and Bill Rosenblatt, O'Reilly UK, ISBN 1565923472
"The Complete Linux Shell Programming Training Course" by Ellie Quigley and Scott Hawkins, Prentice Hall PTR, ISBN 0130406767
"Linux and Unix Shell Programming" by David Tansley, Addison Wesley Publishing Company, ISBN 0201674726
"Unix C Shell Field Guide" by Gail and Paul Anderson, Prentice Hall, ISBN 013937468X
"Gnome User's Guide" by the Gnome Community, iUniverse.Com Inc., ISBN 0595132251
"KDE Bible" by Dave Nash, Hungry Minds Inc., ISBN 0764546929
"The Concise Guide to XFree86 for Linux" by Aron HSiao, Que, ISBN 0789721821
"The New XFree86" by Bill Ball, Prima Publishing, ISBN 0761531521
"Beginning GTK+ and Gnome" by Peter Wright, Wrox Press, ISBN 1861003811
"KDE 2.0 Development" by David Sweet and Matthias Ettrich, Sams Publishing, ISBN 0672318911
"GTK+/Gnome Application Development" by Havoc Pennington, New Riders Publishing, ISBN 0735700788
"TCP/IP Illustrated, Volume I: The Protocols" by W. Richard Stevens, Addison-Wesley Professional Computing Series, ISBN 0-201-63346-9
"DNS and BIND" by Paul Albitz, Cricket Liu, Mike Loukides and Deborah Russell, O'Reilly & Associates, ISBN 0596001584
"The Concise Guide to DNS and BIND" by Nicolai Langfeldt, Que, ISBN 0789722739
"Implementing LDAP" by Mark Wilcox, Wrox Press, ISBN 1861002211
"Understanding and deploying LDAP directory services" by Tim Howes and co., Sams, ISBN 0672323168
"Sendmail" by Brian Costales and Eric Allman, O'Reilly UK, ISBN 1565922220
"Removing the Spam : Email Processing and Filtering" by Geoff Mulligan, Addison Wesley Publishing Company, ISBN 0201379570
"Managing IMAP" by Dianna & Kevin Mullet, O'Reilly UK, ISBN 059600012X
The Linux documentation project: εγχειρίδια, τεκμηρίωση, HOWTOs, FAQs
LinuxQuestions.org: forum, downloads, εγχειρίδια και πολλά άλλα
Google for Linux: εξειδικευμένη μηχανή αναζήτησης
Google Groups: αρχειοθήκη όλων των ανακοινώσεων των ομάδων ειδήσεων, ειδικά η ιεραρχία comp.os.linux
Slashdot: καθημερινές εδήσεις
http://www.oreilly.com: βιβλία για Linux System and Network administration, Perl, Java, ...
POSIX: το πρότυπο
Linux HQ: Διατηρεί μια πλήρη βάση δεδομένων πηγαίου κώδικα, patches και τεκμηρίωση για διάφορες εκδόσεις του πυρήνα του Linux.
AlphaLinux: Το Linux σε αρχιτεκτονική Alpha
Linux-MIPS: Το Linux σε MIPS
Linux on the Road: Ειδικές οδηγίες για εγκατάσταση και εκτέλεση Linux σε φορητούς υπολογιστές, PDAs,κινητά τηλέφωνα κλπ. Ρυθμίσεις για διάφορα μοντέλα.
MkLinux: Linux σε Apple
The Fedora Project: υποστηρίζεται από τη RedHat
Mandriva πρώην Mandrake
Ubuntu βασισμένο σε Debian, ιδιαίτερα φιλικό
Debian το GNU/Linux
SuSE τώρα ανήκει στη Novell αλλά υπάρχει το OpenSuse
LinuxISO.org: CD images για όλες τις διανομές.
Knoppix: διανομή που εκτελείται από live CD (ακόμη και από USB stick, to DSL, ΣτΜ).
DistroWatch.com: find a Linux that goes with your style.
...
Freshmeat: νέο λογισμικό, αρχειοθήκες λογισμικού
OpenSSH: ιστοτόπος του Secure SHell
OpenOffice: Αυτοματισμός γραφείου (συμβατός και με MS Office)
KDE: ιστοτόπος του K Desktop
GNU: GNU και λογισμικό GNU
Gnome: ιστοτόπος του Gnome
RPM Find: όλα τα πακέτα RPM
Samba: υπηρεσίες διαμοιρασμού αρχείων και εκτυπωτών MS Windows
Home of the OpenLDAP Project: OpenLDAP server/clients/utilities, FAQ και τεκμηρίωση.
Sendmail Homepage: Λεπτομερής τεχνική περιγραφή του Sendmail με παραδείγματα διαμόρφωσης.
Netfilter: περιέχει σχολιασμένες πληροφορίες για τα iptables: HOWTO, FAQ, οδηγούς, ...
Official GIMP website: Όλες οι πληροφορίες για το GNU Image Manipulation Program.
SourceForge.net: ιστοτόπος μεταφόρτωσης Λογισμικού Ανοικτού Κώδικα.
Στο παράρτημα αυτό συσχετίζουμε εντολές του DOS με τις αντίστοιχες του Linux.
Σαν μια επιπλέον βοήθεια για χρήστες με υπόβαθρο στα Windows, ο παρακάτω πίνακας παρουσιάζει εντολές του MS-DOS και αντίστοιχες του Linux. Να έχετε υπ' όψη οτι οι εντολές του Linux συνήθως έχουν πολλές επιλογές. Μελετήστε τη σχετική τεκμηρίωση..
Πίνακας B-1. Επισκόπηση των εντολών DOS/Linux
εντολή DOS |
εντολή Linux |
---|---|
<command> /? |
man <command> or command --help |
cd |
cd |
chdir |
pwd |
cls |
clear |
copy |
cp |
date |
date |
del |
rm |
dir |
ls |
echo |
echo |
edit |
vim (ή άλλος συντάκτης) |
exit |
exit |
fc |
diff |
find |
grep |
format |
mke2fs ή mformat |
mem |
free |
mkdir |
mkdir |
more |
more ή less |
move |
mv |
ren |
mv |
time |
date |
Αυτό το παράρτημα παρέχει μια επισκόπηση των κοινών και των διαφορετικών χαρακτηριστικών των βασικών φλοιών.
Τα παρακάτω χαρακτηριστικά είναι κοινά σε κάθε φλοιό. Σημειώστε οτι οι εντολές τερματισμού, αναστολής, jobs, bg και fg είναι διαθέσιμες μόνο σε συστήματα που υποστηρίζουν έλεγχο εργασιών.
Πίνακας C-1. Κοινά χαρακτηριστικά φλοιών
Εντολή |
Σημασία |
---|---|
> |
Ανακατεύθυνση εξόδου |
>> |
Προσάρτηση σε αρχείο |
< |
Ανακατεύθυνση εισόδου |
<< |
Προσάρτηση εισόδου |
| |
Σωλήνωση εξόδου |
& |
Εκτέλεση διεργασίας στο παρασκήνιο |
; |
Διαχωρισμός εντολών στην ίδια γραμμή |
* |
Ταύτιση οποιουδήποτε χαρακτήρα σε όνομα αρχείου |
? |
Ταύτιση ενός χαρακτήρα σε όνομα αρχείου |
[ ] |
Ταύτιση των χαρακτήρων που περιλαμβάνονται στις αγκύλες |
( ) |
Εκτέλεση σε υπο-φλοιό |
` ` |
Υποκατάσταση εξόδου της εντολής που βρίσκεται μέσα στις εισαγωγικά |
" " |
Μερική αναπαραγωγή (επιτρέπει μεταβλητές και επέκταση εντολών) |
' ' |
Πλήρης αναπαραγωγή (μη επέκταση) |
\ |
Αναπαραγωγή επόμενου χαρακτήρα |
$var |
Τιμή μεταβλητής var |
$$ |
Αριθμός διεργασίας |
$0 |
Όνομα εντολής |
$n |
n-ισοτό όρισμα (n από 0 έως 9) |
$* |
Όλα τα ορίσματα σε μια απλή λέξη |
# |
Αρχή σχολίου |
bg |
Εκτέλεση στο παρασκήνιο |
break |
Έξοδος από βρόχο |
cd |
Αλλαγή καταλόγων |
continue |
Συνέχιση βρόχου |
echo |
Εμφάνιση εξόδου |
eval |
Αποτίμηση ορισμάτων |
exec |
Εκτέλεση σε νέο φλοιό |
fg |
Εκτέλεση στο προσκήνιο |
jobs |
Εμφάνιση ενεργών εργασιών |
kill |
Τερματισμός εκτελούμενων εργασιών |
newgrp |
Αλλαγή σε νέα ομάδα |
shift |
Shift positional parameters |
stop |
Αναστολή εργασίας παρασκηνίου |
suspend |
Αναστολή εργασίας προσκηνίου |
time |
Χρονισμός εντολής |
umask |
Ρύθμιση αδειών αρχείου |
unset |
Διαγραφή μεταβλητής ή ορισμών συναρτήσεων |
wait |
Αναμονή τερματισμού εργασίας παρασκηνίου |
Ο παρακάτω πίνακας δείχνει τις κύριες διαφορές μεταξύ του πρότυπου φλοιού shell (sh), Bourne Again SHell (bash), Korn shell (ksh) και του C shell (csh).
Συμβατότητα φλοιώνy |
|
---|---|
|
Αφού το Bourne Again SHell είναι υπερσύνολο του sh, όλες οι εντολές του sh θα εκτελεστούν και στο bash – αλλά όχι το αντίστροφο. Το bash έχει πολύ περισσότερα δικά του χαρακτηριστικά, και, όπως δείχνει ο παρακάτω πίνακας,έχει ενσωματώσει χαρακτηριστικά και άλλων φλοιών. Αφού το Turbo C shell είναι υπερσύνολο του του csh, όλες οι εντολές csh θα δουλέψουν στο tcsh, αλλά όχι το αντίστροφο. |
Πίνακας C-2. Διαφορετικά χαρακτηριστικά φλοιών
sh |
bash |
ksh |
csh |
Σημασία/Ενέργεια |
---|---|---|---|---|
$ |
$ |
$ |
% |
Προ-επιλεγμένη προτροπή |
|
>| |
>| |
>! |
Επιβολή ανακατεύθυνσης |
> file 2>&1 |
&> file or > file 2>&1 |
> file 2>&1 |
>& file |
Ανακατεύθυνση stdout και stderr στο file |
|
{ } |
|
{ } |
Επέκταση στοιχείων στη λίστα |
`command` |
`command` or $(command) |
$(command) |
`command` |
Αντικατάσταση εξόδου της εντολής command |
$HOME |
$HOME |
$HOME |
$home |
Οικείος κατάλογος |
|
~ |
~ |
~ |
Σύμβολο οικείου καταλόγου |
|
~+, ~-, dirs |
~+, ~- |
=-, =N |
Access directory stack |
var=value |
VAR=value |
var=value |
set var=value |
Ανάθεση τιμής σε μεταβλητή |
export var |
export VAR=value |
export var=val |
setenv var val |
Ανάθεση τιμής σε μεταβλητή περιβάλλοντος |
|
${nnnn} |
${nn} |
|
Προσπέλαση περισσότερων από 9 ορισμάτων |
"$@" |
"$@" |
"$@" |
|
Όλα τα ξεχωριστά ορίσματα ως ξεχωριστές λέξεις |
$# |
$# |
$# |
$#argv |
Αριθμός ορισμάτων |
$? |
$? |
$? |
$status |
Κατάσταση εξόδου της εντολής που εκελέστηκε πιο πρόσφατα |
$! |
$! |
$! |
|
Το PID για τη πιο πρόσφατη διεργασία υποβάθρου |
$- |
$- |
$- |
|
Τρέχουσες επιλογές |
. file |
source file or . file |
. file |
source file |
Διάβασε εντολές από αρχείο |
|
alias x='y' |
alias x=y |
alias x y |
Συνώνυμο x για εντολή y |
case |
case |
case |
switch or case |
Πολλαπλή επιλογή |
done |
done |
done |
end |
Τερματισμός επανάληψης |
esac |
esac |
esac |
endsw |
Τέλος case ή switch |
exit n |
exit n |
exit n |
exit (expr) |
Έξοδος με αριθμό κατάστασης |
for/do |
for/do |
for/do |
foreach |
Επανάληψη through variables |
|
set -f , set -o nullglob|dotglob|nocaseglob|noglob |
|
noglob |
Ignore substitution characters for filename generation |
hash |
hash |
alias -t |
hashstat |
Display hashed commands (tracked aliases) |
hash cmds |
hash cmds |
alias -t cmds |
rehash |
Remember command locations |
hash -r |
hash -r |
|
unhash |
Forget command locations |
|
history |
history |
history |
Εμφάνιση προηγούμενων εντολών |
|
ArrowUp+Enter or !! |
r |
!! |
Επανάληψη τελευταίας εντολής |
|
!str |
r str |
!str |
Επανάληψη της τελευταίας εντολής που αρχίζει από "str" |
|
!cmd:s/x/y/ |
r x=y cmd |
!cmd:s/x/y/ |
Αντικατάσταση "x"με "y" στη πιο πρόσφατη εντολή που ξεκινά με "cmd", και εκτέλεση. |
if [ $i -eq 5 ] |
if [ $i -eq 5 ] |
if ((i==5)) |
if ($i==5) |
Ενδεικτική συνθήκη if |
fi |
fi |
fi |
endif |
Τέλος if |
ulimit |
ulimit |
ulimit |
limit |
Όριο πόρου |
pwd |
pwd |
pwd |
dirs |
Εμφάνιση τρέχοντος καταλόγου |
read |
read |
read |
$< |
Ανάγνωση από τερματικό |
trap 2 |
trap 2 |
trap 2 |
onintr |
Αγνόηση διακοπών |
|
unalias |
unalias |
unalias |
Αφαίρεση συνωνύμων |
until |
until |
until |
|
Αρχή βρόχου until |
while/do |
while/do |
while/do |
while |
Αρχή βρόχου while |
Το Bourne Again SHell έχει πολύ περισσότερα χαρακτηριστικά από αυτά που εμφανίζονται εδώ. Ο πίνακας σας δίνει μια ιδέα πως αυτός ο φλοιός ενσωματώνει καλές ιδέες από άλλους φλοιούς: στη στήλη του bash .δεν υπάρχουν κενά. Περισσότερες πληροφορίες στις σελίδες τεκμηρίωσης του Bash, στην ενότητα "Bash Features".
Γενικότερα:
Πρέπει να διαβάσετε τουλάχιστο ένα εγχειρίδιο, αυτό του φλοιού. Η καλύτερη επιλογή είναι το info bash, αφού το bash είναι το καλύτερο για αρχαρίους. Τυπώστε το εγχειρίδιο και διαβάστε το, όποτε έχετε λίγο καιρό.
Το Παράρτημα B έχει μερικές βασικές εντολές.
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
GNU FDL Modification Conditions
Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
State on the Title page the name of the publisher of the Modified Version, as the publisher.
Preserve all the copyright notices of the Document.
Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
Include an unaltered copy of this License.
Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Sample Invariant Sections list
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
Sample Invariant Sections list
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
Αυτό το μέρος περιέχει μια αλφαβητική ανασκόπηση των εντολών που συζητήθηκαν σε αυτό το κείμενο.
Φίλτρο για να βλέπουμε συμπιεσμένο κείμενο.