diff --git a/el_GR.ISO8859-7/books/handbook/basics/chapter.sgml b/el_GR.ISO8859-7/books/handbook/basics/chapter.sgml
index 53018172e5..29f0bbcab9 100644
--- a/el_GR.ISO8859-7/books/handbook/basics/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/basics/chapter.sgml
@@ -1,2896 +1,2898 @@
ChrisShumwayΑναθεωρημένο από τον Βασικές Έννοιες στο &unix;ΣύνοψηΤο ακόλουθο κεφάλαιο θα καλύψει τις βασικές εντολές και
λειτουργίες του λειτουργικού συστήματος &os;. Το μεγαλύτερο μέρος
αυτής της ύλης σχετίζεται με όλα τα Λ.Σ. που είναι βασισμένα
στο &unix;. Εάν η ύλη σας φαίνεται οικεία μπορείτε να διατρέξετε
γρήγορα αυτό το κεφάλαιο. Εάν - αντιθέτως - είστε νέος στο &os;
τότε οπωσδήποτε θα πρέπει να διαβάσετε προσεκτικά ολόκληρο το
κεφάλαιο.Μετά την ανάγνωση του κεφαλαίου, θα γνωρίζετε:Πως να χρησιμοποιείτε τις εικονικές κονσόλες του
&os;.Πως λειτουργούν οι άδειες αρχείων στο &unix; και
θα καταλάβετε την χρήση των file flags στο &os;.Την προεπιλεγμένη διάταξη του συστήματος αρχείων του
&os;.Την οργάνωση των δίσκων στο &os;.Τι είναι και πώς λειτουργεί η προσάρτηση (mount) και
αποπροσάρτηση (unmount) συστημάτων αρχείων.Τι είναι οι διεργασίες (processes), τα σήματα (signals) και
οι δαίμονες (daemons).Τι είναι το κέλυφος (shell) και πως να αλλάζετε το προεπιλεγμένο
περιβάλλον εργασίας.Πως να χρησιμοποιείτε βασικά προγράμματα επεξεργασίας κειμένου
(editors).Τι είναι οι συσκευές (devices) και τα αρχεία συσκευής (device
nodes).Ποια έκδοση εκτελέσιμων χρησιμοποιείται στο &os;.Πως να διαβάζετε τις σελίδες βοηθείας (manual pages) για
περισσότερες πληροφορίες.Εικονικές Κονσόλες και Τερματικά εικονικές κονσόλεςτερματικάΜπορείτε να χειριστείτε το &os; με διάφορους τρόπους. Ένας από
αυτούς, είναι πληκτρολογώντας εντολές κειμένου σε ένα τερματικό. Με
αυτό τον τρόπο έχετε στα χέρια σας ένα ευέλικτο και δυνατό λειτουργικό
σύστημα &unix;. Αυτή η ενότητα περιγράφει τι είναι τα
τερματικά και οι κονσόλες και πως μπορούν
να χρησιμοποιηθούν στο &os;.Η ΚονσόλακονσόλαΕάν δεν έχετε ρυθμίσει το &os; να ξεκινά αυτόματα κάποιο γραφικό
περιβάλλον εργασίας, τότε αμέσως μετά την εκκίνηση του συστήματος και
την ολοκλήρωση των σεναρίων εκκίνησης (startup scripts) θα εμφανιστεί
η προτροπή σύνδεσης (login prompt). Θα δείτε κάτι παρόμοιο στην οθόνη
σας:Additional ABI support:.
Local package initialization:.
Additional TCP options:.
Fri Sep 20 13:01:06 EEST 2002
FreeBSD/i386 (pc3.example.org) (ttyv0)
login:Το μήνυμα μπορεί να είναι λίγο διαφορετικό στο σύστημα σας, αλλά
δεν πρέπει να διαφέρει κατά πολύ. Θα εστιάσουμε την προσοχή μας στις
τελευταίες δύο γραμμές. Η προτελευταία γραμμή αναφέρει:FreeBSD/i386 (pc3.example.org) (ttyv0)Αυτή η γραμμή περιέχει μερικές πληροφορίες για το σύστημα που
μόλις εκκινήσατε. Έχετε μπροστά σας μια κονσόλα
FreeBSD, που τρέχει με επεξεργαστή αρχιτεκτονικής x86
της Intel ή άλλον συμβατό
Αυτό ακριβώς σημαίνει το i386. Ακόμη και
αν δεν χρησιμοποιείτε επεξεργαστή Intel 386 CPU στο &os; σύστημα
σας, θα εμφανίζεται το i386. Αυτή είναι η
αρχιτεκτονική, κατασκευής του επεξεργαστή και όχι
το μοντέλο του επεξεργαστή..
Το όνομα αυτής της μηχανής (όλες οι μηχανές &unix; έχουν κάποιο
όνομα) είναι pc3.example.org, και έχετε ανοικτό
μπροστά σας το τερματικό ttyv0 —
κονσόλα του συστήματος.Ολοκληρώνοντας, η τελευταία γραμμή είναι πάντα:login:Σε αυτό το μέρος θα πρέπει να πληκτρολογήσετε το όνομα
χρήστη (username) για να συνδεθείτε στο &os;. Στην επόμενη
ενότητα θα περιγράψουμε ακριβώς αυτήν την διαδικασία.Εισαγωγή Χρήστη στο Σύστημα &os;Το &os; είναι ένα σύστημα πολυχρηστικό (multiuser) και
πολυεπεξεργαστικό (multiprocessing). Αυτός είναι ο ακαδημαϊκός
ορισμός που δίνεται συνήθως σε ένα σύστημα που μπορεί να
χρησιμοποιείται από πολλούς διαφορετικούς ανθρώπους, ενώ ταυτόχρονα
τρέχουν διαφορετικά προγράμματα στην ίδια μηχανή.Κάθε σύστημα multiuser χρειάζεται κάποιους τρόπους ώστε να
ξεχωρίζει κάθε χρήστη από τους υπολοίπους. Στο &os;
(όπως και σε όλα τα Λ.Σ. που βασίζονται στο &unix;), αυτό
επιτυγχάνεται απαιτώντας κάθε χρήστης να είναι συνδεδεμένος
(log in) πριν να μπορεί να τρέξει προγράμματα. Κάθε χρήστης
έχει ξεχωριστό όνομα (το όνομα χρήστη ή username) και
μία προσωπική δικλείδα ασφαλείας, (τον κωδικό πρόσβασης ή
password). Αυτά θα ζητηθούν από το &os; σε κάθε χρήστη πριν
να του επιτραπεί να τρέξει οποιαδήποτε εφαρμογή.startup scriptsΑμέσως μετά την ολοκλήρωση των διεργασιών εκκίνησης του &os; και
των σεναρίων εκκίνησης (startup scripts)
Τα σενάρια εκκίνησης (startup scripts) είναι προγράμματα που
τρέχουν αυτόματα κατά την εκκίνηση του &os;. Η κύρια λειτουργία
τους είναι να βοηθούν στην σωστή λειτουργία όλων των συστατικών
του συστήματος, και να ξεκινούν όλες τις υπηρεσίες που έχετε
ρυθμίσει να τρέχουν στο παρασκήνιο.,
θα εμφανιστεί το σύμβολο της προτροπής (prompt) και θα σας ζητηθεί ένα
έγκυρο όνομα χρήστη:login:Για παράδειγμα, ας υποθέσουμε πως το όνομα χρήστη σας είναι
john. Πληκτρολογήστε john
στην προτροπή και πατήστε Enter. Θα ακολουθήσει μια
νέα προτροπή για να δώσετε τον
κωδικό πρόσβασης (password):login: john
Password:Πληκτρολογήστε τώρα τον κωδικό πρόσβασης του
john, και πατήστε Enter. Ο
κωδικός πρόσβασης δεν είναι ορατός! Δεν
χρειάζεται να ανησυχείτε για αυτό. Είναι επαρκές να πούμε πως αυτό
συμβαίνει για λόγους ασφαλείας.Αν έχετε πληκτρολογήσει σωστά τον κωδικό πρόσβασης, τότε έχετε
συνδεθεί στο &os; και είστε έτοιμοι να δοκιμάσετε όλες τις διαθέσιμες
εντολές &unix;.Πρέπει να δείτε το MOTD ή αλλιώς το ημερήσιο
μήνυμα και στη συνέχεια την προτροπή εντολής (ένα
χαρακτήρα #, $, ή
%). Αυτό σημαίνει πως έχετε συνδεθεί επιτυχώς στο
&os;.Πολλαπλές ΚονσόλεςΗ εκτέλεση εντολών &unix; σε μία μόνο κονσόλα μπορεί να είναι
ικανοποιητική, αλλά το &os; μπορεί να τρέχει ταυτόχρονα πολλά
προγράμματα. Η ύπαρξη μίας μόνο κονσόλας για πληκτρολόγηση εντολών
θα ήταν πραγματικά ελλιπής για ένα Λ.Σ. όπως το &os; που μπορεί να
τρέχει ταυτόχρονα δεκάδες προγράμματα. Εδώ είναι που χρειάζονται οι
εικονικές κονσόλες.Το &os; μπορεί να ρυθμιστεί κατάλληλα ώστε να παρουσιάζεται με
διάφορες εικονικές κονσόλες. Η εναλλαγή από μία εικονική κονσόλα
σε οποιαδήποτε άλλη μπορεί να γίνει πατώντας μερικά πλήκτρα στο
πληκτρολόγιο. Η κάθε κονσόλα έχει το δικό της κανάλι εξόδου, και
καθώς εναλλάσσετε εικονικές κονσόλες το &os; αποθηκεύει και επαναφέρει
προσεκτικά το αντίστοιχο πληκτρολόγιο και οθόνη για κάθε κονσόλα σαν
να υπήρχε πραγματική εναλλαγή.Συνδυασμοί ειδικών πλήκτρων χρησιμοποιούνται από το &os; για την
εναλλαγή κονσολών
Για όλες τις τεχνικές λεπτομέρειες και ακριβείς περιγραφές
των οδηγών (drivers) που χρησιμοποιούνται στο &os; για κονσόλες
και πληκτρολόγια μπορείτε να βρείτε στις σελίδες &man.syscons.4;,
&man.atkbd.4;, &man.vidcontrol.1; και &man.kbdcontrol.1;
των σελίδων βοήθειας (manual pages). Δεν θα συνεχίσουμε
περαιτέρω, αλλά ο ενδιαφερόμενος αναγνώστης μπορεί να
συμβουλεύεται πάντα τις σελίδες βοηθείας για περισσότερο
λεπτομερή και ολοκληρωμένη επεξήγηση των λειτουργιών..
Μπορείτε να χρησιμοποιήσετε
AltF1,
AltF2,έως
AltF8 για να
μεταβείτε στις διάφορες εικονικές κονσόλες του &os;.Καθώς εναλλάσσεστε από τη μία κονσόλα στην άλλη, το &os;
αποθηκεύει και επαναφέρει προσεκτικά την αντίστοιχη οθόνη. Το
αποτέλεσμα είναι ένα οπτικό τρικ σαν να είχαμε
πολλαπλές εικονικές οθόνες και πληκτρολόγια που θα
μπορούσαμε να χρησιμοποιήσουμε για να τρέχουμε εντολές στο &os;.
Τα προγράμματα που τρέχετε από μια κονσόλα δεν σταματούν να
λειτουργούν όταν η κονσόλα δεν είναι ορατή. Συνεχίζουν να τρέχουν κι
όταν βρίσκεστε σε διαφορετική κονσόλα.Το Αρχείο /etc/ttysΗ εξ' ορισμού ρύθμιση του &os; θα ξεκινήσει με οκτώ εικονικές
κονσόλες. Δεν πρόκειται για μια πολύπλοκη ρύθμιση και μπορείτε εύκολα
να την αλλάξετε ώστε να φορτώνονται περισσότερες ή λιγότερες εικονικές
κονσόλες κατά την εκκίνηση. Το πλήθος και η παραμετροποίηση των
εικονικών κονσολών ρυθμίζεται στο αρχείο
/etc/ttys.Μπορείτε να χρησιμοποιήσετε το αρχείο
/etc/ttys για να ρυθμίσετε τις εικονικές κονσόλες
στο &os;. Κάθε γραμμή του αρχείου που δεν είναι σχόλιο (οι γραμμές
που δεν ξεκινούν με τον χαρακτήρα #) περιέχουν
ρυθμίσεις για ένα τερματικό ή για μια εικονική κονσόλα. Η
προκαθορισμένη έκδοση του αρχείου, η οποία περιέχεται στην διανομή
&os;, περιέχει εννέα εικονικές κονσόλες, εκ των οποίων οι οκτώ είναι
ενεργοποιημένες. Είναι στις γραμμές που ξεκινούν με
ttyv:# name getty type status comments
#
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureΓια μια λεπτομερή περιγραφή κάθε στήλης του αρχείου και όλων των
ρυθμίσεων που μπορούν να εφαρμοστούν για τις εικονικές κονσόλες
συμβουλευτείτε την σελίδα βοηθείας &man.ttys.5;.Κονσόλα σε Κατάσταση Ενός ΧρήστηΜπορείτε να βρείτε μια λεπτομερή περιγραφή για το τι είναι
κατάσταση ενός χρήστη στην ενότητα
. Αξίζει να αναφέρουμε πως υπάρχει
ενεργή μόνο μία κονσόλα όταν τρέχετε το &os; σε κατάσταση ενός
χρήστη. Δεν υπάρχουν διαθέσιμες εικονικές κονσόλες. Στο
αρχείο /etc/ttys μπορείτε να βρείτε τις
ρυθμίσεις σε κατάσταση ενός χρήστη. Αναζητήστε την γραμμή που ξεκινά
με console:# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off secureΌπως αναφέρουν τα σχόλια πάνω από το console,
μπορείτε να επεξεργαστείτε αυτήν τη γραμμή και να αντικαταστήσετε
την λέξη secure με insecure.
Σε αυτή την περίπτωση κατά την εκκίνηση του &os; σε κατάσταση ενός
χρήστη, θα σας ζητηθεί ο κωδικός πρόσβασης του υπερχρήστη
root.Προσέχετε όταν κάνετε την μετατροπή σε
insecure. Εάν τύχει να ξεχάσετε τον
κωδικό πρόσβασης του root, η πρόσβαση σε
κατάσταση λειτουργίας ενός χρήστη μπορεί να γίνει δύσβατη. Υπάρχει
ακόμη τρόπος να κάνετε εκκίνηση, αλλά ίσως να είναι δύσκολο για
κάποιον που δεν γνωρίζει πολλά για τις διεργασίες και τα
προγράμματα εκκίνησης του &os;.Αλλάζοντας την Ανάλυση (video mode) της ΚονσόλαςΗ προεπιλεγμένη απεικόνιση της κονσόλας στο &os; μπορεί να
ρυθμιστεί σε ανάλυση 1024x768, 1280x1024, ή σε οποιοδήποτε άλλο
μέγεθος υποστηρίζεται από την κάρτα γραφικών και την οθόνη σας. Για
να χρησιμοποιήσετε διαφορετική ανάλυση, θα πρέπει πρώτα από όλα να
επαναμεταγλωττίσετε τον πυρήνα σας, και να συμπεριλάβετε τις παρακάτω
δύο επιλογές:options VESA
options SC_PIXEL_MODEΜετά τη μεταγλώττιση του πυρήνα με τις παραπάνω δύο επιλογές,
μπορείτε να βρείτε ποιες αναλύσεις υποστηρίζονται από το υλικό σας,
χρησιμοποιώντας το βοηθητικό πρόγραμμα &man.vidcontrol.1;. Για να
δείτε μια λίστα από τις υποστηριζόμενες αναλύσεις, δώστε την ακόλουθη
εντολή:&prompt.root; vidcontrol -i modeΗ έξοδος της εντολής αυτής, είναι μια λίστα από αναλύσεις οθόνης
που υποστηρίζονται από το υλικό σας. Μπορείτε έπειτα να επιλέξετε
μια νέα ανάλυση, δίνοντας την ως όρισμα στην &man.vidcontrol.1; σε
μια κονσόλα που έχετε συνδεθεί ως root:&prompt.root; vidcontrol MODE_279Αν η νέα ανάλυση γίνει δεκτή, μπορείτε να την ορίσετε ως
προεπιλεγμένη για κάθε εκκίνηση, με την κατάλληλη ρύθμιση στο αρχείο
/etc/rc.conf:allscreens_flags="MODE_279"Άδειες (Permissions)UNIXΤο &os; είναι απόγονος του BSD &unix;, και για αυτό το λόγο
βασίζεται σε μερικές έννοιες κλειδιά του &unix;. Η πρώτη και πιο
σημαντική είναι πως το &os; είναι ένα πολυχρηστικό (multiuser)
λειτουργικό σύστημα. Το σύστημα μπορεί να εξυπηρετήσει πολλούς χρήστες
που εργάζονται ταυτόχρονα και σε εντελώς ανεξάρτητες εφαρμογές.
Το σύστημα είναι υπεύθυνο για τον σωστό διαμοιρασμό και τις ανάγκες
διαχείρισης συσκευών hardware, περιφερειακών, μνήμης, και την σωστή
κατανομή των πόρων της CPU για κάθε χρήστη.Επειδή το σύστημα έχει την ικανότητα να εξυπηρετεί πολλούς χρήστες,
σε οτιδήποτε διαχειρίζεται, υπάρχει μια ομάδα αδειών που ορίζει ποιος
μπορεί να διαβάσει, να γράψει και να εκτελέσει αυτούς τους πόρους. Οι
άδειες αποθηκεύονται σε οκτάδες διαχωρισμένες σε τρία μέρη, ένα για τον
ιδιοκτήτη του αρχείου, ένα για την ομάδα στην οποία ανήκει το αρχείο,
και ένα μέρος για όλους τους άλλους. Στη συνέχεια παρουσιάζεται πίνακας
με τις αντιστοιχίες μεταξύ των ομάδων αδειών και των αριθμητικών τους
τιμών.άδειεςάδειες αρχείωνΤιμήΆδειαΕμφάνιση σε περιεχόμενα καταλόγων0Ανάγνωση:όχι, Εγγραφή:όχι, Εκτέλεση:όχι---1Ανάγνωση:όχι, Εγγραφή:όχι, Εκτέλεση:ναι--x2Ανάγνωση:όχι, Εγγραφή:ναι, Εκτέλεση:όχι-w-3Ανάγνωση:όχι, Εγγραφή:ναι, Εκτέλεση:ναι-wx4Ανάγνωση:ναι, Εγγραφή:όχι, Εκτέλεση:όχιr--5Ανάγνωση:ναι, Εγγραφή:όχι, Εκτέλεση:ναιr-x6Ανάγνωση:ναι, Εγγραφή:ναι, Εκτέλεση:όχιrw-7Ανάγνωση:ναι, Εγγραφή:ναι, Εκτέλεση:ναιrwxlsdirectoriesΜπορείτε να χρησιμοποιήσετε την εντολή &man.ls.1; με πρόθεμα
στην γραμμή εντολών για να δείτε τα περιεχόμενα
καταλόγου και παρατηρήστε πως περιέχεται μια στήλη με τις άδειες των
αρχείων για τον ιδιοκτήτη, την ομάδα, και για όλους τους άλλους. Για
παράδειγμα, αν δώσουμε ls -l σε ένα τυχαίο
κατάλογο:&prompt.user; ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt
...Η πρώτη στήλη που παίρνουμε με την εντολή ls -l
διαχωρίζεται ως εξής:-rw-r--r--Ο πρώτος χαρακτήρας (από τα αριστερά) μας ενημερώνει αν πρόκειται
για ένα κανονικό αρχείο, κατάλογο, ειδική συσκευή χαρακτήρων,
υποδοχέα (socket), ή οποιαδήποτε άλλo αρχείο ψευδο-συσκευής. Στην
περίπτωση μας, το - υποδηλώνει ένα κανονικό αρχείο.
Οι ακόλουθοι τρεις χαρακτήρες, στο παράδειγμα μας,
rw-, ορίζουν τις άδειες για τον ιδιοκτήτη του
αρχείου. Οι τρεις επόμενοι χαρακτήρες, r--, ορίζουν
τις άδειες για την ομάδα στην οποία ανήκει το αρχείο. Οι τελευταίοι
τρεις χαρακτήρες, r--, ορίζουν τις άδειες για τον
υπόλοιπο κόσμο. Η παύλα σημαίνει πως η άδεια είναι απενεργοποιημένη.
Στην περίπτωση του αρχείου μας, οι άδειες έχουν οριστεί ώστε ο
ιδιοκτήτης να μπορεί να διαβάζει και να γράφει στο αρχείο, η ομάδα να
μπορεί να διαβάσει το αρχείο, και ο υπόλοιπος κόσμος να μπορεί μόνο να
διαβάσει το αρχείο. Σύμφωνα με τον παραπάνω πίνακα, οι άδειες για αυτό
το αρχείο είναι 644, όπου καθένα από τα τρία ψηφία
παρουσιάζει το αντίστοιχο μέρος αδειών του αρχείου.Μέχρι εδώ είναι όλα καλά, αλλά όμως πως το σύστημα ελέγχει τις
άδειες συσκευών; Το &os; μεταχειρίζεται τις περισσότερες συσκευές σαν
ένα αρχείο το οποίο τα προγράμματα μπορούν να ανοίξουν, να διαβάσουν
και να γράψουν σε αυτό σαν να ήταν ένα οποιοδήποτε αρχείο. Αυτά τα
ειδικά αρχεία συσκευών αποθηκεύονται στον κατάλογο
/dev.Το σύστημα μεταχειρίζεται επίσης και τους καταλόγους ως αρχεία.
Έχουν άδειες ανάγνωσης, εγγραφής και εκτέλεσης. Το bit που ορίζει την
εκτέλεση στους καταλόγους έχει ελαφρώς διαφορετικό νόημα από ότι στα
αρχεία. Όταν ένας κατάλογος έχει οριστεί εκτελέσιμος, σημαίνει πως
είναι προσπελάσιμος, δηλαδή είναι επιτρεπτό να περάσουμε σε ένα
υποκατάλογο του (να κάνουμε cd). Αυτό επίσης σημαίνει
πως επιτρέπεται η πρόσβαση σε όλα τα γνωστά (αυτό έχει να κάνει με τις
άδειες των ίδιων των αρχείων) αρχεία.Ειδικότερα, για να εμφανίζονται τα περιεχόμενα καταλόγου πρέπει να
έχει τεθεί άδεια ανάγνωσης (read) στον κατάλογο, ενώ για να διαγραφεί
ένα αρχείο του οποίου γνωρίζετε το όνομα είναι αναγκαίο να έχουν δοθεί
οι άδειες εγγραφής (write) και εκτέλεσης (execute)
στον κατάλογο που περιέχει το αρχείο.Υπάρχουν κι άλλα bit αδειών, αλλά χρησιμοποιούνται κυρίως σε
ειδικές περιπτώσεις όπως σε setuid binaries και sticky directories. Αν
θέλετε περισσότερες πληροφορίες για τις άδειες αρχείων και πως να τις
ορίζετε, συμβουλευτείτε οπωσδήποτε την σελίδα manual
&man.chmod.1;.TomRhodesΣυνεισφορά του Συμβολικές Άδειες>άδειεςσυμβολικέςΟι συμβολικές άδειες, μερικές φορές αναφέρονται και ως συμβολικές
εκφράσεις, χρησιμοποιούν χαρακτήρες στην θέση των οκτώ τιμών για να
θέτουν άδειες σε αρχεία ή καταλόγους. Οι συμβολικές εκφράσεις
χρησιμοποιούν την σύνταξη (ποιος) (ενέργεια) (άδειες), όπου είναι
διαθέσιμες οι ακόλουθες τιμές:ΕπιλογήΓράμμαΣημαίνει(ποιος)uUser (Χρήστης)(ποιος)gGroup owner (Ομάδα που ανήκει)(ποιος)oOther (Υπόλοιποι χρήστες)(ποιος)aAll (όλοι, world)(ενέργεια)+Πρόσθεση αδειών(ενέργεια)-Αφαίρεση αδειών(ενέργεια)=Άμεσος ορισμός αδειών(άδειες)rRead (Ανάγνωση)(άδειες)wWrite (Εγγραφή)(άδειες)xExecute (Εκτέλεση)(άδειες)tSticky bit(άδειες)sSet UID ή GIDΟι τιμές εισάγονται με την εντολή &man.chmod.1; όπως πριν, αλλά
με γράμματα. Για παράδειγμα, θα μπορούσατε να χρησιμοποιήσετε την
ακόλουθη εντολή για να απαγορεύσετε σε άλλους χρήστες την πρόσβαση στο
FILE:&prompt.user; chmod go= FILEΜπορούν να γίνουν πάνω από μία αλλαγές στις άδειες ενός αρχείου
ταυτόχρονα διαχωρίζοντας τις αλλαγές με κόμμα. Για παράδειγμα, η
ακόλουθη εντολή θα αφαιρέσει στην ομάδα και στον
υπόλοιπο κόσμο την άδεια εγγραφής, και στη συνέχεια θα
προσθέσει άδεια εκτέλεσης σε όλους.&prompt.user; chmod go-w,a+x FILETomRhodesΣυνεισφορά του &os; File FlagsΠέρα από τις άδειες αρχείων που συζητήθηκαν πριν από λίγο, το &os;
υποστηρίζει την χρήση των file flags. Αυτά τα flags
προσθέτουν ένα επιπρόσθετο επίπεδο ασφαλείας και ελέγχου σε αρχεία,
αλλά όχι σε καταλόγους.Αυτά τα flags προσθέτουν ένα πρόσθετο επίπεδο ελέγχου σε αρχεία,
διασφαλίζοντας μας πως σε κάποιες περιπτώσεις ακόμη κι ο
root να μην μπορεί να διαγράψει ή να μετατρέψει
αρχεία.Η μετατροπή των file flags γίνεται με την &man.chflags.1;,
χρησιμοποιώντας μια απλή διασύνδεση. Για παράδειγμα, για να
ενεργοποιήσουμε το flag του συστήματος μη διαγραφής αρχείου στο
αρχείο file1, δίνουμε την ακόλουθη εντολή:&prompt.root; chflags sunlink file1Και για να απενεργοποιήσουμε το flag του συστήματος μη διαγραφής
αρχείου, απλά δίνουμε την προηγούμενη εντολή με no
μπροστά από το . Παρατηρήστε:&prompt.root; chflags nosunlink file1Για να δείτε τα flags ενός αρχείου, χρησιμοποιήστε την εντολή
&man.ls.1; με το πρόθεμα :&prompt.root; ls -lo file1Στην έξοδο θα πρέπει να δείτε κάτι παρόμοιο με το ακόλουθο:-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1Μερικά flags μπορούν να προστεθούν ή να αφαιρεθούν μόνο από τον
χρήστη root. Στις υπόλοιπες περιπτώσεις, ο
ιδιοκτήτης του αρχείου μπορεί να θέσει αυτά τα flags. Προτείνουμε
στους διαχειριστές να διαβάσουν τις σελίδες βοηθείας
&man.chflags.1; και &man.chflags.2; για περισσότερες
πληροφορίες.TomRhodesΣυνεισφορά από τον Οι Άδειες setuid, setgid και stickyΕκτός από τις άδειες που έχουμε συζητήσει ήδη, υπάρχουν τρεις
ακόμα τις οποίες κάθε διαχειριστής πρέπει να γνωρίζει. Πρόκειται για
τις άδειες setuid, setgid και
sticky.Οι παραπάνω είναι σημαντικές για κάποιες λειτουργίες στο &unix;,
καθώς παρέχουν λειτουργίες που δεν είναι φυσιολογικά διαθέσιμες στους
κοινούς χρήστες. Για να τις κατανοήσετε, θα πρέπει πρώτα να
καταλάβετε την διαφορά μεταξύ του πραγματικού αναγνωριστικού χρήστη
(real user ID) και του ενεργού αναγνωριστικού χρήστη (effective user
ID).Το πραγματικό ID του χρήστη, είναι το UID
στο οποίο ανήκει, ή με το οποίο ξεκινά, μια διεργασία. Το ενεργό
UID, είναι το αναγνωριστικό χρήστη το οποίο
εκτελεί την διεργασία. Για παράδειγμα, το βοηθητικό πρόγραμμα
&man.passwd.1; εκτελείται με το πραγματικό ID του χρήστη που αλλάζει
τον κωδικό του. Ωστόσο, για να μπορεί να διαχειριστεί την βάση
δεδομένων με τους κωδικούς του συστήματος, το πρόγραμμα αυτό
χρησιμοποιεί ως ενεργό ID αυτό του χρήστη root.
Με αυτό τον τρόπο, επιτρέπεται στους απλούς χρήστες να αλλάζουν τους
κωδικούς τους χωρίς να παίρνουν το μήνυμα λάθους
Permission Denied (απαγόρευση
πρόσβασης).Η επιλογή nosuid στην εντολή &man.mount.8;
θα προκαλέσει αποτυχία εκτέλεσης αυτών των εντολών, και μάλιστα
χωρίς κάποιο μήνυμα λάθους. Με λίγα λόγια, η εκτέλεση τους θα
αποτύχει, και ο χρήστης δεν θα ενημερωθεί για αυτό. Η επιλογή
αυτή δεν είναι επίσης απόλυτα ασφαλής, καθώς (σύμφωνα με τη σελίδα
manual &man.mount.8;) υπάρχει τρόπος να παρακαμφθεί μέσω κάποιου
ενδιάμεσου nosuid προγράμματος (wrapper).Μπορείτε να καθορίσετε την άδεια setuid, τοποθετώντας τον αριθμό
τέσσερα (4) μπροστά από το γενικό σετ των αδειών, όπως φαίνεται
στο ακόλουθο παράδειγμα:&prompt.root; chmod 4755 suidexample.shΟι άδειες στο αρχείο
suidexample.sh θα
φαίνονται τώρα όπως παρακάτω:-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.shΠαρατηρήστε στο παράδειγμα, ότι το s είναι
πλέον μέλος του συνόλου αδειών που έχουν καθοριστεί για τον ιδιοκτήτη
του αρχείου, και έχει αντικαταστήσει την αντίστοιχη άδεια εκτέλεσης.
Με τον τρόπο αυτό λειτουργούν προγράμματα που χρειάζονται αυξημένα
δικαιώματα, όπως για παράδειγμα η εντολή
passwd.Για να παρατηρήσετε αυτή τη λειτουργία την ώρα που συμβαίνει,
ανοίξτε δύο τερματικά. Στο πρώτο, ξεκινήστε την εντολή
passwd ως κανονικός χρήστης. Καθώς η εντολή
εκτελείται και περιμένει για την εισαγωγή του νέου κωδικού, ελέγξτε
τον πίνακα διεργασιών και αναζητήστε τις πληροφορίες του χρήστη που
εκτελεί την εντολή passwd.Στο τερματικό Α:Changing local password for trhodes
Old Password:Στο τερματικό Β:&prompt.root; ps aux | grep passwdtrhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd
root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwdΌπως είπαμε παραπάνω, η εντολή passwd
εκτελείται από ένα κανονικό χρήστη, αλλά χρησιμοποιεί το ενεργό
UID του χρήστη root.Η άδεια setgid εκτελεί την ίδια λειτουργία όπως
και η setuid, αλλά επιδρά στις άδειες της ομάδας
(group). Όταν εκτελέσετε μια τέτοια εφαρμογή ή βοηθητικό πρόγραμμα,
θα χρησιμοποιεί τις άδειες της ομάδας στην οποία ανήκει το αρχείο,
και όχι του χρήστη που την ξεκίνησε.Για να θέσετε την άδεια setgid σε ένα αρχείο,
θα πρέπει να τοποθετήσετε τον αριθμό δύο (2) μπροστά από το σύνολο
αδειών, στην εντολή chmod. Δείτε το παρακάτω
παράδειγμα:
- &prompt.root; chmod 2755 suidexample.sh
+ &prompt.root; chmod 2755 sgidexample.shΌπως και πριν, θα παρατηρήσετε τη νέα άδεια s,
αλλά αυτή τη φορά στο σετ των αδειών της ομάδας:
- -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 suidexample.sh
+ -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.shΣτα παραδείγματα μας, αν και το αρχείο είναι ένα εκτελέσιμο
script για κέλυφος, δεν θα εκτελεστεί με διαφορετικό ενεργό ID
(EUID). Αυτό συμβαίνει γιατί σε αυτά τα scripts
δεν επιτρέπεται η πρόσβαση στις κλήσεις &man.setuid.2; του
συστήματος.Οι δύο πρώτες ειδικές άδειες που αναφέραμε,
οι setuid και setgid,
ενδεχομένως να μειώσουν την ασφάλεια του συστήματος, αφού επιτρέπουν
σε προγράμματα να εκτελούνται με αυξημένα δικαιώματα. Υπάρχει ωστόσο
μια τρίτη ειδική άδεια, η οποία μπορεί να αυξήσει την ασφάλεια του
συστήματος: το sticky bit.Όταν θέσετε το sticky bit σε ένα κατάλογο,
επιτρέπεται η διαγραφή ενός αρχείου μόνο από τον ιδιοκτήτη του.
Η άδεια αυτή είναι χρήσιμη για να αποφεύγεται η διαγραφή ενός αρχείου
από κοινόχρηστους καταλόγους, όπως για παράδειγμα ο
/tmp, από κάποιο χρήστη που
δεν είναι ο ιδιοκτήτης του. Για να θέσετε αυτή την άδεια, τοποθετήστε
τον αριθμό ένα (1) στην αρχή του σετ αδειών:&prompt.root; chmod 1777 /tmpΜπορείτε τώρα να δείτε το αποτέλεσμα, χρησιμοποιώντας την εντολή
ls:&prompt.root; ls -al / | grep tmpdrwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmpΗ άδεια sticky bit φαίνεται ως
t στο τέλος του συνόλου των αδειών.Δομή Καταλόγουιεραρχία δομήςΗ ιεραρχική δομή του &os; είναι ένα βασικό στοιχείο που πρέπει να
γνωρίζετε αν θέλετε να έχετε μια ολοκληρωμένη εικόνα του συστήματος. Η
πιο σημαντική έννοια είναι αυτή του ριζικού (root) καταλόγου,
/. Αυτός ο κατάλογος προσαρτάται (mount) πρώτος κατά
την εκκίνηση και περιέχει το βασικό σύστημα ικανό να ετοιμάσει το Λ.Σ.
για λειτουργία multi-user. Ο root κατάλογος περιέχει επίσης σημεία
προσάρτησης για άλλα συστήματα αρχείων που προσαρτώνται κατά την
μετάβαση σε κατάσταση λειτουργίας multi-user.Σημείο προσάρτησης (mount point) είναι ένας κατάλογος στον οποίο
μπορούν να αναπτυχθούν πρόσθετα συστήματα αρχείων σε ένα γονικό σύστημα
αρχείων (συνήθως στο root σύστημα αρχείων). Αυτό περιγράφεται
αναλυτικά στην ενότητα . Στα
στάνταρντ σημεία προσάρτησης περιλαμβάνονται:
οι /usr, /var,
/tmp, /mnt, και
/cdrom. Αυτοί οι
κατάλογοι συνήθως είναι καταχωρημένοι στο αρχείο
/etc/fstab. Το /etc/fstab
είναι ένας πίνακας αντιστοιχίας διαφόρων συστημάτων αρχείων και σημείων
προσάρτησης για αναφορά στο σύστημα. Τα περισσότερα συστήματα
που αναφέρονται στο /etc/fstab προσαρτώνται
αυτόματα κατά την εκκίνηση του συστήματος από το script &man.rc.8; εκτός
αν περιέχεται η επιλογή . Λεπτομέρειες μπορείτε
να βρείτε στο .Μια πλήρη περιγραφή της ιεραρχίας του συστήματος αρχείων είναι
διαθέσιμη στο &man.hier.7;. Ακολουθεί μια σύντομη ανασκόπηση με τους
πιο συνήθεις καταλόγους.ΚατάλογοςΠεριγραφή/ Ριζικός (root) κατάλογος του συστήματος αρχείων./bin/Χρήσιμα εργαλεία για περιβάλλον ενός ή πολλαπλών
χρηστών./boot/Προγράμματα και αρχεία ρυθμίσεων που χρησιμοποιούνται
κατά την εκκίνηση του λειτουργικού συστήματος./boot/defaults/Προκαθορισμένα αρχεία ρυθμίσεων εκκίνησης, δείτε
&man.loader.conf.5;./dev/Αρχεία συσκευών, δείτε &man.intro.4;./etc/Αρχεία ρυθμίσεων συστήματος και σενάρια εκκίνησης.
/etc/defaults/Προκαθορισμένα αρχεία ρυθμίσεων συστήματος, δείτε την
&man.rc.8;./etc/mail/Αρχεία ρυθμίσεων για πράκτορες μεταφοράς ηλεκτρ.
ταχυδρομείου (ΜΤΑ) όπως το &man.sendmail.8;./etc/namedb/Αρχεία ρυθμίσεων named, δείτε
&man.named.8;./etc/periodic/Σενάρια λειτουργιών που τρέχουν σε ημερήσια, εβδομαδιαία,
και μηνιαία βάση, &man.cron.8;; δείτε
&man.periodic.8;./etc/ppp/Αρχεία ρυθμίσεων ppp, δείτε τις
&man.ppp.8;./mnt/Κενός κατάλογος που συνήθως χρησιμοποιείται από τους
διαχειριστές συστημάτων ως προσωρινό σημείο
προσάρτησης./proc/Σύστημα αρχείων διεργασιών, δείτε τις &man.procfs.5;,
&man.mount.procfs.8;./rescue/Προγράμματα με στατική σύνδεση (static link) για ασφαλή
επαναφορά συστήματος, δείτε την &man.rescue.8;./root/Προσωπικός κατάλογος του χρήστη
root./sbin/Προγράμματα συστήματος και χρήσιμα εργαλεία διαχείρισης
για περιβάλλον ενός ή πολλαπλών χρηστών./tmp/Προσωρινά αρχεία. Τα περιεχόμενα του
/tmp συνήθως δεν
διατηρούνται μετά από επανεκκίνηση του συστήματος. Στο
/tmp συνήθως
προσαρτάται ένα σύστημα αρχείων μνήμης. Αυτό μπορεί να
επιτευχθεί αυτομάτως χρησιμοποιώντας τις σχετικές μεταβλητές
tmpmfs του &man.rc.conf.5; (ή με μια καταχώρηση στον
/etc/fstab, δείτε
την &man.mdmfs.8;)./usr/Περιέχονται σχεδόν όλα τα βοηθητικά προγράμματα και οι
εφαρμογές χρηστών./usr/bin/Κοινόχρηστα βοηθητικά προγράμματα, εργαλεία
προγραμματισμού, και εφαρμογές./usr/include/Στάνταρ αρχεία συμπερίληψης C (include files)./usr/lib/Αρχεία βιβλιοθηκών./usr/libdata/Διάφορα αρχεία δεδομένων βοηθητικών προγραμμάτων./usr/libexec/Δαίμονες συστήματος & βοηθητικά προγράμματα
συστήματος (εκτελούνται από άλλα προγράμματα)./usr/local/Τοπικά εκτελέσιμα, βιβλιοθήκες, κτλ. Επίσης είναι και ο
προκαθορισμένος προορισμός για προγράμματα που εγκαθίστανται
από τα ports του &os;. Μέσα στον
/usr/local, χρησιμοποιείται γενικά η
διάταξη του /usr που περιγράφεται στο
&man.hier.7;. Εξαιρούνται οι κατάλογοι σελίδων βοηθείας
man, που βρίσκεται άμεσα κάτω από τον
/usr/local και όχι κάτω από τον
/usr/local/share, καθώς και η τεκμηρίωση
κάθε port που βρίσκεται στον
share/doc/port./usr/obj/Δέντρο προορισμού που εξαρτάται από την αρχιτεκτονική
του μηχανήματος και παράγεται μεταγλωττίζοντας το δέντρο
/usr/src./usr/portsΗ Συλλογή Ports του &os; (προαιρετικό)./usr/sbin/Δαίμονες συστήματος & βοηθητικά προγράμματα
συστήματος (εκτελούνται από χρήστες)./usr/share/Αρχεία ανεξάρτητα από την Αρχιτεκτονική του
μηχανήματος./usr/src/Αρχεία BSD και/ή τοπικά αρχεία πηγαίου κώδικα./usr/X11R6/Εκτελέσιμα, βιβλιοθήκες, κτλ. για την διανομή X11R6
(προαιρετικό)./var/Αρχεία αναφοράς (log) διαφόρων χρήσεων, temporary,
transient, και spool. Μερικές φορές προσαρτάται στον
/var ένα σύστημα
αρχείων μνήμης. Αυτό μπορεί να επιτευχθεί αυτόματα
χρησιμοποιώντας τις σχετικές μεταβλητές varmfs του
&man.rc.conf.5; (ή με μία καταχώρηση στο
/etc/fstab, δείτε τις
&man.mdmfs.8;)./var/log/Διάφορα αρχεία συμβάντων του συστήματος./var/mail/Αρχεία γραμματοκιβωτίου (mailbox) χρηστών./var/spool/Διάφοροι κατάλογοι παροχέτευσης (spool) εκτυπωτών και
ηλεκτρονικής αλληλογραφίας του συστήματος./var/tmp/Προσωρινά (temporary) αρχεία. Τα αρχεία αυτά συνήθως
διατηρούνται κατά την διάρκεια επανεκκίνησης του συστήματος,
εκτός αν ο /var είναι
ένα σύστημα αρχείων μνήμης./var/ypΑπεικονίσεις (maps) NIS.Οργάνωση ΔίσκουΗ μικρότερη μονάδα οργάνωσης που χρησιμοποιεί το &os; για να βρει
αρχεία είναι το όνομα αρχείου. Τα ονόματα αρχείων είναι ευαίσθητα στα
κεφαλαία- μικρά, το οποίο σημαίνει ότι το
readme.txt και το README.TXT
είναι δύο διαφορετικά αρχεία. Το &os; δεν χρησιμοποιεί την επέκταση
.txt αρχείου για να προσδιορίσει αν ένα αρχείο
είναι πρόγραμμα, ή έγγραφο, ή άλλος τύπος δεδομένων.Τα αρχεία αποθηκεύονται σε καταλόγους. Ένας κατάλογος μπορεί να
μην περιέχει αρχεία, ή μπορεί να περιέχει εκατοντάδες αρχεία. Ένας
κατάλογος μπορεί επίσης να περιέχει άλλους καταλόγους, επιτρέποντας
σας να κατασκευάσετε μια ιεραρχική δομή καταλόγων όπου κατάλογοι
εσωκλείουν άλλους καταλόγους. Αυτό μας επιτρέπει να οργανώσουμε τα
δεδομένα μας πολύ ευκολότερα.Η αναφορά σε αρχεία και καταλόγους γίνεται δίνοντας το όνομα
αρχείου ή το όνομα καταλόγου, ακολουθεί μία αριστερόστροφη κάθετος,
/ και έπειτα οποιοδήποτε άλλο κατάλληλο όνομα
καταλόγου. Εάν έχετε τον κατάλογο foo, ο οποίος
περιέχει τον κατάλογο bar, ο οποίος περιέχει το
αρχείο readme.txt, τότε το ολοκληρωμένο όνομα,
διαδρομή (path) στο αρχείο είναι
foo/bar/readme.txt.Κατάλογοι και αρχεία αποθηκεύονται σε ένα σύστημα αρχείων. Κάθε
σύστημα αρχείων περιέχει ένα κατάλογο στο ανώτερο επίπεδο, που
ονομάζεται root (ριζικός) κατάλογος για το
συγκεκριμένο σύστημα αρχείων. Ο root κατάλογος μπορεί να περιέχει
άλλους καταλόγους.Αυτό πιθανώς είναι παρόμοιο με οποιοδήποτε άλλο λειτουργικό
σύστημα έχετε χρησιμοποιήσει. Ωστόσο υπάρχουν μερικές διαφορές. Για
παράδειγμα, το &ms-dos; χρησιμοποιεί \ για να
διαχωρίζει ονόματα καταλόγων και αρχείων, ενώ το &macos; χρησιμοποιεί
:.Το &os; δεν χρησιμοποιεί γράμματα οδηγών ή ονόματα οδηγών στη
διαδρομή. Επομένως δεν θα πρέπει να γράφετε
c:/foo/bar/readme.txt στο &os;.Αντιθέτως, ένα σύστημα αρχείων καθορίζεται ως root σύστημα
αρχείων. Ο ριζικός κατάλογος του root συστήματος αρχείων
αναφέρεται ως /. Κάθε άλλο σύστημα αρχείου
προσαρτάται κάτω από το root σύστημα αρχείων
Δεν έχει σημασία πόσους δίσκους έχετε στο &os; σύστημα σας,
κάθε κατάλογος εμφανίζεται να είναι μέρος του ίδιου δίσκου.Ας υποθέσουμε πως έχετε τρία συστήματα αρχείων, τα ονομάζουμε
A, B και C.
Κάθε σύστημα αρχείου έχει έναν ριζικό κατάλογο, ο οποίος περιέχει δύο
άλλους καταλόγους, που τους ονομάζουμε A1,
A2 (και παρομοίως B1,
B2 και C1,
C2).Ας θεωρήσουμε ότι το A είναι το root σύστημα
αρχείων. Αν χρησιμοποιήσετε την εντολή ls για να
δείτε τα περιεχόμενα αυτού του καταλόγου, θα δείτε δύο υποκαταλόγους,
A1 και A2. Το δέντρο του
καταλόγου μοιάζει σαν αυτό: /
|
+--- A1
|
`--- A2Κάθε σύστημα αρχείων πρέπει να προσαρτάται σε ένα κατάλογο
διαφορετικού συστήματος αρχείων. Ας υποθέσουμε πως θέλετε να
προσαρτήσετε το σύστημα αρχείου B στον
κατάλογο A1. Ο ριζικός κατάλογος του
B αντικαθιστά τον A1, και οι
κατάλογοι του B εμφανίζονται αναλόγως: /
|
+--- A1
| |
| +--- B1
| |
| `--- B2
|
`--- A2Όλα τα αρχεία που περιέχονται στους καταλόγους
B1 και B2 τα βρίσκουμε με τη
διαδρομή /A1/B1 ή με /A1/B2
αντίστοιχα. Όλα τα αρχεία που βρίσκονταν στο /A1
είναι προσωρινά κρυμμένα. Θα επανεμφανιστούν όταν ο
B θα αποπροσαρτηθεί από τον
A.Αν ο B είχε προσαρτηθεί στον
A2 τότε το διάγραμμα θα έδειχνε κάπως έτσι: /
|
+--- A1
|
`--- A2
|
+--- B1
|
`--- B2και οι διαδρομές θα ήταν /A2/B1 και
/A2/B2 αντίστοιχα.Τα συστήματα αρχείων μπορούν να προσαρτώνται στην κορυφή άλλων
συστημάτων. Συνεχίζοντας το τελευταίο παράδειγμα, το σύστημα αρχείου
C θα μπορούσε να προσαρτηθεί στην κορυφή του
καταλόγου B1 στο σύστημα αρχείου
B, οδηγώντας σε αυτήν την κατανομή: /
|
+--- A1
|
`--- A2
|
+--- B1
| |
| +--- C1
| |
| `--- C2
|
`--- B2Ή ακόμη το C θα μπορούσε να προσαρτηθεί άμεσα
στο σύστημα αρχείου A, κάτω από τον κατάλογο
A1: /
|
+--- A1
| |
| +--- C1
| |
| `--- C2
|
`--- A2
|
+--- B1
|
`--- B2Αν γνωρίζετε το σύστημα &ms-dos;, είναι παρόμοιο, αλλά όχι
ακριβώς το ίδιο, με την εντολή join.Αυτό συνήθως δεν είναι κάτι που πρέπει να γνωρίζετε άμεσα. Τυπικά,
εσείς δημιουργείτε συστήματα αρχείων όταν εγκαθιστάτε το &os; και
αποφασίζετε το σημείο προσάρτησης αυτών, και έπειτα δεν χρειάζεται
να τα αλλάξετε εκτός αν πρόκειται να προσθέσετε ένα καινούργιο
δίσκο.Είναι απόλυτα δυνατόν να έχετε ένα μεγάλο root σύστημα αρχείων,
και να μην χρειάζεται να δημιουργήσετε άλλα. Με αυτή την τακτική
υπάρχουν μερικά μειονεκτήματα και ένα πλεονέκτημα.Προτερήματα Πολλαπλών Συστημάτων ΑρχείωνΔιαφορετικά συστήματα αρχείων μπορούν να έχουν διαφορετικές
επιλογές προσάρτησης. Για παράδειγμα, με
προσεκτικό σχεδιασμό, το root σύστημα αρχείων μπορεί να
προσαρτηθεί μόνο για ανάγνωση, ώστε να είναι αδύνατη η διαγραφή
ή η μετατροπή κάποιου σημαντικού αρχείου. Διαχωρίζοντας συστήματα
αρχείων με δυνατότητα εγγραφής από τον χρήστη, όπως ο
/home, επιτρέπει επίσης την προσάρτηση τους
ως nosuid. Αυτή η επιλογή περιορίζει την
χρήση εκτελέσιμων που είναι αποθηκευμένα στο σύστημα αρχείων, με
ενεργοποιημένα τα bits
suid/guid,
βελτιώνοντας πιθανώς την ασφάλεια.Ανάλογα με το πως θα χρησιμοποιηθεί το σύστημα αρχείων, το
&os; ρυθμίζει με τον καλύτερο τρόπο την διάταξη των αρχείων στο
σύστημα. Επομένως ένα σύστημα που περιέχει πολλά μικρά αρχεία που
μεταβάλλονται συχνά, θα έχει διαφορετική διάταξη από ένα άλλο που
περιέχει λιγότερα σε αριθμό, αλλά πιο ογκώδη αρχεία. Εάν έχετε ένα
μοναδικό σύστημα αρχείων, τότε χάνετε αυτή τη δυνατότητα.Τα συστήματα αρχείων του &os; είναι πολύ ισχυρά. Ωστόσο,
μια αδυναμία σε κάποιο σημαντικό σημείο μπορεί ακόμη να οδηγήσει
σε κατάρρευση της δομής του συστήματος αρχείων. Ο διαχωρισμός των
δεδομένων σας σε πολλαπλά συστήματα αρχείων κάνει πιο εύκολη μια
πιθανή επαναφορά από backup, όταν αυτό είναι αναγκαίο.Προτερήματα ενός Μονοκόμματου Συστήματος ΑρχείουΤα συστήματα αρχείων είναι συγκεκριμένου σταθερού μεγέθους.
Αν δημιουργήσετε ένα σύστημα αρχείων κατά την εγκατάσταση του &os;
και του δώσετε ένα ορισμένο μέγεθος, μπορεί αργότερα να
ανακαλύψετε πως χρειάζεστε να φτιάξετε μια μεγαλύτερη κατάτμηση.
Αυτό δεν είναι εύκολα πραγματοποιήσιμο δίχως backup, αναδημιουργία
του συστήματος αρχείου με το νέο μέγεθος, και επαναφορά των
αποθηκευμένων δεδομένων.Στο &os; περιέχεται η εντολή &man.growfs.8;, η οποία
επιτρέπει να αυξήσουμε το μέγεθος ενός συστήματος αρχείων κατά
τη λειτουργία του, αφαιρώντας αυτόν τον περιορισμό.Τα συστήματα αρχείων περιέχονται σε κατατμήσεις (partitions).
Αυτό δεν έχει την ίδια έννοια με την κοινή χρήση του όρου κατάτμηση
(όπως για παράδειγμα, η κατάτμηση του &ms-dos;), λόγω της κληρονομιάς
που φέρει το &os; από το &unix;. Κάθε κατάτμηση αναγνωρίζεται από
ένα λατινικό χαρακτήρα ξεκινώντας από a έως το
h. Κάθε κατάτμηση μπορεί να περιέχει μόνο ένα
σύστημα αρχείων, το οποίο σημαίνει πως η αναφορά στα συστήματα αρχείων
γίνεται είτε από το τυπικό σημείο προσάρτησης στην ιεραρχία του
συστήματος αρχείων, είτε από το λατινικό χαρακτήρα της
κατάτμησης.Επίσης το &os; χρησιμοποιεί μέρος από το δίσκο για
χώρο swap . Ο χώρος Swap παρέχει στο &os;
εικονική μνήμη (virtual memory). Αυτό
επιτρέπει στον υπολογιστή σας να συμπεριφέρεται σαν να είχε πολύ
περισσότερη μνήμη από όσο πραγματικά έχει. Όταν το &os; δεν έχει
διαθέσιμη μνήμη μεταφέρει μερικά από τα δεδομένα που δεν
χρησιμοποιούνται, την προκειμένη στιγμή, στον χώρο swap, και όταν τα
χρειαστεί τα επαναφέρει (ενώ μεταφέρει κάποια άλλα δεδομένα στον χώρο
swap).Υπάρχουν κάποιες συμβάσεις σχετικά με τις κατατμήσειςΚατάτμησηΣύμβασηaΣυνήθως περιλαμβάνει το root σύστημα αρχείωνbΣυνήθως περιλαμβάνει τον χώρο swapcΣυνήθως ιδίου μεγέθους με την περιλαμβανόμενη φέτα
(slice). Αυτό επιτρέπει σε βοηθητικά προγράμματα που πρέπει
να δουλέψουν σε ολόκληρο το κομμάτι (για παράδειγμα, ένας
ανιχνευτής κατεστραμμένων μπλοκ) να λειτουργούν στην
c κατάτμηση. Κανονικά δεν θα πρέπει να
δημιουργείτε σύστημα αρχείων σε αυτή την κατάτμηση.dΗ κατάτμηση d είχε στο παρελθόν μια
ειδική αντιστοιχία, κάτι που δεν ισχύει πλέον σήμερα,
επομένως η d μπορεί να χρησιμοποιείται
σαν μια κανονική κατάτμηση.Κάθε κατάτμηση που περιέχει ένα σύστημα αρχείων αποθηκεύεται στο
&os; σε μια τοποθεσία που ονομάζεται
φέτα (slice). Η φέτα είναι ένας όρος του &os;
για αυτό που κοινώς αποκαλείται κατάτμηση, και αυτό επίσης οφείλεται
στην καταγωγή του &os; από το &unix;. Οι φέτες αριθμούνται αρχίζοντας
από το 1 έως το 4.φέτεςκατατμήσειςdangerously dedicatedΟ αριθμός της φέτας ακολουθεί το όνομα συσκευής μετά το πρόθεμα
s ξεκινώντας από το 1. Επομένως,
da0s1 είναι η πρώτη φέτα του
πρώτου οδηγού SCSI. Μπορούν να υπάρχουν μέχρι τέσσερις φέτες σε κάθε
δίσκο, αλλά μπορείτε να δημιουργήσετε λογικές φέτες μέσα σε
κατάλληλου τύπου φυσικές φέτες. Σε αυτές τις εκτεταμένες φέτες
η αρίθμηση ξεκινάει από το 5, επομένως
ad0s5
είναι η πρώτη εκτεταμένη φέτα στον πρώτο δίσκο IDE. Αυτές οι
συσκευές χρησιμοποιούνται από συστήματα αρχείων που πρέπει να
καταλαμβάνουν μια ολόκληρη φέτα.Οι φέτες, οι επικίνδυνα αφοσιωμένοι (dangerously dedicated)
φυσικοί οδηγοί καθώς και άλλοι οδηγοί, περιέχουν
κατατμήσεις, οι οποίες παρουσιάζονται με
λατινικούς χαρακτήρες από το a έως το
h. Αυτός ο χαρακτήρας αναφέρεται στο όνομα
συσκευής, επομένως da0a είναι η
a κατάτμηση στον πρώτο οδηγό da, ο οποίος είναι επικίνδυνα
αφοσιωμένος.
Η ad1s3e είναι η πέμπτη κατάτμηση
στην τρίτη φέτα του δεύτερου οδηγού δίσκου IDE.Ολοκληρώνοντας, κάθε δίσκος στο σύστημα είναι μονόδρομα ορισμένος.
Κάθε όνομα δίσκου ξεκινά με ένα κωδικό που υποδεικνύει τον τύπο του
δίσκου, και ένα νούμερο που υποδηλώνει ποιος δίσκος είναι. Αντίθετα
με τις φέτες, οι δίσκοι αριθμούνται ξεκινώντας από το 0. Οι πιο
συνήθεις κωδικοί που θα συναντήσετε αναφέρονται στην
.Όταν γίνεται αναφορά σε μια κατάτμηση, το &os; ζητά να δηλωθεί
επιπλέον η ονομασία της φέτας και του δίσκου που περιέχει την
κατάτμηση, ενώ στην περίπτωση που αναφέρεστε σε μια φέτα θα πρέπει
να δηλώνετε το όνομα του δίσκου. Επομένως, όταν αναφέρεστε σε μια
κατάτμηση χρειάζεται να δηλώνετε το όνομα του δίσκου,
s, τον αριθμό της φέτας, και τον χαρακτήρα της
κατάτμησης. Παραδείγματα μπορείτε να βρείτε στην
.Η παρουσιάζει ένα
εννοιολογικό μοντέλο για τη δομή του δίσκου που θα σας βοηθήσει να
καταλάβετε καλύτερα κάποια πράγματα.Για να εγκαταστήσετε το &os; πρέπει πρώτα να ρυθμίσετε τις φέτες
του δίσκου, να δημιουργήσετε τις κατατμήσεις μέσα στις φέτες που θα
χρησιμοποιήσετε για το &os;, έπειτα να δημιουργήσετε ένα σύστημα
αρχείων (ή χώρο swap) σε κάθε κατάτμηση, και τέλος να αποφασίσετε σε
ποιο σημείο θα προσαρτηθεί το σύστημα αρχείων.
Υποδείγματα Ονομάτων Δίσκου, Φέτας, ΚατάτμησηςΟνομασίαΣημαίνειad0s1aΗ πρώτη κατάτμηση (a) στην πρώτη
φέτα (s1) του πρώτου δίσκου IDE
(ad0).da1s2eΗ πέμπτη κατάτμηση (e) στην δεύτερη
φέτα (s2) του δεύτερου δίσκου SCSI
(da1).Εννοιολογικό Μοντέλο ενός ΔίσκουΤο διάγραμμα παρουσιάζει μια εικόνα του πρώτου δίσκου IDE που
είναι προσαρτημένος στο σύστημα. Ας υποθέσουμε πως ο δίσκος έχει
μέγεθος 4 GB, και περιέχει δύο φέτες των 2 GB
(κατατμήσεις &ms-dos;). Η πρώτη φέτα περιέχει ένα δίσκο &ms-dos;,
C:, και η δεύτερη φέτα μία εγκατάσταση
&os;. Σε αυτό το παράδειγμα, η εγκατάσταση &os; έχει τρεις
κατατμήσεις δεδομένων και μία κατάτμηση swap.Καθεμία από τις τρεις κατατμήσεις θα περιέχει ένα σύστημα
αρχείων. Η κατάτμηση a θα χρησιμοποιηθεί για το
root σύστημα αρχείων, η e για τη δομή κατάλογου
/var, και η f για τη δομή
καταλόγου /usr..-----------------. --.
| | |
| DOS / Windows | |
: : > Πρώτη φέτα, ad0s1
: : |
| | |
:=================: ==: --.
| | | -a Κατάτμηση a, προσαρτημένη ως / |
| | > αναφέρεται ως ad0s2a |
| | | |
:-----------------: ==: |
| | | -swap Κατάτμηση b, για χρήση swap |
| | > αναφέρεται ως ad0s2b |
| | | |
:-----------------: ==: | -c Κατάτμηση, απουσία
| | | -e Κατάτμηση e, για χρήση /var > συστήματος αρχείων,
| | > αναφέρεται ως ad0s2e | μη προσαρτημένη,
| | | | ad0s2c
:-----------------: ==: |
| | | |
: : | -f Κατάτμηση f, για χρήση /usr |
: : > αναφέρεται ως ad0s2f |
: : | |
| | | |
| | --' |
`-----------------' --'Προσάρτηση και Αποπροσάρτηση Συστημάτων ΑρχείωνΈνα σύστημα αρχείων αναπαριστάται καλύτερα σε μορφή δέντρου,
με τις ρίζες του στο /. Οι κατάλογοι
/dev, /usr, και άλλοι είναι
κλαδιά του καταλόγου root, και μπορεί να έχουν με τη σειρά τους, τα
δικά τους κλαδιά, όπως τον
/usr/local, και ούτω καθεξής.σύστημα αρχείων rootΥπάρχουν διάφοροι λόγοι για τους οποίους θα έπρεπε να τοποθετήσουμε
κάποιους από αυτούς τους καταλόγους σε διαφορετικά συστήματα αρχείων.
Ο κατάλογος /var περιέχει τους καταλόγους
log/, spool/, και διάφορους
άλλους τύπους προσωρινών αρχείων, και για το λόγο αυτό μπορεί να
γεμίσει. Δεν θα ήταν καλή ιδέα να γεμίσει το root σύστημα αρχείων,
επομένως ο διαχωρισμός του /var από τον
/ είναι συχνά επιθυμητός.Ένας άλλος συνηθισμένος λόγος να έχουμε διάφορους καταλόγους
σε διαφορετικά συστήματα αρχείων είναι όταν πρόκειται να φιλοξενηθούν
σε διαφορετικούς φυσικούς δίσκους, ή είναι ξεχωριστοί εικονικοί δίσκοι,
όπως συμβαίνει με το
Δικτυακό Σύστημα Αρχείων (Network File System), και τους οδηγούς CDROM.Το Αρχείο fstabσυστήματα αρχείωνπροσαρτημένα με το fstabΚατά τη διεργασία εκκίνησης, τα
συστήματα αρχείων που αναφέρονται στο /etc/fstab
προσαρτώνται αυτόματα (εκτός αν αναφέρονται με την επιλογή
).Το αρχείο /etc/fstab περιέχει μια σειρά από
γραμμές με διάταξη όπως η ακόλουθη:device/mount-pointfstypeoptionsdumpfreqpassnodeviceΌνομα συσκευής (η οποία θα πρέπει να υπάρχει), όπως
εξηγείται στην .mount-pointΚατάλογος (θα πρέπει να υπάρχει) στον οποίο
προσαρτάται το σύστημα αρχείων.fstypeΟ τύπος του συστήματος αρχείων που θα δοθεί στην
&man.mount.8;. Το προκαθορισμένο σύστημα αρχείων του &os;
είναι το ufs.optionsΤο για συστήματα αρχείων
ανάγνωσης- εγγραφής (read- write), ή για
συστήματα αρχείων μόνο ανάγνωσης (read-only), συμπληρωμένο με
όποια άλλη επιλογή μπορεί να χρειάζεστε. Μία συνήθης επιλογή
είναι η για συστήματα αρχείων που δεν
προσαρτώνται αυτόματα κατά τις διεργασίες εκκίνησης του
συστήματος. Άλλες επιλογές αναφέρονται στην σελίδα βοήθειας
&man.mount.8;.dumpfreqΑυτό το πεδίο χρησιμοποιείται από το &man.dump.8; για να
ορίσει ποια συστήματα αρχείων χρειάζονται dumping. Αν το πεδίο
απουσιάζει, τότε η προκαθορισμένη τιμή του είναι μηδέν.passnoΑυτό ορίζει την σειρά με την οποία θα ελέγχονται
τα συστήματα αρχείων. Συστήματα αρχείων που δεν επιθυμούμε να
ελεγχθούν θα πρέπει να έχουν στο πεδίο passno
τιμή μηδέν. Το root σύστημα αρχείων (το οποίο πρέπει να
ελεγχθεί πριν από όλα τα άλλα) θα έχει στο πεδίο
passno την τιμή ένα και όλα τα άλλα
συστήματα αρχείων θα έχουν στο πεδίο passno
τιμές μεγαλύτερες από ένα. Αν περισσότερα από ένα συστήματα
αρχείων έχουν την ίδια τιμή passno τότε το
&man.fsck.8; θα επιχειρήσει να ελέγξει παράλληλα τα συστήματα
αρχείων, αν αυτό είναι εφικτό.Συμβουλευτείτε την σελίδα βοηθείας &man.fstab.5; για περισσότερες
πληροφορίες για την μορφή του αρχείου /etc/fstab
και για τις επιλογές που μπορεί να περιέχει.Η Εντολή mountσυστήματα αρχείωνπροσάρτησηΗ εντολή &man.mount.8; είναι αυτό ακριβώς που χρειάζεστε για την
προσάρτηση συστημάτων αρχείων.Η βασική μορφή της είναι:&prompt.root; mount devicemountpointΥπάρχει πληθώρα επιλογών, όπως αναφέρεται στην σελίδα βοηθείας
&man.mount.8;, αλλά οι πιο συνήθεις είναι:Επιλογές εντολής mountΠροσάρτηση όλων των συστημάτων αρχείων που αναφέρονται
στο /etc/fstab, εκτός αυτών που φέρουν
την επιλογή noauto, εξαιρούνται μέσω της επιλογής
, ή αυτών που ήδη έχουν προσαρτηθεί.Κάνει τα πάντα εκτός από την πραγματική προσάρτηση του
συστήματος. Αυτή η επιλογή είναι χρήσιμη σε συνεργασία με το
πρόθεμα για να προσδιοριστεί τι ακριβώς
προσπαθεί να κάνει η &man.mount.8; την συγκεκριμένη
στιγμή.Αναγκάζει την προσάρτηση ενός μη-καθαρού συστήματος αρχείων
(επικίνδυνο), ή εξαναγκάζει την ανάκληση πρόσβασης εγγραφής όταν
υποβιβάζεται η προσάρτηση ενός συστήματος αρχείων
ανάγνωσης-εγγραφής (read-write) σε μόνο-ανάγνωσης.Προσαρτά το σύστημα αρχείων σε κατάσταση μόνο-ανάγνωσης.
Είναι ακριβώς το ίδιο με τη χρήση του προθέματος
( για εκδόσεις &os;
παλαιότερες της 5.2) με την επιλογή .fstypeΠροσαρτά το υπάρχον σύστημα αρχείων, χρησιμοποιώντας τον
τύπο συστήματος αρχείων που δίνεται, ή προσαρτά μόνο
συστήματα αρχείων του συγκεκριμένου τύπου, εάν δοθεί μαζί με την
επιλογή .Το ufs είναι ο προεπιλεγμένος τύπος
συστήματος αρχείων.Ανανεώνει τις επιλογές προσάρτησης στο σύστημα
αρχείων.Συμπεριλαμβάνει αναλυτική αναφορά.Προσαρτά το σύστημα αρχείων για ανάγνωση-εγγραφή
(read-write).Η επιλογή δέχεται μία σειρά από επιλογές
χωρισμένες με κόμμα, περιλαμβάνοντας τις ακόλουθες:noexecΔεν επιτρέπεται η λειτουργία εκτελέσιμων σε αυτό το
σύστημα αρχείων. Αυτό είναι επίσης μια επιλογή
ασφαλείας.nosuidΔεν λαμβάνονται υπ' όψιν setuid ή setgid flags στο σύστημα
αρχείων.Η Εντολή umountσυστήματα αρχείωναποπροσάρτησηΗ εντολή &man.umount.8; παίρνει, ως παράμετρο, ένα εκ των σημείων
προσάρτησης, το όνομα μιας συσκευής, ή τις επιλογές
ή .Όλοι οι τύποι δέχονται την για να
εξαναγκάσουν σε αποπροσάρτηση, και την για
αναλυτική αναφορά. Σας προειδοποιούμε πως η επιλογή
γενικά δεν είναι καλή ιδέα. Η εξ' αναγκασμού
αποπροσάρτηση μπορεί να οδηγήσει σε κατάρρευση τον υπολογιστή ή να
καταστρέψει δεδομένα στο σύστημα αρχείων.Οι και χρησιμοποιούνται
για να αποπροσαρτήσουν όλα τα προσαρτημένα συστήματα αρχείων, σύμφωνα
και με τις επιλογές που δίνονται από το , αν
υπάρχει. Το , ωστόσο, δεν θα επιχειρήσει να
αποπροσαρτήσει το root σύστημα αρχείων.ΔιεργασίεςTo &os; είναι ένα λειτουργικό σύστημα multi-tasking. Αυτό σημαίνει
πως κάθε στιγμή μπορούν να τρέχουν παραπάνω από ένα προγράμματα. Κάθε
πρόγραμμα που τρέχει οποιαδήποτε στιγμή ονομάζεται
διεργασία (process). Κάθε εντολή που τρέχετε
ξεκινάει τουλάχιστον μία νέα διεργασία, και υπάρχουν κάποιες διεργασίες
του συστήματος που τρέχουν συνέχεια για να κρατούν το σύστημα
σε λειτουργία.Κάθε διεργασία χαρακτηρίζεται από ένα μοναδικό αριθμό που
ονομάζεται ID διεργασίας ή
PID, και όπως ακριβώς συμβαίνει με τα αρχεία,
κάθε διεργασία έχει έναν ιδιοκτήτη και ένα γκρουπ. Οι πληροφορίες του
ιδιοκτήτη και του γκρουπ χρειάζονται για να προσδιορίζεται ποια αρχεία
και συσκευές μπορεί να ανοίξει η συγκεκριμένη διεργασία,
χρησιμοποιώντας τις άδειες αρχείων που συζητήσαμε νωρίτερα. Οι
περισσότερες διεργασίες έχουν επίσης μία γονική διεργασία. Η γονική
διεργασία είναι εκείνη η διεργασία που τις ξεκίνησε. Για παράδειγμα,
εάν πληκτρολογείτε εντολές στο κέλυφος, τότε το κέλυφος είναι μία
διεργασία, και κάθε εντολή που τρέχετε είναι επίσης μία διεργασία.
Επομένως κάθε διεργασία που τρέχετε με αυτόν τον τρόπο θα έχει γονική
διεργασία το κέλυφος σας. Η μόνη εξαίρεση είναι μία διεργασία που
ονομάζεται &man.init.8;. Η init είναι πάντα η πρώτη
διεργασία, και επομένως το PID της είναι πάντα 1. Η
init ξεκινά αυτόματα από τον πυρήνα κατά την
εκκίνηση του &os;.Δύο ιδιαίτερα χρήσιμες εντολές για να παρατηρείτε τις διεργασίες
στο σύστημα, είναι οι &man.ps.1; και &man.top.1;. Η εντολή
ps χρησιμοποιείται για την προβολή μιας στατικής
λίστας των τρέχοντων διεργασιών, και μπορεί να εμφανίζει το PID τους,
πόση μνήμη χρησιμοποιούν, την εντολή με την οποία ξεκίνησαν, και άλλες
πληροφορίες. Η εντολή top εμφανίζει όλες τις
τρέχουσες διεργασίες, και ανανεώνει την οθόνη σας ανά λίγα
δευτερόλεπτα, επομένως μπορείτε να παρατηρείτε τι ακριβώς κάνει ο
υπολογιστή σας τη δεδομένη στιγμή.Η ps, από προεπιλογή, εμφανίζει μόνο τις
εντολές που τρέχουν και ανήκουν σε εσάς. Για παράδειγμα:&prompt.user; ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfishΌπως μπορείτε να δείτε σε αυτό το παράδειγμα, η έξοδος από την ps
προβάλλεται σε στήλες. PID είναι το PID της
διεργασίας όπως αναφέραμε νωρίτερα. Τα PID διανέμονται από 1, έως
99999, και όταν υπερβούν το 99999 ξεκινούν από την αρχή (ένα PID
δεν μπορεί να αποδοθεί ξανά αν είναι ήδη σε χρήση). Η στήλη
TT δείχνει το τερματικό (tty) του προγράμματος που
εκτελείται, και μπορεί να αγνοηθεί αυτή τη στιγμή δίχως πρόβλημα. Η
STAT υποδεικνύει την κατάσταση του προγράμματος, και
πάλι μπορεί να αγνοηθεί. Η TIME είναι η χρονική
διάρκεια που το πρόγραμμα απασχολεί την CPU, αυτό συνήθως δεν είναι ο
χρόνος εκτέλεσης αφού τα περισσότερα προγράμματα καθυστερούν με άλλες
εργασίες πριν απασχολήσουν την CPU. Η τελευταία στήλη, η
COMMAND είναι η γραμμή εντολής που δόθηκε για να
τρέξει το πρόγραμμα.Η &man.ps.1; υποστηρίζει διάφορες επιλογές για να αλλάξει την γκάμα
των πληροφοριών που εμφανίζονται. Μία από τις πιο χρήσιμες επιλογές
είναι η auxww. Η εμφανίζει
πληροφορίες για όλες τις τρέχουσες διεργασίες, όχι μόνο τις δικές σας.
Η εμφανίζει το όνομα χρήστη του ιδιοκτήτη της
διεργασίας, όπως και τη χρήσης της μνήμης. Η
εμφανίζει πληροφορίες σχετικά με τις διεργασίες των δαιμόνων και η
αναγκάζει την &man.ps.1; να εμφανίσει ολόκληρη την
εντολή γραμμής για κάθε διεργασία, αφού συνήθως εμφανίζεται κομμένη
λόγω του μήκους της που δεν χωρά να εμφανιστεί στην οθόνη.Η έξοδος της &man.top.1; είναι παρόμοια. Ένα δείγμα εργασίας της
μοιάζει σαν αυτή:&prompt.user; top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...Η έξοδος είναι χωρισμένη σε δύο τομείς. Η κεφαλίδα (οι πέντε
πρώτες γραμμές) εμφανίζουν το PID της τελευταίας διεργασίας που έτρεξε,
την μέση τιμή φορτίου (είναι μια μέτρηση που δείχνει πόσο απασχολημένο
είναι το σύστημα), ο χρόνος λειτουργίας (uptime) του συστήματος
(από την τελευταία επανεκκίνηση) και την τρέχουσα ώρα. Τα άλλα στοιχεία
στην κεφαλίδα σχετίζονται με το νούμερο των διεργασιών που τρέχουν
(47 σε αυτή τη περίπτωση), πόση μνήμη και χώρο swap κατέχουν και πόσο
χρόνο ξοδεύει το σύστημα σε διάφορες καταστάσεις λειτουργίας της
CPU.Πιο κάτω ακολουθεί μια σειρά από στήλες, που περιέχουν παρόμοιες
πληροφορίες με την έξοδο της ps. Όπως και νωρίτερα μπορείτε να δείτε το
PID, το όνομα χρήστη, το ποσοστό χρήσης της CPU, και την εντολή με την
οποία ξεκίνησε η διεργασία. Η &man.top.1; από προεπιλογή, εμφανίζει
επίσης το ποσοστό μνήμης που χρησιμοποιείται από τη διεργασία. Αυτή
χωρίζεται σε δύο στήλες. Η μία είναι για το συνολικό μέγεθος μνήμης που
χρειάστηκε η εφαρμογή, ενώ η άλλη για το μέγεθος της μνήμης που
καταναλώνει την παρούσα στιγμή. Σε αυτό το παράδειγμα μπορείτε να δείτε
ότι ο &netscape; χρειάστηκε σχεδόν 30 MB
RAM, αλλά την παρούσα στιγμή χρησιμοποιεί μόνο 9 MB.Η &man.top.1; αυτόματα ανανεώνει το περιεχόμενο της κάθε δύο
δευτερόλεπτα. Αυτό μπορεί να ρυθμιστεί με την επιλογή
.Δαίμονες, Σήματα, και Τερματισμός ΔιεργασιώνΌταν χρησιμοποιείτε ένα κειμενογράφο, είναι εύκολο να τον ελέγχετε,
να φορτώνετε αρχεία, και οτιδήποτε άλλο. Αυτό συμβαίνει διότι ο
κειμενογράφος παρέχει αυτές τις δυνατότητες, και επίσης επειδή
είναι προσαρτημένος σε ένα τερματικό. Μερικά
προγράμματα δεν είναι σχεδιασμένα να δουλεύουν με συνεχείς χειρισμούς
από τον χρήστη, και επομένως αποσυνδέονται από το τερματικό με την
πρώτη ευκαιρία. Για παράδειγμα, ένας εξυπηρετητής web ξοδεύει όλο του
το χρόνο στο να απαντά σε αιτήματα web, επομένως δεν χρειάζεται καμιά
εισαγωγή δεδομένων από τον χρήστη. Άλλο παραπλήσιο παράδειγμα
εφαρμογής, είναι τα προγράμματα μεταφοράς μηνυμάτων ηλεκτρονικής
αλληλογραφίας από μια τοποθεσία σε μιαν άλλη.Ονομάζουμε αυτά τα προγράμματα
δαίμονες (daemons). Οι δαίμονες ήταν χαρακτήρες
της Ελληνικής μυθολογίας (ούτε καλοί - ούτε κακοί), ήταν απλά μικρά
συνοδευτικά πνεύματα που έκαναν χρήσιμα πράγματα για την ανθρωπότητα,
όπως ακριβώς και οι διακομιστές web και εξυπηρετητές ηλεκτρονικής
αλληλογραφίας σήμερα κάνουν χρήσιμα πράγματα. Αυτός είναι και ο λόγος
για τον οποίο η μασκότ του BSD είναι εδώ και πολύ καιρό ο
χαρούμενος δαίμονας με πάνινα σπορ παπούτσια και την τρίαινα.Η ονομασία των προγραμμάτων που τρέχουν σαν δαίμονες συμβατικά
τελειώνει με d. Το BIND
είναι το Berkeley Internet Name Domain, αλλά το πραγματικό πρόγραμμα
που τρέχει ονομάζεται named, το πρόγραμμα του
εξυπηρετητή web Apache λέγεται
httpd, ο δαίμονας ελέγχου των εκτυπωτών
γραμμής είναι ο lpd και ούτω καθεξής. Αυτή είναι
απλά μια σύμβαση, όχι απόλυτος κανόνας, για παράδειγμα, ο κύριος
δαίμονας ηλεκτρονικής αλληλογραφίας για την εφαρμογή
Sendmail
ονομάζεται sendmail, και όχι
maild, όπως θα ήταν αναμενόμενο.Μερικές φορές θα χρειαστεί να επικοινωνείτε με τη διεργασία ενός
δαίμονα. Ένας τρόπος για να γίνει αυτό είναι στέλνοντας (όπως και σε
κάθε εκτελέσιμη διεργασία) σήματα (signals).
Υπάρχουν διάφορα σήματα που μπορείτε να στείλετε — μερικά από
αυτά έχουν μια συγκεκριμένη σημασία, ενώ άλλα ερμηνεύονται
μέσα από την εφαρμογή, και επομένως για να ξέρουμε πως ερμηνεύονται τα
σήματα θα πρέπει να διαβάσουμε την τεκμηρίωση της εφαρμογής. Μπορείτε
να στείλετε σήμα σε μια διεργασία μόνο αν σας ανήκει. Αν στείλετε σήμα
σε μια διεργασία που ανήκει σε κάποιον άλλο με &man.kill.1; ή
&man.kill.2;, δεν θα σας επιτραπεί. Η μοναδική εξαίρεση σε αυτό, είναι
ο χρήστης root, που μπορεί να στέλνει σήματα στις
διεργασίες οποιουδήποτε άλλου χρήστη του συστήματος.Το &os; στέλνει επίσης σήματα σε εφαρμογές σε μερικές περιπτώσεις.
Αν μία εφαρμογή είναι γραμμένη άσχημα, και προσπαθεί να προσπελάσει
μνήμη που δεν της ανήκει, το &os; στέλνει στη διεργασία το σήμα
Segmentation Violation
(SIGSEGV). Αν μια εφαρμογή χρησιμοποίησε το σύστημα
ειδοποίησης &man.alarm.3; για να ειδοποιηθεί μετά την πάροδο μιας
χρονικής περιόδου τότε το &os; θα στείλει το Alarm signal
(SIGALRM), και ούτω καθ'εξής.Δύο σήματα μπορούν να χρησιμοποιηθούν για να σταματήσουν μία
διαδικασία, το SIGTERM και το
SIGKILL. Το SIGTERM είναι ο
σωστός τρόπος για να σταματήσουμε μια διαδικασία. Η διεργασία
αντιλαμβάνεται το σήμα, εκτελεί το σταμάτημα
κλείνοντας όλα τα αρχεία αναφοράς (log files), που πιθανώς να είναι
ανοιχτά, και γενικώς τελειώνει οτιδήποτε κάνει την συγκεκριμένη
χρονική στιγμή πριν σταματήσει. Σε μερικές περιπτώσεις η διεργασία
μπορεί να αγνοήσει το SIGTERM εάν βρίσκεται στα
μισά κάποιας εργασίας που δεν μπορεί να διακοπεί.Το σήμα SIGKILL δεν μπορεί να αγνοηθεί από μία
διεργασία. Είναι σαν να λέει στη διεργασία,
Δεν με ενδιαφέρει τι κάνεις, σταμάτα τώρα αμέσως. Αν
στείλετε το σήμα SIGKILL σε μια διαδικασία τότε το
&os; θα σταματήσει την διαδικασία άμεσα
Αυτό δεν είναι απόλυτα αληθές — Υπάρχουν μερικά πράγματα
που δεν μπορούν να διακοπούν. Για παράδειγμα, εάν η διεργασία
προσπαθεί να διαβάσει ένα αρχείο από άλλον υπολογιστή στο δίκτυο
και ξαφνικά αυτός ο άλλος υπολογιστής διακόψει για κάποιο λόγο
(λόγω κλεισίματος του pc ή λόγω βλάβης στο δίκτυο), τότε η διεργασία
ονομάζεται μη διακόψιμη. Πιθανώς η διεργασία να
κάνει time out, συνήθως μετά από δύο λεπτά. Μόλις συμβεί αυτό, θα
τερματιστεί άμεσα..Άλλα σήματα που πιθανώς να θέλετε να χρησιμοποιήσετε είναι τα
SIGHUP, SIGUSR1, και
SIGUSR2. Αυτά είναι σήματα γενικής χρήσης, και
όταν αποστέλλονται κάνουν διαφορετικά πράγματα ανάλογα με την
εφαρμογή.Ας υποθέσουμε πως αλλάξατε το αρχείο ρύθμισης του εξυπηρετητή
διαδικτύου σας, και πως θα θέλατε να πείτε στον εξυπηρετητή να
ξαναδιαβάσει τις ρυθμίσεις. Θα μπορούσατε να σταματήσετε και να
επανεκκινήσετε το httpd, αλλά αυτό θα οδηγούσε σε
μια χρονική περίοδο όπου ο εξυπηρετητής θα έμενε εκτός λειτουργίας,
κάτι το οποίο μπορεί να είναι ανεπιθύμητο. Οι περισσότεροι δαίμονες
είναι σχεδιασμένοι να απαντούν σε σήματα SIGHUP για
την εκ νέου ανάγνωση του αρχείου ρύθμισης τους. Επομένως, αντί να
σταματήσουμε και να επανεκκινήσουμε το httpd θα
μπορούσαμε να του στείλουμε το σήμα SIGHUP. Επειδή
δεν υπάρχει συγκεκριμένος τρόπος στην απάντηση αυτών των σημάτων, και
διαφορετικοί δαίμονες έχουν διαφορετική συμπεριφορά, πρέπει να
διαβάσετε πρώτα την τεκμηρίωση για τον συγκεκριμένο δαίμονα.Τα σήματα στέλνονται χρησιμοποιώντας την εντολή &man.kill.1;, όπως
υποδεικνύει το ακόλουθο παράδειγμα.Στέλνοντας Σήμα σε μία ΔιεργασίαΑυτό το παράδειγμα δείχνει πως να στείλετε σήμα στην
&man.inetd.8;. Το αρχείο ρύθμισης της inetd είναι
το /etc/inetd.conf, και η
inetd θα ξανα-διαβάσει αυτό το αρχείο ρύθμισης
όταν θα σταλεί το σήμα SIGHUP.Βρείτε το PID της διεργασίας, της οποίας επιθυμείτε να στείλετε
το σήμα. Ενεργήστε χρησιμοποιώντας τις εντολές &man.ps.1; και
&man.grep.1;. Η εντολή &man.grep.1; χρησιμοποιείται για να ψάξει
στην έξοδο μιας εντολής, για τους αλφαριθμητικούς χαρακτήρες που
έχετε ορίσει. Η εντολή εκτελείται από έναν απλό χρήστη, ενώ η
&man.inetd.8; εκτελείται από τον root,
επομένως θα πρέπει να προσθέσετε την επιλογή
στην &man.ps.1;.&prompt.user; ps -ax | grep inetd
198 ?? IWs 0:00.00 inetd -wWΕπομένως το PID της &man.inetd.8; είναι το 198. Σε μερικές
περιπτώσεις μπορεί να εμφανίζεται στην έξοδο η εντολή
grep inetd. Αυτό οφείλεται στον τρόπο με τον
οποίο η &man.ps.1; ψάχνει την λίστα των ενεργών διεργασιών.Χρησιμοποιήστε την &man.kill.1; για να στείλετε το σήμα.
Επειδή η &man.inetd.8; τρέχει από τον root
θα πρέπει πρώτα να χρησιμοποιήσετε &man.su.1; για να γίνετε
πρώτα root.&prompt.user; suPassword:
&prompt.root; /bin/kill -s HUP 198Όπως και με τις περισσότερες εντολές στο &unix;, η
&man.kill.1; δεν θα τυπώσει τίποτε στην έξοδο αν η εντολή είχε
επιτυχία. Εάν στείλετε ένα σήμα σε μια διεργασία που δεν σας
ανήκει θα δείτε kill: PID:
Operation not permitted. Αν πληκτρολογήσετε λάθος
το PID τότε ή θα στείλετε το σήμα σε λάθος διεργασία,κάτι που
μπορεί να είναι άσχημο, ή, αν είστε τυχερός, θα έχετε στείλει το
σήμα σε ένα PID που δεν χρησιμοποιείται τη συγκεκριμένη στιγμή, και
θα δείτε kill: PID: No such
process.Γιατί να χρησιμοποιήσετε την εντολή
/bin/kill;Πολλά κελύφη παρέχουν την εντολή kill ως
ενσωματωμένη εντολή. Αυτό σημαίνει πως το κέλυφος θα στείλει
το σήμα άμεσα, αντί να τρέξει το /bin/kill.
Αυτό μπορεί να είναι πολύ χρήσιμο, αλλά διαφορετικά κελύφη έχουν
διαφορετική σύνταξη για τον καθορισμό το όνομα του σήματος που
πρέπει να αποσταλεί. Αντί λοιπόν να πρέπει να μάθουμε όλες τις
περιπτώσεις ,είναι ευκολότερο απλά να χρησιμοποιούμε την εντολή
/bin/kill ...
άμεσα.Η αποστολή άλλων σημάτων μοιάζει πάρα πολύ, απλά αντικαταστήστε
το TERM ή το KILL στη γραμμή
εντολών με κάποιο άλλο.Η φόνευση τυχαίων διεργασιών στο σύστημα μπορεί να είναι κακή
ιδέα. Ιδιαίτερα, η &man.init.8;, με PID 1, είναι πολύ ειδική. Η
εκτέλεση της εντολής /bin/kill -s KILL 1 είναι
ένας γρήγορος τρόπος να σβήσετε το σύστημα σας.
Πάντα να ελέγχετε δύο φορές τις παραμέτρους που
χρησιμοποιείτε με την &man.kill.1; πριν
πιέσετε Return.Κελύφηκελύφηγραμμή εντολώνΣτο &os; ένα μεγάλο μέρος της καθημερινής εργασίας γίνεται σε ένα
περιβάλλον γραμμής εντολών ονόματι κέλυφος (shell). Η κύρια δουλειά
του κελύφους είναι να παίρνει εντολές από το κανάλι εισόδου και να τις
εκτελεί. Μερικά κελύφη έχουν ενσωματωμένες λειτουργίες ώστε να βοηθούν
στις καθημερινές προγραμματισμένες εργασίες όπως διαχείριση αρχείων,
file globbing, επεξεργασία γραμμής εντολών, μακροεντολές, και
μεταβλητές περιβάλλοντος. Το &os; διατίθεται με διάφορα κελύφη, όπως το
sh, το Bourne Shell και το tcsh,
το βελτιωμένο C-shell. Διάφορα άλλα κελύφη είναι διαθέσιμα από την
Συλλογή των Ports του &os;, όπως τα zsh και
bash.Ποιο κέλυφος να χρησιμοποιήσετε; Είναι πραγματικά θέμα γούστου.
Εάν είστε προγραμματιστής σε γλώσσα C θα αισθανθείτε περισσότερο
οικείος με τα κελύφη τύπου C, όπως το tcsh. Εάν
έρχεστε από το Linux ή είστε νέος σε περιβάλλον γραμμής εντολών &unix;
μπορείτε να δοκιμάσετε το bash. Η ουσία είναι πως
κάθε κέλυφος έχει μοναδικές ιδιότητες που μπορεί να συνεργαστούν με το
περιβάλλον εργασίας της προτίμησης σας, και επομένως είναι επιλογή σας
ποιο κέλυφος να χρησιμοποιήσετε.Μια κοινή ιδιότητα όλων των κελυφών είναι η αυτόματη συμπλήρωση
ονομάτων αρχείων. Αφού έχετε πληκτρολογήσει τα πρώτα γράμματα μιας
εντολής ή ενός ονόματος αρχείου αν πιέσετε το πλήκτρο
Tab στο πληκτρολόγιο, τότε το κέλυφος αυτόματα θα
ολοκληρώσει το υπόλοιπο της εντολής ή του ονόματος αρχείου. Ας δώσουμε
ένα παράδειγμα. Ας υποθέσουμε πως έχετε δύο αρχεία
foobar και foo.bar. Αν
θέλετε να σβήσετε το foo.bar θα πρέπει να
πληκτρολογήσετε
rm fo[Tab].[Tab].Το κέλυφος θα τυπώσει αυτόματα rm foo[BEEP].bar.Το [BEEP] είναι το κουδούνι της κονσόλας, το οποίο μας πληροφορεί
πως δεν ήταν δυνατόν να ολοκληρώσει το όνομα του αρχείου διότι υπάρχουν
περισσότερα από ένα ονόματα αρχείων που ταιριάζουν. Όντως το
foobar και το foo.bar
ξεκινούν με fo, και το κέλυφος κατάφερε να
συμπληρώσει ως το foo. Αν πληκτρολογήσετε επιπλέον
., και μετά πάλι Tab, το κέλυφος
θα καταφέρει να συμπληρώσει το υπόλοιπο του ονόματος αρχείου
για σας.μεταβλητές περιβάλλοντοςΆλλο ιδιαίτερο χαρακτηριστικό του κελύφους είναι η χρήση των
μεταβλητών περιβάλλοντος. Οι μεταβλητές περιβάλλοντος είναι ένα ζεύγος
μεταβλητών/κλειδιών αποθηκευμένα στον περιβάλλοντα χώρο του κελύφους
Αυτός ο χώρος μπορεί να διαβαστεί από οποιοδήποτε πρόγραμμα που
καλείται από το κέλυφος, και έτσι περιέχει πλήθος ρυθμίσεων
προγραμμάτων. Ακολουθεί μία λίστα με συνήθεις μεταβλητές περιβάλλοντος
και τη σημασία τους:μεταβλητές περιβάλλοντοςΜεταβλητήΠεριγραφήUSERΌνομα του τρέχοντα χρήστη.PATHΛίστα καταλόγων για την αναζήτηση εκτελέσιμων χωρισμένη
με άνω-κάτω τελείες.DISPLAYΌνομα δικτύου της οθόνης X11 που είναι διαθέσιμη για
σύνδεση, αν υπάρχει.SHELLΤο ενεργό κέλυφος.TERMΤο όνομα του τύπου του τερματικού χρήστη. Ορίζει τις
δυνατότητες του τερματικού.TERMCAPΕγγραφή στη βάση δεδομένων κωδικών escape για διάφορες
λειτουργίες τερματικών.OSTYPEΟ τύπος του λειτουργικού συστήματος π.χ., &os;.MACHTYPEΗ αρχιτεκτονική CPU στην οποία δουλεύει το σύστημα.EDITORΟ προεπιλεγμένος κειμενογράφος του χρήστη.PAGERΤο προεπιλεγμένο πρόγραμμα σελιδοποίησης του
χρήστη.MANPATHΛίστα καταλόγων για την αναζήτηση των σελίδων βοηθείας
(man pages) χωρισμένη με άνω-κάτω τελείες.Bourne shellsΟ ορισμός μιας μεταβλητής περιβάλλοντος διαφέρει κάπως από κέλυφος
σε κέλυφος. Για παράδειγμα στα κελύφη τύπου-C, όπως τα
tcsh και csh, θα πρέπει να
χρησιμοποιήσετε την setenv για να ορίσετε μεταβλητές
περιβάλλοντος. Σε κελύφη Bourne όπως τα sh και
bash, θα πρέπει να χρησιμοποιείτε την
export για να θέσετε τις τρέχουσες μεταβλητές
περιβάλλοντος. Για παράδειγμα, για να ορίσετε ή να μετατρέψετε την
μεταβλητή περιβάλλοντος EDITOR, σε
csh ή tcsh θα πρέπει να δώσετε
μια εντολή που να θέτει τη μεταβλητή EDITOR στο
/usr/local/bin/emacs:&prompt.user; setenv EDITOR /usr/local/bin/emacsΓια κελύφη Bourne:&prompt.user; export EDITOR="/usr/local/bin/emacs"Μπορείτε επίσης στα περισσότερα κελύφη να αναπτύσσετε τις
μεταβλητές περιβάλλοντος τοποθετώντας μπροστά τους τον χαρακτήρα
$. Για παράδειγμα, η echo $TERM
θα τυπώσει την τιμή που έχουμε θέσει στην μεταβλητή, διότι το κέλυφος
αναπτύσσει την $TERM και περνά την τιμή της στην
echo.Τα κελύφη χρησιμοποιούν μερικούς ειδικούς χαρακτήρες, που
ονομάζονται meta-χαρακτήρες για εμφανίσεις ιδιαίτερων δεδομένων. Ο πιο
κοινός εξ' αυτών είναι ο χαρακτήρας *, ο οποίος
αντιπροσωπεύει οποιοδήποτε αλφαριθμητικό χαρακτήρα σε ένα όνομα αρχείου.
Αυτοί οι ειδικοί meta-χαρακτήρες μπορούν να χρησιμοποιηθούν για να
κάνουν filename globbing. Για παράδειγμα, αν πληκτρολογήσετε
echo * είναι σχεδόν το ίδιο με το να δώσετε
ls διότι το κέλυφος παίρνει όλα τα αρχεία που
ταιριάζουν με * και τα προωθεί στην γραμμή εντολών
για την echo.Για να εμποδίσετε το κέλυφος να επεξεργαστεί αυτούς τους ειδικούς
χαρακτήρες, μπορείτε να χρησιμοποιήσετε το σύμβολο διαφυγής (escape)
τοποθετώντας μπροστά τους μια δεξιόστροφη κάθετο
(\). Η echo $TERM τυπώνει τον
τύπο του τερματικού σας, ενώ η echo \$TERM τυπώνει
απλά $TERM.Αλλάζοντας το Κέλυφος σαςΟ ευκολότερος τρόπος για να αλλάξετε το κέλυφος σας είναι να
χρησιμοποιήσετε την εντολή chsh. Τρέχοντας την
chsh θα οδηγηθείτε στον κειμενογράφο που έχετε
θέσει στην μεταβλητή περιβάλλοντος EDITOR, ενώ αν δεν
έχετε θέσει, θα οδηγηθείτε στο vi. Αλλάξτε
κατάλληλα τη γραμμή Shell:Μπορείτε επίσης να δώσετε στην chsh την
επιλογή , αυτή θα θέσει το κέλυφος για σας, δίχως
να χρειαστεί να χρησιμοποιήσετε τον κειμενογράφο. Για παράδειγμα, αν
θέλετε να αλλάξετε το κέλυφος σας σε bash, η
ακόλουθη εντολή είναι ακριβώς αυτό που χρειάζεστε:&prompt.user; chsh -s /usr/local/bin/bashΤο κέλυφος στο οποίο επιθυμείτε να μεταβείτε
πρέπει να είναι καταχωρημένο στο αρχείο
/etc/shells. Αν έχετε εγκαταστήσει ένα
κέλυφος από τη συλλογή των ports, τότε
αυτό θα πρέπει να έχει ήδη γίνει. Αν εγκαταστήσατε το κέλυφος μόνοι
σας, τότε θα πρέπει να εκτελέσετε τη διαδικασία που
ακολουθεί.Αν για παράδειγμα, εγκαταστήσατε το bash
μόνοι σας και το τοποθετήσατε στον
/usr/local/bin, τότε θα πρέπει να
δώσετε:&prompt.root; echo "/usr/local/bin/bash" >> /etc/shellsΚαι μετά ξανατρέξτε την chsh.Κειμενογράφοικειμενογράφοιεπεξεργαστές κειμένουΑρκετές ρυθμίσεις στο &os; γίνονται με επεξεργασία αρχείων
κειμένου. Για αυτό το λόγο, θα ήταν καλή ιδέα να εξοικειωθείτε με ένα
κειμενογράφο. Αρκετοί περιέχονται στο βασικό σύστημα του &os; και
πολλοί περισσότεροι είναι διαθέσιμοι στην Συλλογή των Ports
(Ports Collection).eeκειμενογράφοιeeΟ ευκολότερος και απλούστερος κειμενογράφος για να μάθετε ονομάζεται
ee, που σημαίνει easy editor (εύκολος
κειμενογράφος). Για να ξεκινήσετε τον ee,
πρέπει να πληκτρολογήσετε στην γραμμή εντολών
ee filename όπου
filename είναι το όνομα του αρχείου που
θέλετε να επεξεργαστείτε. Για παράδειγμα, για να επεξεργαστείτε το
/etc/rc.conf, πληκτρολογείτε
ee /etc/rc.conf. Μόλις εισέλθετε στο
ee, όλες οι εντολές για να χειριστείτε τις
λειτουργίες του κειμενογράφου αναφέρονται στο πάνω μέρος της οθόνης.
Ο χαρακτήρας καπέλο ^ σημαίνει το πλήκτρο
Ctrl, επομένως ^e σημαίνει πως
πρέπει να πληκτρολογήσετε τον συνδυασμό πλήκτρων
Ctrle. Για να βγείτε από το ee,
πιέζετε το πλήκτρο Esc, και επιλέγετε leave editor.
Ο κειμενογράφος θα σας προτρέψει να σώσετε τυχόν αλλαγές, αν έχετε
επεξεργαστεί το αρχείο.vieditorsviemacseditorsemacsΤο &os; παρέχεται επίσης με πιο εξελιγμένους κειμενογράφους όπως
το ενσωματωμένο στο βασικό σύστημα vi. Το
Emacs και το vim,
είναι μέρος της Συλλογής των Ports του &os;
(editors/emacs και
editors/vim). Αυτοί οι
κειμενογράφοι προσφέρουν πολλές περισσότερες λειτουργίες και
δυνατότητες, με κόστος αυξημένη πολυπλοκότητα και δυσκολία εκμάθησης.
Ωστόσο αν σχεδιάζετε να επεξεργαστείτε αρκετά κείμενα, η εκμάθηση ενός
ισχυρού κειμενογράφου όπως το
vim ή το Emacs θα
σας γλυτώσει πολύ περισσότερο χρόνο επεξεργασίας στην πορεία.Συσκευές και Αρχεία συσκευώνΣυσκευή είναι ένας όρος που αναφέρεται σε σχέση με
λειτουργίες hardware ενός συστήματος, περιλαμβάνοντας δίσκους,
εκτυπωτές, κάρτες γραφικών και πληκτρολόγια. Κατά την εκκίνηση του &os;
οι περισσότερες πληροφορίες που αναγράφονται στην οθόνη είναι συσκευές
που αναγνωρίζονται από το σύστημα. Μπορείτε να ξαναδείτε τα μηνύματα
εκκίνησης, διαβάζοντας το /var/run/dmesg.boot.Για παράδειγμα, acd0 είναι ο πρώτος
οδηγός IDE CDROM, ενώ το kbd0 αντιπροσωπεύει
το πληκτρολόγιο.Στις περισσότερες από αυτές τις συσκευές σε ένα λειτουργικό σύστημα
&unix; η πρόσβαση πρέπει να γίνεται διαμέσου ειδικών αρχείων που
ονομάζονται αρχεία συσκευών, και είναι τοποθετημένα στον κατάλογο
/dev.Δημιουργώντας Αρχεία ΣυσκευώνΌταν προσθέτετε μια νέα συσκευή στο σύστημα σας, ή μεταγλωττίζετε
πηγαίο κώδικα για υποστήριξη νέων οδηγών, πρέπει να δημιουργούνται
νέα αρχεία συσκευών.DEVFS (DEVice File System) Το σύστημα αρχείων συσκευών ή, DEVFS,
παρέχει πρόσβαση στο χώρο ονομάτων συσκευών του πυρήνα (device
namespace) στο global σύστημα αρχείων του συστήματος. Αντί να
δημιουργείτε και να μετατρέπετε αρχεία συσκευών, το
DEVFS συντηρεί για σας αυτό το ιδιαίτερο σύστημα
αρχείων.Δείτε την σελίδα βοηθείας &man.devfs.5; για περισσότερες
πληροφορίες.Τύποι ΕκτελέσιμωνΓια να καταλάβετε γιατί το &os; χρησιμοποιεί τον τύπο &man.elf.5;
θα πρέπει πρώτα να γνωρίζετε μερικά πράγματα για τους τρεις
κυρίαρχους τύπους εκτελέσιμων για το &unix;&man.a.out.5;Ο παλαιότερος και πιο κλασσικός τύπος
αντικειμένων του &unix;. Χρησιμοποιεί μια μικρή και συμπαγή
κεφαλίδα με ένα μαγικό νούμερο στην αρχή που συχνά χρησιμοποιείται
για να χαρακτηρίζει τον τύπο (δείτε για περισσότερες πληροφορίες
την &man.a.out.5;). Περιέχει τρία φορτωμένα τμήματα: .text, .data
και .bss και επιπλέον ένα πίνακα συμβόλων και ένα πίνακα
αλφαριθμητικών χαρακτήρων.COFFΟ τύπος αντικειμένου SVR3. Η κεφαλίδα τώρα αποτελείται από ένα
πίνακα τομέων, ώστε να μπορούμε να έχουμε κάτι παραπάνω από απλά
.text, .data και .bss.&man.elf.5;Ο διάδοχος του COFF, περιλαμβάνει πολλαπλά
τμήματα και δέχεται τιμές 32 ή 64 bit. Το βασικό μειονέκτημα:
Ο ELF σχεδιάστηκε με την προϋπόθεση πως θα
υπήρχε μόνο ένα ABI για κάθε αρχιτεκτονική συστήματος. Αυτή η
υπόθεση είναι όμως εσφαλμένη τώρα, αφού ακόμη και στον εμπορικό
κόσμο του SYSV (όπου υπάρχουν τουλάχιστον τρία ABI: SRV4, Solaris,
SCO) δεν ισχύει.Το &os; προσπαθεί να ξεπεράσει αυτό το πρόβλημα παρέχοντας
ένα βοηθητικό πρόγραμμα με το οποίο μπορούμε να
ενσωματώσουμε (branding) σε ένα εκτελέσιμο
ELF τις πληροφορίες για το ABI που είναι συμβατό
με αυτό. Δείτε την σελίδα manual του &man.brandelf.1; για
περισσότερες πληροφορίες.Το &os; προέρχεται από τον κλασσικό χώρο και
μέχρι την αρχή της σειράς 3.X, χρησιμοποιούσε τον τύπο &man.a.out.5;,
μια τεχνολογία δοκιμασμένη και αποδεδειγμένη σε πολλές γενιές εκδόσεων
του BSD. Αν και η μεταγλώττιση και εκτέλεση εγγενών εκτελέσιμων (και
πυρήνων) τύπου ELF ήταν δυνατή στα &os; συστήματα
ήδη από πολύ καιρό πριν, το &os; αρχικά αντιστάθηκε στην
ώθηση για καθιέρωση του ELF ως
προκαθορισμένου τύπου. Γιατί; Όταν ο κόσμος του Λίνουξ έκανε την
οδυνηρή μετάβαση προς το ELF, δεν ήταν τόσο για να
ξεφύγει από τον τύπο εκτελέσιμων a.out όσο για να
αντιμετωπίσει το δύσκαμπτο δικό τους μηχανισμό κοινόχρηστων βιβλιοθηκών,
ο οποίος βασίζονταν σε jump-tables και προκαλούσε μεγάλη δυσχέρεια στην
κατασκευή τους, τόσο στους προγραμματιστές όσο και στους μεταπωλητές.
Από τη στιγμή που τα διαθέσιμα εργαλεία του ELF
προσέφεραν λύση στο πρόβλημα των κοινών βιβλιοθηκών και έγινε γενικώς
αποδεκτό πως ήταν ο δρόμος προς τα εμπρός, έγινε
αποδεκτό το αναγκαίο κόστος της μεταφοράς και επιτεύχθηκε η μετακίνηση.
Ο μηχανισμός κοινόχρηστων βιβλιοθηκών του &os; βασίζεται σε μεγάλο
βαθμό στον αντίστοιχο μηχανισμό του &sunos; της Sun και είναι πολύ
εύκολος στη χρήση.Τότε, γιατί υπάρχουν τόσοι διαφορετικοί τύποι;Πίσω στο σκοτεινό παρελθόν, υπήρχε απλό hardware. Αυτό
το απλό hardware υποστήριζε ένα απλό, μικρό σύστημα. Το
a.out ήταν απόλυτα κατάλληλο για την αναπαράσταση
εκτελέσιμων σε αυτό το απλό σύστημα (ένα PDP-11). Όταν ο κόσμος άρχισε
να μεταφέρει το &unix; από αυτό το απλό σύστημα, διατηρήθηκε ο τύπος
a.out γιατί ήταν ικανοποιητικός για τα πρώτα
ports του &unix; σε αρχιτεκτονικές όπως η Motorola 68k, VAXen,
κτλ.Μετέπειτα κάποιος λαμπρός μηχανικός hardware αποφάσισε
πως αφού μπορούσε να εξαναγκάζει το λογισμικό να κάνει τόσα
πρόχειρα κόλπα, θα μπορούσε επίσης να παραλείψει μερικές πύλες
από το σχεδιασμό ώστε να επιτρέψει στον πυρήνα της CPU να τρέχει
γρηγορότερα. Αν και διασκευάσθηκε ώστε να δουλεύει με αυτό το νέο
είδος hardware (γνωστό σήμερα ως RISC), ο τύπος
a.out ήταν τελικά ακατάλληλος για αυτό, και έτσι
σχεδιάστηκαν πολλοί νέοι τύποι για να επιτευχθεί καλύτερη απόδοση από
το hardware από ότι ήταν δυνατόν με τον απλό και περιοριστικό τύπο
a.out. Εφευρέθηκαν διάφοροι τύποι όπως οι
COFF, ECOFF, και μερικοί άλλοι
λιγότερο γνωστοί, και ερευνήθηκαν οι περιορισμοί τους ώσπου τα πράγματα
σταθεροποιήθηκαν στο ELF.Επιπλέον, το μέγεθος των προγραμμάτων γινόταν όλο και μεγαλύτερο
και οι δίσκοι (και η φυσική μνήμη) ήταν ακόμη σχετικά μικροί και κάπως
έτσι γεννήθηκε η ιδέα της κοινής βιβλιοθήκης. Το σύστημα VM έγινε
επίσης περισσότερο περίπλοκο. Κάθε μία από τις βελτιώσεις γινόταν
με βάση τον τύπο a.out, που όμως γινόταν όλο και
πιο δύσχρηστος με κάθε νέα προσθήκη. Επιπρόσθετα, ο κόσμος ήθελε να
φορτώνει τμήματα δυναμικά ενώ το σύστημα ήταν σε φάση εκτέλεσης, ή να
εξαλείφει μέρη προγραμμάτων αφού είχε εκτελεστεί ο κώδικας αρχικοποίησης
(init) ώστε να εξοικονομηθεί φυσική μνήμη και χώρος swap. Οι γλώσσες
προγραμματισμού γινόντουσαν ακόμα πιο περίπλοκες και ο κόσμος ήθελε
αυτόματη φόρτωση και εκτέλεση κώδικα πριν την κλήση της main. Έγιναν
πρόχειρες διορθώσεις (hacks) στον τύπο a.out ώστε
να συμβαδίζει με όλες αυτές τις αλλαγές, και πράγματι, για μια περίοδο
έδειχνε να λειτουργεί. Με τον καιρό όμως, φάνηκε ότι ο τύπος
a.out δεν θα μπορούσε να αντεπεξέλθει σε όλα αυτά
τα προβλήματα, αφού θα έπρεπε να αναπτύσσεται συνεχώς και με περίπλοκο
τρόπο. Αν και το ELF έλυνε πολλά από αυτά τα
προβλήματα, η μετάβαση σε αυτό ενός συστήματος που βασικά λειτουργούσε,
θα οδηγούσε σε οδυνηρές καταστάσεις. Έτσι ο τύπος
ELF έπρεπε να περιμένει μέχρι τη στιγμή όπου η
παραμονή στο a.out θα δημιουργούσε περισσότερα
προβλήματα από ότι η μετάβαση στο ELF.Ωστόσο, όσο ο καιρός περνούσε, και τα εργαλεία μεταγλώττισης από
τα οποία προέρχονται τα αντίστοιχα εργαλεία του &os; (ειδικότερα ο
assembler και ο loader), αναπτύχθηκαν παράλληλα σε δύο δέντρα. Το
δέντρο του &os; πρόσθεσε κοινές βιβλιοθήκες και διόρθωσε κάποια
σφάλματα. Η ομάδα του GNU που είχε αρχικά γράψει αυτά τα
προγράμματα, τα έγραψε ξανά και πρόσθεσε ευκολότερη υποστήριξη για
κατασκευή cross compilers, την ενσωμάτωση διαφορετικών τύπων κατά
βούληση, κλπ. Αν και πολλοί ζητούσαν να κατασκευαστούν cross compilers
για &os;, ήταν άτυχοι, αφού ο παλιός πηγαίος κώδικας του &os; για τα
as και ld τα
έκανε ακατάλληλα. Η νέα αλυσίδα εργαλείων του GNU
(binutils) υποστηρίζει cross compiling,
ELF, κοινές βιβλιοθήκες, προεκτάσεις C++, κτλ.
Επιπλέον, πολλοί τρίτοι κατασκευαστές προσφέρουν εκτελέσιμα ELF, και
είναι πολύ καλό να μπορούν να εκτελεστούν στο &os;.Ο ELF είναι πιο εκφραστικός από τον
a.out και περισσότερο επεκτάσιμος στο βασικό
σύστημα. Τα εργαλεία ELF είναι ευκολότερα στην
συντήρηση και προσφέρουν υποστήριξη για cross compilers,
κάτι που είναι πολύ σημαντικό για μερικούς ανθρώπους. Μπορεί ο
ELF να είναι λίγο πιο αργός από τον
a.out, αλλά η διαφορά δεν είναι αισθητή. Υπάρχουν
επίσης πολλές άλλες διαφορές μεταξύ τους, σε λεπτομέρειες όπως τον τρόπο
που αντιστοιχίζουν σελίδες, που χειρίζονται τον κώδικα init, κλπ.
Καμιά από αυτές δεν είναι πολύ σημαντική, αλλά ωστόσο δεν παύουν να
είναι διαφορές. Με τον καιρό η υποστήριξη για το
a.out θα απομακρυνθεί από τον πυρήνα GENERIC, και
τελικά θα αφαιρεθεί εντελώς από τον πυρήνα όταν εκλείψει ολοκληρωτικά η
ανάγκη εκτέλεσης παλαιών προγραμμάτων τύπου a.out.Για Περισσότερες ΠληροφορίεςΣελίδες Βοηθείαςσελίδες βοηθείαςΗ πιο κατανοητή τεκμηρίωση στο &os; προσφέρεται με τη μορφή των
σελίδων βοηθείας (manual pages). Σχεδόν για κάθε πρόγραμμα του
συστήματος δίνεται μια σύντομη αναφορά που εξηγεί τις βασικές
λειτουργίες και διάφορα άλλα θέματα. Αυτές οι σελίδες προβάλλονται με
την εντολή man. Η χρήση της εντολής
man είναι απλή:&prompt.user; man commandόπου command είναι το όνομα της εντολής για την
οποία επιθυμείτε να μάθετε περισσότερες πληροφορίες. Για παράδειγμα,
για να μάθετε περισσότερα για την εντολή ls
πληκτρολογήστε:&prompt.user; man lsΤο online manual χωρίζεται σε τέσσερις αριθμημένες
ενότητες:Εντολές χρήστη.Κλήσεις συστήματος και αριθμοί σφαλμάτων.Συναρτήσεις των βιβλιοθηκών της C.Οδηγοί συσκευών.Τύποι αρχείων.Παιχνίδια και άλλες εφαρμογές διασκέδασης.Διάφορες πληροφορίες.Συντήρηση συστήματος και εντολές λειτουργίας.Ανάπτυξη πυρήνα.Σε μερικές περιπτώσεις, το ίδιο θέμα μπορεί να εμφανίζεται σε
περισσότερες ενότητες των σελίδων βοηθείας. Για παράδειγμα, υπάρχει
η εντολή χρήστη chmod και η κλήση συστήματος
chmod(). Σε αυτή τη περίπτωση, μπορείτε να
πείτε στην εντολή man ποια ακριβώς θέλετε
επιλέγοντας την ενότητα:&prompt.user; man 1 chmodΜε αυτόν τον τρόπο θα εμφανιστεί η σελίδα βοηθείας για την
εντολή χρήστη chmod. Οι αναφορές σε μια ειδική
ενότητα των σελίδων βοηθείας τοποθετούνται παραδοσιακά μέσα σε
παρένθεση στην τυπωμένη τεκμηρίωση, επομένως το &man.chmod.1;
αναφέρεται στην εντολή χρήστη chmod και το
&man.chmod.2; αναφέρεται στην κλήση συστήματος.Αυτό είναι χρήσιμο όταν γνωρίζουμε το όνομα της εντολής και απλά
επιθυμούμε να μάθουμε πως να την χρησιμοποιήσουμε, αλλά τι γίνεται
αν δεν γνωρίζουμε το όνομα της; Μπορείτε να χρησιμοποιήσετε το
man για να αναζητήσετε λέξεις κλειδιά από τις
περιγραφές των εντολών χρησιμοποιώντας την επιλογή
:&prompt.user; man -k mailΜε την εντολή αυτή θα εμφανιστεί μία λίστα από εντολές που
περιέχουν την λέξη κλειδί mail στην περιγραφή τους.
Αυτό είναι αντίστοιχο με το να χρησιμοποιήσετε την εντολή
apropos.Επομένως, βλέπετε όλες αυτές τις γουστόζικες εντολές στον
/usr/bin αλλά δεν έχετε την παραμικρή ιδέα του
τι πραγματικά κάνουν; Απλά δώστε:&prompt.user; cd /usr/bin
&prompt.user; man -f *ή&prompt.user; cd /usr/bin
&prompt.user; whatis *το οποίο κάνει ακριβώς το ίδιο πράγμα.GNU Info FilesFree Software FoundationΤο &os; περιλαμβάνει πολλές εφαρμογές και βοηθητικά προγράμματα
που έχουν δημιουργηθεί από την Free Software Foundation (FSF). Πέρα
από τις σελίδες βοηθείας, τα προγράμματα αυτά παρέχονται με
τεκμηρίωση μορφής hypertext σε αρχεία που ονομάζονται
info και τα οποία μπορείτε να προβάλλετε με την
εντολή info ή, αν έχετε εγκαταστήσει το
emacs, μέσω της κατάστασης λειτουργίας
info mode του emacs.Για να χρησιμοποιήσετε την εντολή &man.info.1;, απλά
πληκτρολογήστε:&prompt.user; infoΓια μια σύντομη εισαγωγή, πληκτρολογήστε h.
Για μια γρήγορη αναφορά εντολής, πληκτρολογήστε
?.
+
diff --git a/el_GR.ISO8859-7/books/handbook/updating/chapter.sgml b/el_GR.ISO8859-7/books/handbook/updating/chapter.sgml
index b27a71c607..e138412df1 100644
--- a/el_GR.ISO8859-7/books/handbook/updating/chapter.sgml
+++ b/el_GR.ISO8859-7/books/handbook/updating/chapter.sgml
@@ -1,581 +1,582 @@
TomRhodesΓράφηκε από τον ColinPercivalΒασίστηκε σε σημειώσεις που παρείχε ο Ενημερώνοντας το &os;ΣύνοψηUpdating FreeBSDfreebsd-updateUpdatingΈνα κύριο χαρακτηριστικό του &os; έχει παραμείνει αναλλοίωτο με την
πάροδο του χρόνου: Η απαίτηση για την χρήση εφαρμογών και βοηθητικών
προγραμμάτων για την ανάκτηση μικρών και μεγάλων ενημερώσεων του
συστήματος.Για πολλά χρόνια, οι χρήστες που επιθυμούσαν να αναβαθμίσουν το
σύστημα τους, να ανακτήσουν τις ενημερώσεις ασφαλείας, και να λάβουν
ενημερωμένες εκδόσεις των πακέτων και των ports, χωρίς να χαλάσουν τη
λειτουργία της Συλλογής των Ports, ήταν αναγκασμένοι να χρησιμοποιούν
το εργαλείο CVSup.Αν και το CVSup υποστηρίζεται ακόμα (και
έχει επίσης προστεθεί και μια έκδοση του σε γλώσσα C στο βασικό σύστημα
του &os;), υπάρχουν και νέες μέθοδοι για την ανάκτηση ενημερώσεων του
συστήματος.Εργαλεία όπως το &man.portsnap.8; και το &man.freebsd-update.8;
έχουν εκσυγχρονίσει την διαδικασία αναβάθμισης. Αυτές οι νέες μέθοδοι
αυξάνουν την παραγωγικότητα ενώ ταυτόχρονα παρέχουν και μια απλούστερη
διεπαφή προς τους χρήστες. Ορισμένα από αυτά τα εργαλεία μπορούν να
εκτελεστούν από το &man.cron.8;, ελαχιστοποιώντας την ανάγκη
αλληλεπίδρασης με το διαχειριστή του συστήματος. Αυτό είναι πραγματικό
όφελος για όσους διαχειρίζονται και παρακολουθούν εκατοντάδες συστήματα
&os;.Στο κεφάλαιο αυτό θα εξηγήσουμε τις νέες μεθόδους, καθώς και
τους τρόπους με τους οποίους μπορούν να ωφεληθούν τόσο οι χρήστες όσο
και οι διαχειριστές συστημάτων, από την πρακτική και εύκολη εφαρμογή
τους.Αφού διαβάσετε αυτό το κεφάλαιο, θα γνωρίζετε:Ποια βοηθητικά προγράμματα μπορείτε να χρησιμοποιήσετε για να
ενημερώσετε το σύστημα και την Συλλογή των Ports.Πως να χρησιμοποιήσετε το freebsd-update
για να εφαρμόσετε ενημερώσεις ασφαλείας και άλλες μικρές και
μεγαλύτερες αναβαθμίσεις στο &os;.Πως να συγκρίνετε την κατάσταση ενός εγκατεστημένου συστήματος
με αναφορά ένα γνωστό και εγγυημένα σωστό σύστημα.Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:Να κατανοείτε βασικές έννοιες του &unix; και του &os;
().Να είστε εξοικειωμένος με βασικές έννοιες της ρύθμισης και
μεταγλώττισης προσαρμοσμένου πυρήνα
().Να είστε εξοικειωμένος με την Συλλογή των Ports και την
εγκατάσταση εφαρμογών τρίτου κατασκευαστή στο &os;
().Να είστε εξοικειωμένος με τα διάφορα τμήματα πηγαίου κώδικα
από τα οποία αποτελείται το &os;, καθώς και με τη χρήση του
εργαλείου &man.mergemaster.8;
().Ενημέρωση του &os;Η εφαρμογή ενημερώσεων ασφαλείας αποτελεί ένα σημαντικό τμήμα της
συντήρησης λογισμικού, ειδικά όταν πρόκειται για το λειτουργικό σύστημα.
Για μεγάλο διάστημα, η διαδικασία αυτή δεν ήταν εύκολη στο &os;.
Έπρεπε να εφαρμοστούν patches στον πηγαίο κώδικα, να γίνει μεταγλώττιση
του από την αρχή, και να εγκατασταθούν ξανά τα νέα εκτελέσιμα.Αυτό δεν είναι πλέον αναγκαίο, καθώς το &os; διαθέτει τώρα ένα
βοηθητικό πρόγραμμα, το freebsd-update. Το πρόγραμμα
παρέχει δύο διαφορετικές λειτουργίες. Η πρώτη είναι η δυνατότητα
δυαδικής (binary) ενημέρωσης του βασικού συστήματος με τις τελευταίες
διορθώσεις ασφάλειας και λαθών, χωρίς να χρειάζεται ξανά μεταγλώττιση
και εγκατάσταση. Η δεύτερη είναι η δυνατότητα αναβάθμισης του
συστήματος σε μια νέα μικρή ή μεγάλη επίσημη έκδοση (release).Δυαδικές διορθώσεις λαθών και ασφάλειας, διατίθενται για όλες
τις αρχιτεκτονικές και εκδόσεις που υποστηρίζονται από την ομάδα
ασφάλειας. Ωστόσο, ορισμένα χαρακτηριστικά όπως η δυνατότητα
αναβάθμισης του λειτουργικού σε μια νέα έκδοση, απαιτούν την
τελευταία έκδοση του &man.freebsd-update.8; και του &os; 6.3.
Πριν προχωρήσετε στην αναβάθμιση σε μια νέα έκδοση, θα πρέπει να
διαβάσετε τις σχετικές με αυτήν ανακοινώσεις, καθώς μπορεί να
περιέχουν σημαντικές πληροφορίες. Μπορείτε να δείτε τις
ανακοινώσεις εκδόσεων στην παρακάτω τοποθεσία:
.Αν υπάρχει κάποιο crontab που χρησιμοποιεί τις
δυνατότητες του freebsd-update, θα πρέπει να
απενεργοποιηθεί πριν ξεκινήσει η παρακάτω διαδικασία. Μπορείτε να
εγκαταστήσετε την τελευταία έκδοση του
freebsd-update κατεβάζοντας το συμπιεσμένο πακέτο
από το παραπάνω URL και εκτελώντας τις παρακάτω
εντολές:&prompt.root; gunzip -c freebsd-update-upgrade.tgz | tar xvf -
&prompt.root; mv freebsd-update.sh /usr/sbin/freebsd-update
&prompt.root; mv freebsd-update.conf /etcΔεν απαιτείται να κατεβάσετε την τελευταία έκδοση, αν χρησιμοποιείτε
κάποια από τις τρέχουσες εκδόσεις του &os;.Το Αρχείο ΡυθμίσεωνΚάποιοι χρήστες ίσως θέλουν να αλλάξουν το αρχείο ρυθμίσεων, ώστε
να έχουν καλύτερο έλεγχο της διαδικασίας. Οι επιλογές είναι γενικά
αρκετά καλά τεκμηριωμένες, αλλά οι παρακάτω ίσως να χρειάζονται
κάποιες επιπλέον επεξηγήσεις:# Components of the base system which should be kept updated.
Components src world kernelΑυτή η παράμετρος ελέγχει ποια τμήματα του &os; θα διατηρούνται
ενημερωμένα. Η προεπιλογή είναι να ενημερώνεται ο πηγαίος κώδικας,
όλο το βασικό σύστημα, και ο πυρήνας. Τα τμήματα είναι τα ίδια
που διατίθενται και κατά την εγκατάσταση, για παράδειγμα αν βάλετε
την επιλογή world/games θα εγκαθίστανται ενημερώσεις
για τα παιχνίδια. Αν βάλετε src/bin θα επιτρέψετε
την ενημέρωση του πηγαίου κώδικα του καταλόγου
src/bin.Η καλύτερη επιλογή είναι να αφήσετε εδώ την προεπιλεγμένη τιμή,
καθώς αν την αλλάξετε ώστε να περιέχει συγκεκριμένα μόνο τμήματα,
θα αναγκαστείτε να αναφέρετε χωριστά μέσα στο αρχείο ρυθμίσεων κάθε
τμήμα που θέλετε να ενημερώνεται. Αυτό ίσως έχει καταστροφικά
αποτελέσματα, καθώς είναι πιθανό ο πηγαίος κώδικας και τα εκτελέσιμα
προγράμματα να μην είναι πλέον σε συγχρονισμό μεταξύ τους.# Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePathsΠροσθέστε διαδρομές σε καταλόγους, όπως
/bin ή
/sbin για να αφήσετε
απείραχτους τους συγκεκριμένους καταλόγους κατά την διαδικασία
ενημέρωσης. Η επιλογή αυτή μπορεί να χρησιμοποιηθεί για να αποτρέψει
το freebsd-update να γράψει πάνω σε πιθανόν
δικές σας τοπικές αλλαγές.# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profileΗ επιλογή αυτή θα ενημερώσει τα αρχεία ρυθμίσεων στους καταλόγους
που καθορίζονται, μόνο αν αυτά δεν έχουν μεταβληθεί από το χρήστη.
Αν υπάρχουν τοπικές αλλαγές, δεν θα γίνει ενημέρωση. Υπάρχει μια
ακόμα επιλογή, η KeepModifiedMetadata, η οποία
οδηγεί το freebsd-update να αποθηκεύσει τις αλλαγές
μεταξύ των δύο εκδόσεων κατά τη διάρκεια της συγχώνευσης
(merge).# When upgrading to a new &os; release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/Πρόκειται για τη λίστα των καταλόγων που περιέχουν αρχεία
ρυθμίσεων, και στα οποία το freebsd-update θα
επιχειρεί την διαδικασία συγχώνευσης αλλαγών. Η διαδικασία
συγχώνευσης γίνεται με μια σειρά από patches τύπου &man.diff.1;
παρόμοια με το &man.mergemaster.8; αλλά με λιγότερες επιλογές. Οι
συγχωνεύσεις είτε γίνονται δεκτές, είτε προκαλούν το άνοιγμα κάποιου
συντάκτη κειμένου, διαφορετικά η εκτέλεση του
freebsd-update ακυρώνεται. Αν δεν είστε
σίγουρος, κρατήστε αντίγραφο ασφαλείας του καταλόγου
/etc και απλώς δεχθείτε τις
αλλαγές. Δείτε το για περισσότερες
πληροφορίες σχετικά με την εντολή
mergemaster.# Directory in which to store downloaded updates and temporary
# files used by &os; Update.
# WorkDir /var/db/freebsd-updateΣτον κατάλογο αυτό φυλάσσονται όλα τα patches και τα προσωρινά
αρχεία. Σε περιπτώσεις όπου ο χρήστης εκτελεί αναβάθμιση σε μια
νεότερη έκδοση του &os;, θα πρέπει να διαθέτει τουλάχιστον ένα
gigabyte ελεύθερου χώρου.# When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which &os; Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents noΑν θέσετε την παραπάνω επιλογή στο yes,
το freebsd-update θα υποθέσει ότι η λίστα
Components είναι πλήρης και δεν θα επιχειρήσει
να προχωρήσει σε αλλαγές εκτός λίστας. Ουσιαστικά, το
freebsd-update θα προσπαθήσει να ενημερώσει κάθε
αρχείο που ανήκει στη λίστα Components.Patches Σχετικά με την ΑσφάλειαΤα patches που σχετίζονται με την ασφάλεια, αποθηκεύονται σε
ένα απομακρυσμένο μηχάνημα και μπορούν να μεταφορτωθούν και να
εγκατασταθούν με την ακόλουθη εντολή:&prompt.root; freebsd-update fetch
&prompt.root; freebsd-update installΑν με την παραπάνω εντολή εγκατασταθούν ενημερώσεις στον πυρήνα,
θα χρειαστεί να επανεκκινήσετε το σύστημα. Αν όλα πάνε καλά, το
σύστημα θα είναι πλέον ενημερωμένο και μπορείτε να εκτελείτε το
freebsd-update αυτόματα με την βοήθεια του
&man.cron.8;. Μια απλή καταχώριση στο αρχείο
/etc/crontab είναι επαρκής για αυτό
το σκοπό:@daily root freebsd-update cronΗ παραπάνω καταχώριση ορίζει ότι το
freebsd-update θα εκτελείται μια φορά την ημέρα.
Με τον τρόπο αυτό, και όταν η εκτέλεση είναι μέσω της επιλογής
, το freebsd-update απλώς
θα ελέγχει για ενημερώσεις. Αν υπάρχουν, η εφαρμογή θα τις
κατεβάζει, αλλά δεν θα τις εγκαθιστά. Θα στέλνει όμως ένα email
στο χρήστη root ώστε να τις εγκαταστήσει
χειροκίνητα.Αν οτιδήποτε πάει στραβά, το freebsd-update
έχει την ικανότητα να επιστρέφει στην προηγούμενη σταθερή κατάσταση,
αναιρώντας το τελευταίο σετ αλλαγών με την ακόλουθη εντολή:&prompt.root; freebsd-update rollbackΜε την ολοκλήρωση της εντολής, θα πρέπει να επανεκκινήσετε το
σύστημα αν έχουν γίνει αλλαγές στον πυρήνα ή σε κάποιο από τα
αρθρώματα του. Αυτό θα επιτρέψει στο &os; να φορτώσει τα νέα
εκτελέσιμα στη μνήμη.Η εντολή freebsd-update λειτουργεί μόνο
με τον πυρήνα GENERIC. Αν έχετε κάνει αλλαγές
στον GENERIC ή έχετε εγκαταστήσει
προσαρμοσμένο πυρήνα, το freebsd-update δεν θα
ολοκληρώσει τις αλλαγές. Θα αποτύχει στην πρώτη περίπτωση, και
θα εμφανίσει ένα μήνυμα λάθους στη δεύτερη.Αναβαθμίσεις σε Μικρές και Μεγάλες ΕκδόσειςΗ διαδικασία αυτή θα απομακρύνει τα παλιά αρχεία αντικειμενικού
κώδικα (object files) καθώς και τις παλιές βιβλιοθήκες, κάνοντας
τις περισσότερες εφαρμογές τρίτων κατασκευαστών να μη λειτουργούν.
Σας συνιστούμε είτε να απεγκαταστήσετε όλα τα εγκατεστημένα ports και
να τα εγκαταστήσετε ξανά, ή να τα αναβαθμίσετε αργότερα,
χρησιμοποιώντας το βοηθητικό πρόγραμμα
ports-mgmt/portupgrade.
Οι περισσότεροι χρήστες θα θέλουν να κάνουν μια δοκιμαστική
μεταγλώττιση χρησιμοποιώντας την ακόλουθη εντολή:&prompt.root; portupgrade -afΜε αυτό τον τρόπο εξασφαλίζεται ότι τα πάντα θα επανεγκατασταθούν
σωστά. Σημειώστε ότι αν θέσετε την μεταβλητή περιβάλλοντος
BATCH στην τιμή yes, όλες οι
πιθανές ερωτήσεις που θα εμφανιστούν κατά τη διαδικασία, θα
απαντηθούν αυτόματα με yes. Έτσι δεν υπάρχει πλέον
ανάγκη για παρέμβαση του χρήστη κατά τη διάρκεια της διαδικασίας
μεταγλώττισης.Είναι δυνατές οι αναβαθμίσεις τόσο σε μικρές όσο και σε μεγάλες
εκδόσεις, δίνοντας στην εντολή freebsd-update τον
επιθυμητό αριθμό έκδοσης. Για παράδειγμα, η ακόλουθη εντολή θα
αναβαθμίσει το σύστημα σε &os; 6.3:&prompt.root; freebsd-update -r 6.3-RELEASE upgradeΜετά τη λήψη της εντολής, το
freebsd-update θα αξιολογήσει την κατάσταση του
συστήματος και του αρχείου ρυθμίσεων του, σε μια απόπειρα να μαζέψει
τις απαραίτητες πληροφορίες για την αναβάθμιση του συστήματος.
Οι πληροφορίες που ανιχνεύθηκαν θα εμφανιστούν στην οθόνη με τη μορφή
μιας λίστας εγκατεστημένων προγραμμάτων. Για παράδειγμα:Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 6.3-BETA1 from update1.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/base world/info world/lib32 world/manpages
The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs
Does this look reasonable (y/n)? yΣτο σημείο αυτό, το freebsd-update θα
κατεβάσει όλα τα αρχεία που απαιτούνται για την αναβάθμιση. Σε
μερικές περιπτώσεις, ο χρήστης θα κληθεί να απαντήσει σε ερωτήσεις
σχετικά με το τι θα εγκατασταθεί ή πως πρέπει να προχωρήσει η
διαδικασία.Αφού μεταφορτωθούν όλα τα patches στο τοπικό σύστημα, θα γίνει
και η εφαρμογή τους. Η διαδικασία αυτή ίσως πάρει λίγο χρόνο,
ανάλογα με την ταχύτητα και το φορτίο του μηχανήματος. Έπειτα θα
γίνει η συγχώνευση των αρχείων ρυθμίσεων. Αυτό το μέρος της
διαδικασίας απαιτεί παρέμβαση του χρήστη, καθώς σε κάποια αρχεία θα
χρειαστεί η συγχώνευση να γίνει χειροκίνητα με τη βοήθεια κάποιου
συντάκτη κειμένου. Ο χρήστης θα ενημερώνεται για το αποτέλεσμα κάθε
επιτυχημένης συγχώνευσης καθώς εξελίσσεται η διαδικασία. Σε
περίπτωση αποτυχημένης συγχώνευσης (ή αγνόησης της), η διαδικασία
αναβάθμισης θα διακοπεί. Ενδεχομένως να θέλετε να κρατήσετε αντίγραφο
ασφαλείας του καταλόγου /etc
και να συγχωνεύσετε αργότερα (χειροκίνητα) κάποια σημαντικά αρχεία,
όπως το master.passwd ή το
group.Στο σημείο αυτό δεν έχει γίνει ακόμα καμιά αλλαγή στο σύστημα,
καθώς όλη η διαδικασία της αναβάθμισης και συγχώνευσης γίνεται σε
διαφορετικό κατάλογο. Όταν εφαρμοστούν επιτυχώς όλα τα patches
και ολοκληρωθεί με επιτυχία η διαδικασία της συγχώνευσης όλων των
αρχείων ρύθμισης, ο χρήστης θα πρέπει να επιβεβαιώσει την τελική
εγκατάσταση.Με το τέλος αυτής τη διαδικασίας, η αναβάθμιση μπορεί να
οριστικοποιηθεί στο δίσκο, με τη χρήση της ακόλουθης εντολής:&prompt.root; freebsd-update installΣτην πρώτη φάση, θα αλλαχθεί ο πυρήνας και τα σχετικά αρθρώματα.
Στο σημείο αυτό, θα πρέπει να γίνει επανεκκίνηση του μηχανήματος.
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να επανεκκινήσετε
το μηχάνημα ώστε να φορτωθεί στη μνήμη ο νέος πυρήνας:&prompt.root; shutdown -r nowΜόλις το σύστημα επανέλθει σε λειτουργία, θα πρέπει να εκτελέσετε
ξανά το freebsd-update. Η προηγούμενη λειτουργία
έχει αποθηκευθεί, και έτσι το freebsd-update δεν θα
ξεκινήσει από την αρχή, αλλά θα απομακρύνει όλες τις παλιές
κοινόχρηστες βιβλιοθήκες και τα αρχεία αντικειμενικού κώδικα. Για να
συνεχίσετε σε αυτό το στάδιο, δώστε την ακόλουθη εντολή:&prompt.root; freebsd-update installΑνάλογα με το αν υπήρξαν αλλαγές στους αριθμούς εκδόσεων των
βιβλιοθηκών, ίσως να υπάρχουν μόνο δύο φάσεις εγκατάστασης αντί για
τρεις.Όλο το λογισμικό τρίτου κατασκευαστή θα πρέπει τώρα να
μεταγλωττιστεί και να επανεγκατασταθεί από την αρχή. Αυτό απαιτείται
καθώς το εγκατεστημένο λογισμικό ίσως εξαρτάται από βιβλιοθήκες οι
οποίες αφαιρέθηκαν κατά τη διαδικασία της αναβάθμισης. Μπορείτε να
χρησιμοποιήσετε την εντολή
ports-mgmt/portupgrade
για να αυτοματοποιήσετε αυτή τη διαδικασία. Για να ξεκινήσετε, δώστε
τις παρακάτω εντολές:&prompt.root; portupgrade -f ruby
&prompt.root; rm /var/db/pkg/pkgdb.db
&prompt.root; portupgrade -f ruby18-bdb
&prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
&prompt.root; portupgrade -afΜόλις ολοκληρωθεί το παραπάνω, ολοκληρώστε τη διαδικασία
αναβάθμισης με μια τελευταία κλήση της εντολής
freebsd-update. Δώστε την παρακάτω εντολή για να
ολοκληρώσετε οτιδήποτε έχει απομείνει στη διαδικασία
αναβάθμισης:&prompt.root; freebsd-update installΕπανεκκινήστε το μηχάνημα σας στην νέα έκδοση του &os;.
Η διαδικασία έχει ολοκληρωθεί.Σύγκριση Κατάστασης του ΣυστήματοςΤο βοηθητικό πρόγραμμα freebsd-update μπορεί να
χρησιμοποιηθεί για να ελέγξετε την κατάσταση της εγκατεστημένης
έκδοσης του &os; σε σχέση με μια γνωστή και σωστή εγκατάσταση.
Η επιλογή αυτή συγκρίνει και αξιολογεί την τρέχουσα έκδοση των
προγραμμάτων συστήματος, των βιβλιοθηκών και των αρχείων ρύθμισης.
Για να ξεκινήσετε τη σύγκριση, δώστε την ακόλουθη εντολή:&prompt.root; freebsd-update IDS >> outfile.idsΑν και το όνομα της εντολής είναι IDS, δεν
θα πρέπει σε καμιά περίπτωση να θεωρηθεί υποκατάστατο ενός
συστήματος ανίχνευσης εισβολέα (intrusion detection system) όπως
είναι για παράδειγμα το
security/snort.
Καθώς το freebsd-update αποθηκεύει τα δεδομένα
του στο δίσκο, υπάρχει πάντα η πιθανότητα να έχει γίνει αλλοίωση
τους. Αν και η πιθανότητα αυτή μπορεί να μειωθεί χρησιμοποιώντας
τη ρύθμιση kern.securelevel και αποθηκεύοντας
τα δεδομένα της εντολής freebsd-update σε ένα
σύστημα αρχείων μόνο για ανάγνωση, μια ακόμα καλύτερη λύση θα ήταν
να συγκρίνετε το σύστημα με κάποιο δίσκο που θεωρείτε σίγουρα
- ασφαλή. Για παράδειγμα, με ένα δίσκο DVD ή με
- ένα εξωτερικό δίσκο USB που φυλάσσετε σε ασφαλή
- τοποθεσία.
+ ασφαλή. Μπορείτε να χρησιμοποιήσετε ένα δίσκο
+ DVD ή ένα εξωτερικό δίσκο USB
+ που φυλάσσετε σε ασφαλή τοποθεσία.
- Θα γίνει τώρα μια επιθεώρηση του συστήματος και θα δημιουργηθεί
+ Θα γίνει τώρα μια επιθεώρηση του συστήματος και θα εκτυπωθεί
μια λίστα από αρχεία και τιμές hash του τύπου &man.sha256.1;,
τόσο για το εγκατεστημένο όσο και για το γνωστό σύστημα. Επειδή
πρόκειται για μεγάλη λίστα, την ανακατευθύνουμε στο αρχείο
outfile.ids. Στην οθόνη το κείμενο θα κυλούσε
πολύ γρήγορα, και σύντομα θα γέμιζε την προσωρινή μνήμη απεικόνισης
της κονσόλας.Οι γραμμές αυτές έχουν γενικά μεγάλο μήκος, αλλά είναι εύκολο
να επεξεργαστούμε την έξοδο. Για παράδειγμα, για να δείτε μια λίστα
όλων των αρχείων που διαφέρουν από αυτά της επίσημης έκδοσης, δώστε
την ακόλουθη εντολή:
- &prompt.root; cat update.ids | awk '{ print $1 }' | more
+ &prompt.root; cat outfile.ids | awk '{ print $1 }' | more
/etc/master.passwd
/etc/motd
/etc/passwd
/etc/pf.confΤα παραπάνω είναι μόνο ένα μέρος της εξόδου, υπάρχουν ακόμα
πολλά διαφορετικά αρχεία. Κάποια από αυτά τα αρχεία είναι φυσιολογικό
να έχουν τροποποιηθεί. Για παράδειγμα, το
/etc/passwd έχει τροποποιηθεί, καθώς έχουν
προστεθεί χρήστες στο σύστημα. Σε μερικές περιπτώσεις, μπορεί να
υπάρχουν και άλλα αρχεία, όπως π.χ. αρθρώματα πυρήνα τα οποία
διαφέρουν αφού έχουν ενημερωθεί μέσω της
freebsd-update. Για να εξαιρέσετε συγκεκριμένα
αρχεία ή καταλόγους, προσθέστε τα στην επιλογή
IDSIgnorePaths στο αρχείο ρυθμίσεων
/etc/freebsd-update.conf.Εκτός από την χρήση που αναφέραμε προηγουμένως, το σύστημα αυτό
μπορεί να χρησιμοποιηθεί και ως τμήμα μιας λεπτομερούς διαδικασίας
αναβάθμισης.Portsnap: Ένα Εργαλείο Ενημέρωσης της Συλλογής των PortsΤο βασικό σύστημα του &os; περιλαμβάνει επίσης ένα βοηθητικό
πρόγραμμα για την ενημέρωση της Συλλογής των Ports. Πρόκειται για το
&man.portsnap.8;. Όταν το εκτελέσετε, θα συνδεθεί σε ένα απομακρυσμένο
διακομιστή, θα επαληθεύσει το κλειδί του πηγαίου κώδικα, και θα
κατεβάσει ένα νέο αντίγραφο της Συλλογής των Ports. Το κλειδί
χρησιμοποιείται για να επαληθεύσει την ακεραιότητα όλων των αρχείων
που μεταφορτώνονται, εξασφαλίζοντας ότι δεν έχουν αλλοιωθεί κατά
την μεταφορά. Για να κατεβάσετε τα τελευταία αρχεία της Συλλογής των
Ports, εκτελέστε την ακόλουθη εντολή:&prompt.root; portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
Fetching snapshot tag from portsnap1.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
Applying patches... done.
Fetching 133 new ports or files... done.Το παραπάνω παράδειγμα δείχνει ότι το &man.portsnap.8;
βρήκε και επαλήθευσε αρκετά patches τα οποία πρέπει να εφαρμοστούν
στο υπάρχον δέντρο των ports. Αυτό δείχνει επίσης ότι το πρόγραμμα
έχει εκτελεστεί κατά το παρελθόν. Αν αυτή ήταν η πρώτη φορά που
εκτελούνταν, θα γίνονταν απλώς κατέβασμα της συλλογής.Όταν το &man.portsnap.8; εκτελέσει επιτυχώς της λειτουργία
fetch, η Συλλογή των Ports και τα
αντίστοιχα patches έχουν αποθηκευθεί στο τοπικό σύστημα και έχει γίνει
η επαλήθευση τους. Τα ενημερωμένα αρχεία μπορούν να εγκατασταθούν
γράφοντας:&prompt.root; portsnap extract
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/GIDs
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
/usr/ports/Mk/bsd.autotools.mk
/usr/ports/Mk/bsd.cmake.mk
...Η διαδικασία έχει πλέον ολοκληρωθεί, και μπορείτε να εγκαταστήσετε
ή να αναβαθμίσετε εφαρμογές χρησιμοποιώντας την ενημερωμένη Συλλογή των
Ports.