12.6. Ρυθμίζοντας Το Πρόγραμμα cron

Contributed by Tom Rhodes.

Ένα απο τα πιο χρήσιμα βοηθητικά προγράμματα στο FreeBSD είναι το cron(8). Το πρόγραμμα cron τρέχει στο παρασκήνιο και συνεχώς ελέγχει το αρχείο /etc/crontab. Το cron ελέγχει επίσης τον κατάλογο /var/cron/tabs, αναζητώντας καινούργια αρχεία crontab. Τα αρχεία crontab έχουν αποθηκευμένες πληροφορίες για συγκεκριμένες διαδικασίες τις οποίες το cron πρέπει να εκτελέσει σε συγκεκριμένο χρόνο.

Το cron χρησιμοποιεί δύο διαφορετικούς τύπους αρχείων ρυθμίσεων, το crontab του συστήματος και το crontab των χρηστών. Η μόνη διαφορά ανάμεσα στους δύο αυτούς τύπους είναι το έκτο πεδίο. Στο crontab του συστήματος, το έκτο πεδίο είναι το όνομα του χρήστη με του οποίου θα εκτελεστεί η εντολή. Αυτό δίνει την δυνατότητα στο crontab του συστήματος να εκτελεί εντολές σαν οποιοδήποτε χρήστης. Στο crontab των χρηστών, το έκτο πεδίο είναι η εντολή που πρέπει να εκτελεστεί, και όλες οι εντολές εκτελούνται στο όνομα του χρήστη που δημιούργησε το crontab; αυτό είναι ένα σημαντικό χαρακτηριστικό ασφαλείας.

Σημείωση:

Τα crontabs των χρηστών επιτρέπουν σε μεμονωμένους χρήστες να προγραμματίσουν εργρασίες χωρίς την ανάγκη root δικαιωμάτον. Οι εντολές μέσα στο crontab ενός χρήστη τρέχουν με τα δικαιώματα του χρήστη του οποίου ανήκει το crontab.

Ο χρήστης root μπορεί να έχει ένα crontab χρήστη ακριβώς όπως κάθε χρήστης. Αυτό είναι διαφορετικό απο το /etc/crontab (το crontab του συστήματος). Λόγο του crontab του συστήματος, δεν υπάρχει συνήθως καμία ανάγκη για την δημιουργία ενός ξεχωριστού crontab για τον χρήστη root.

Ας ρίξουμε μια ματία στο αρχείο /etc/crontab (το crontab του συστήματος):

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
# 1
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 2
HOME=/var/log
#
#
#minute	hour	mday	month	wday	who	command 3
#
#
*/5	*	*	*	*	root	/usr/libexec/atrun 4

1

Όπως στα περισσότερα αρχεία ρυθμίσεων στο FreeBSD, ο χαρακτήρας # παριστάνει ένα σχόλιο. Ένα σχόλιο μπορεί να τοποθετηθεί μέσα στο αρχείο σαν υπενθύμιση για το τι πραγματοποιεί και γιατί μία ενέργεια. Τα σχόλια δεν μπορούν να είναι στην ίδια γραμμή με μία εντολή γιατί αλλιώς θα ερμηνευτούν σαν κομμάτι της εντολής; πρέπει να είναι σε μία νέα γραμμή. Οι κενές γραμμές αγνοούνται.

2

Καταρχήν, πρέπει να καθοριστεί το περιβάλλον. Ο χαρακτήρας ίσον (=) χρησιμοποιείτε για να καθορίσει τις ρυθμίσεις του περιβάλλοντος, όπως σε αυτό το παράδειγμα που χρησιμοποιούνται οι μεταβλητές SHELL, PATH, και HOME. Αν η γραμμή του κέλυφους παραμεληθεί, το cron θα χρησιμοποιήσει την προεπιλεγμένη, οι οποία είναι η sh. Αν η μεταβλητή PATH παραμεληθεί, δεν θα χρησιμοποιηθεί προεπιλεγμένη και η τοποθεσίες των αρχείων θα πρέπει να καθοριστούν με ακρίβεια. Αν η HOME παραμεληθεί, το cron θα χρησιμοποιήσει τον κεντρικό κατάλογο των εκάστοτε χρηστών.

3

Η γραμμή αυτή καθορίζει συνολικά επτά πεδία. Τα πεδία αυτά είναι τα minute, hour, mday, month, wday, who, και command. Αυτά είναι απο μόνα τους επεξηγηματικά. Το πεδίο minute είναι ο χρόνος σε λεπτά τον οποίον η εντολή θα εκτελεστεί. Το πεδίο hour είναι παρόμοιο με το πεδίο minute, απλά είναι σε ώρες. Το πεδίο mday καθορίζει την ημέρα του μήνα. Το πεδίο month είναι παρόμοιο με το πεδίο hour και το πεδίο minute, υποδεικνύοντας τον μήνα. Το πεδίο wday καθορίζει την ημέρα της εβδομάδας. Όλα αυτά τα πεδία πρέπει να έχουν αριθμητικές τιμές, και να ακολουθούν το είκοσι-τετράωρο ρολόι. Το πεδίο who είναι ιδιαίτερο, και υπάρχει μόνο μέσα στο αρχείο /etc/crontab. Το πεδίο αυτό καθορίζει σαν ποιός χρήστης θα τρέξει την εντολή. Όταν ένας χρήστης εγκαθιστά το crontab αρχείο του, δεν θα έχει το πεδίο αυτό διαθέσιμο. Τέλος, θα ακολουθήσει η επιλογή command. Αυτό είναι το τελευταίο πεδίο, έτσι και λογικά υποδεικνύει την εντολή που θα εκτελεστεί.

4

Η τελευταία αυτή γραμμή θα καθορίσει τα μεγέθοι που συζητήθηκαν παραπάνω. Προσέξτε εδώ ότι έχουμε έναν ορισμό */5, ακολουθούμενο απο αρκετούς χαρακτήρες *. Οι χαρακτήρες * σημαίνουν «πρώτο-τελευταίο», και μπορούν να ερμηνευθούν σαν κάθε φορά. Έτσι, κρίνοντας απο αυτή την γραμμή, είναι προφανές ότι η εντολή atrun επικαλείται απο τον χρήστη root κάθε πέντε λεπτά ανεξάρτητα απο την ημέρα και τον μήνα. Για περισσότερες πληροφορίες σχετικά με την εντολή atrun, κοιτάξτε την σελίδα βοηθείας atrun(8).

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

Αυτές είναι οι βασικές ρυθμίσεις για κάθε αρχείο crontab, ωστόσο υπάρχει και κάτι διαφορετικό. Το πεδίο έξι, όπου και καθορίζουμε το όνομα χρήστη, υπάρχει μόνο στο αρχείο του συστήματος /etc/crontab. Το πεδίο αυτό πρέπει να παραλειφθεί για κάθε crontab αρχείο χρήστη.

12.6.1. Εγκαθιστώντας Ένα Crontab

Σημαντικό:

Δεν θα πρέπει να χρησιμοποιήσετε την διαδικασία που περιγράφεται εδώ για την διόρθωση/εγκατάσταση του crontab του συστήματος. Απλά χρησιμοποιήστε τον αγαπημένο σας κειμενογράφο: το cron θα εντοπίσει ότι το αρχείο έχει τροποποιηθεί και θα αρχίσει άμεσα να χρησιμοποιεί την ανανεωμένη έκδοση του. Δείτε αυτή την εγγραφή του FAQ για περισσότερες πληροφορίες.

Για να εγκαταστήσετε ένα νέο crontab χρήστη, πρώτα χρησιμοποιήστε τον αγαπημένο σας κειμενογράφο για να δημιουργήσετε ένα αρχείο με το απαιτούμενο τύπο, και τότε χρησιμοποιήστε το crontab. Η πιο κοινή χρήση του είναι:

% crontab crontab-file

Στο παράδειγμα αυτό, το αρχείο crontab-file είναι το όνομα του αρχείου crontab που είχε δημιουργηθεί προηγουμένως.

Υπάρχει επίσης μία επιλογή για να απαριθμήσετε τα εγκατεστημένα αρχεία crontab: απλά εισάγετε την επιλογή -l στην εντολή crontab και ελέγξτε το αποτέλεσμα.

Για τους χρήστες που θέλουν να αρχίσουν το crontab αρχείο τους απο την αρχή, χωρίς την χρήση προτύπου, μπορούν να χρησιμοποιήσουν την εντολή crontab -e. Αυτή η εντολή θα ξεκινήσει τον κειμενογράφο με ένα κενό αρχείο. Όταν το αρχείο αποθηκευθεί, θα εγκατασταθεί αυτόματα απο την εντολή crontab.

Αν αργότερα θέλετε να διαγράψετε το crontab αρχείο χρήστη τελείως, χρησιμοποιήστε την εντολή crontab μαζί με την επιλογή -r.

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

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

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