12.7. Χρησιμοποιώντας Το Σύστημα rc Στο FreeBSD

Contributed by Tom Rhodes.

Το 2002 το FreeBSD ενσωμάτωσε το σύστημα rc.d του NetBSD για την εκκίνηση του συστήματος. Οι χρήστες θα πρέπει να έχουν αντιληφθεί τα αρχεία που βρίσκονται στον κατάλογο /etc/rc.d. Πολλά απο αυτά τα αρχεία είναι για τις βασικές υπηρεσίες και μπορούν να ελεγθούν με τις επιλογές start, stop, και restart. Για παράδειγμα, το sshd(8) μπορεί να ελεγθεί χρησιμοποιώντας την εξής εντολή:

# /etc/rc.d/sshd restart

Η διαδικασία αυτή είναι παρόμοια και για τις υπόλοιπες υπηρεσίες. Φυσικά, οι υπηρεσίες αυτές είναι συνήθως αυτόματα εκκινήσιμες κατα την εκκίνηση του συστήματος όπως και καθορίζεται στο rc.conf(5). Για παράδειγμα, ενεργοποιώντας τον δαίμονα Network Address Translation στην εκκίνηση είναι τόσο απλό όσο κάνοντας προσθήκη της ακόλουθης γραμμής στο /etc/rc.conf:

natd_enable="YES"

Αν η επιλογή natd_enable="NO" είναι ήδη παρούσα, τότε απλά αλλάζετε την επιλογή NO σε YES. Τα σενάρια rc θα φορτώσουν αυτόματα οποιαδήποτε εξαρτώμενη υπηρεσία κατά την διάρκεια της επόμενης εκκίνησης, όπως και περιγράφεται παρακάτω.

Μιας και το σύστημα rc.d είναι κυρίως για την εκκίνηση και τον τερματισμό υπηρεσιών κατα την εκκίνηση και τον τερματισμό του συστήματος αντίστοιχα, οι προκαθορισμένες επιλογές start, stop και restart θα πραγματοποιήσουν τις αντίστοιχες ενέργειες αν η κατάλληλες μεταβλητές είναι καθορισμένες στο /etc/rc.conf. Για παράδειγμα η παραπάνω εντολή sshd restart θα δουλέψει μόνο αν η μεταβλητή sshd_enable έχει τεθεί σε YES μέσα στο /etc/rc.conf. Για να εκτελέσετε τις επιλογές start, stop ή restart μιας υπηρεσίας ανεξάρτητα απο τις ρυθμίσεις της στο /etc/rc.conf, η εντολή πρέπει να έχει χαρακτηριστεί με «one». Για παράδειγμα για την επανεκκίνηση του sshd ανεξάρτητα απο τις τρέχουσες ρυθμίσεις στο /etc/rc.conf, εκτελείτε την ακόλουθη εντολή:

# /etc/rc.d/sshd onerestart

Είναι εύκολο να ελέγξετε αν η υπηρεσία είναι ενεργοποιημένη στο /etc/rc.conf τρέχοντας το κατάλληλο σενάριο rc.d με την παράμετρο rcvar. Κατά συνέπεια, ένας διαχειριστής μπορεί να ελέγξει αν το sshd είναι όντως ενεργοποιημένο στο /etc/rc.conf εκτελώντας:

# /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YES

Σημείωση:

Η δεύτερη γραμμή (# sshd) είναι η έξοδος της εντολής sshd, και όχι η κονσολά του χρήστη root.

Για να ελέγξετε αν μια υπηρεσία τρέχει, η επιλογή status είναι διαθέσιμη. Για παράδειγμα για να επιβεβαιώστε ότι η υπηρεσία sshd τρέχει:

# /etc/rc.d/sshd status sshd is
      running as pid 433.

Σε πολλές περιπτώσεις είναι δυνατόν το reload μίας υπηρεσίας. Αυτό θα στείλει ένα σήμα στην υπηρεσία, επιβάλλοντας της να ξαναφορτώσει τα αρχεία ρυθμίσεων της. Στην πραγματικότητα αυτό σημαίνει ότι θα στείλει ένα σήμα SIGHUP στην υπηρεσία. Η υποστήριξη για αυτό το χαρακτηριστικό δεν παρέχεται σε κάθε υπηρεσία.

Το σύστημα rc.d δεν χρησιμοποιείτε μόνο για τις υπηρεσίες δικτύου, αλλά επίσης συμβάλει και κατα την εκκίνηση του συστήματος. Για παράδειγμα, σκεφτείτε το αρχείο bgfsck. Όταν ένα σενάριο εκτελείτε, θα εκτυπώνει το ακόλουθο μήνυμα:

Starting background file system checks in 60 seconds.

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

Πολλές υπηρεσίες εξαρτώνται από άλλες υπηρεσίες για να τα καταφέρουν να λειτουργήσουν σωστά. Για παράδειγμα, η υπηρεσία NIS και άλλες βασισμένες στο RPC υπηρεσίες θα αποτύχουν να εκκινηθούν αν η υπηρεσία rpcbind (portmapper) δεν έχει ήδη εκκινηθεί. Για να λύθει το πρόβλημα αυτό, υπάρχουν πληροφορίες για τις εξαρτήσεις και άλλα μετα-δεδομένα μέσα στα σχόλια στην αρχή κάθε σεναρίου. Το πρόγραμμα rcorder(8) χρησιμοποιείτε για την ανάλυση των σχολίων αυτών κατά την εκκίνηση του συστήματος για να καθορίστει με ποιά σειρά θα πρέπει να εκκινηθούν οι υπηρεσίες ώστε να εκπληρωθούν οι εξαρτήσεις. Οι επόμενες προτάσεις μπορούν να περιληφθούν μέσα σε κάθε αρχείο εκκίνησης:

Χρησιμοποιώντας την μέθοδο αυτή, οι διαχειριστές μπορούν εύκολα να ελέγξουν τις υπηρεσίες του συστήματος χωρίς τα δυσνόητα «runlevels» όπως σε μερικά άλλα λειτουργικά συστήματα UNIX®.

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

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.

Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.