logrotate – περιστρέφει, συμπιέζει και στέλνει μέσω email τα αρχεία καταγραφής του συστήματος
ΣΥΝΤΑΞΗ
logrotate [--force] [--debug] [--state file] [--skip-state-lock] [--wait-for-state-lock] [--verbose] [--log file] [--mail command] config_file [config_file2 ...]
ΠΕΡΙΓΡΑΦΗ
Το logrotate έχει σχεδιαστεί για να διευκολύνει τη διαχείριση συστημάτων που δημιουργούν μεγάλο αριθμό αρχείων καταγραφής.
Επιτρέπει την αυτόματη περιστροφή, συμπίεση, αφαίρεση και αποστολή μέσω email των αρχείων καταγραφής. Κάθε αρχείο καταγραφής μπορεί
να διαχειρίζεται καθημερινά, εβδομαδιαία, μηνιαία ή όταν φτάνει σε ένα πολύ μεγάλο μέγεθος.
Συνήθως, το logrotate εκτελείται ως μια καθημερινή εργασία cron. Δεν θα τροποποιήσει ένα αρχείο καταγραφής περισσότερες από μία φορές την ημέρα, εκτός εάν το κριτήριο για αυτό το αρχείο καταγραφής βασίζεται στο μέγεθος του αρχείου καταγραφής και το logrotate εκτελείται περισσότερες από μία φορές την ημέρα, ή εκτός εάν χρησιμοποιηθεί η επιλογή -f ή --force.
Μπορεί να δοθεί οποιοσδήποτε αριθμός αρχείων διαμόρφωσης στη γραμμή εντολών. Τα μεταγενέστερα αρχεία διαμόρφωσης μπορούν να αντικαταστήσουν τις
επιλογές που δίνονται στα προηγούμενα αρχεία, επομένως η σειρά με την οποία παρατίθενται τα αρχεία διαμόρφωσης του logrotate είναι
σημαντική. Συνήθως, θα πρέπει να χρησιμοποιείται ένα μόνο αρχείο διαμόρφωσης που περιλαμβάνει οποιαδήποτε άλλα αρχεία διαμόρφωσης που απαιτούνται. Δείτε παρακάτω για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης της οδηγίας include για την επίτευξη αυτού. Εάν δοθεί ένας κατάλογος στη γραμμή εντολών, κάθε αρχείο σε αυτόν τον κατάλογο χρησιμοποιείται ως αρχείο διαμόρφωσης.
Εάν δεν δοθούν ορίσματα γραμμής εντολών, το logrotate θα εκτυπώσει πληροφορίες έκδοσης και πνευματικών δικαιωμάτων, καθώς και μια σύντομη περίληψη χρήσης. Εάν προκύψουν σφάλματα κατά την περιστροφή των αρχείων καταγραφής, το logrotate θα τερματιστεί με μη μηδενική κατάσταση, αν και το αρχείο κατάστασης θα ενημερωθεί.
ΕΠΙΛΟΓΕΣ
-f, --force
Λέει στο logrotate να αναγκάσει την περιστροφή, ακόμη και αν δεν νομίζει ότι αυτό είναι απαραίτητο. Μερικές φορές αυτό είναι χρήσιμο μετά την προσθήκη νέων εγγραφών σε ένα αρχείο διαμόρφωσης logrotate ή εάν τα παλιά αρχεία καταγραφής έχουν διαγραφεί χειροκίνητα, καθώς τα νέα αρχεία θα δημιουργηθούν και η καταγραφή θα συνεχιστεί σωστά.
-d, --debug
Ενεργοποιεί τη λειτουργία εντοπισμού σφαλμάτων, η οποία σημαίνει ότι δεν γίνονται αλλαγές στα αρχεία καταγραφής και το αρχείο κατάστασης του logrotate δεν ενημερώνεται. Μόνο τα μηνύματα εντοπισμού σφαλμάτων εκτυπώνονται.
-s, --state statefile
Λέει στο logrotate να χρησιμοποιήσει ένα εναλλακτικό αρχείο κατάστασης. Αυτό είναι χρήσιμο εάν το logrotate εκτελείται ως διαφορετικός χρήστης για διάφορα σύνολα αρχείων καταγραφής. Για να αποφευχθεί η παράλληλη εκτέλεση, το logrotate αποκτά από προεπιλογή μια κλειδαριά στο αρχείο κατάστασης, εάν δεν μπορεί να αποκτηθεί η κλειδαριά, το logrotate θα τερματιστεί με τιμή 3. Το προεπιλεγμένο αρχείο κατάστασης είναι /var/lib/logrotate/status. Εάν δοθεί το /dev/null ως αρχείο κατάστασης, το logrotate δεν θα επιχειρήσει να κλειδώσει ή να γράψει το αρχείο κατάστασης.
--skip-state-lock
Μην κλειδώνετε το αρχείο κατάστασης, για παράδειγμα, εάν η κλειδωμα δεν υποστηρίζεται ή απαγορεύεται.
--wait-for-state-lock
Περιμένετε μέχρι να απελευθερωθεί η κλειδαριά στο αρχείο κατάστασης από μια άλλη διαδικασία logrotate. Αυτή η επιλογή μπορεί να προκαλέσει την αόριστη αναμονή του logrotate. Χρησιμοποιήστε το με προσοχή.
-v, --verbose
Ενεργοποιεί τη λειτουργία λεπτομερούς απεικόνισης, για παράδειγμα, για την εμφάνιση μηνυμάτων κατά τη διάρκεια της περιστροφής.
-l, --log file
Λέει στο logrotate να καταγράψει την λεπτομερή έξοδο στο αρχείο log. Η λεπτομερής έξοδος που καταγράφεται σε αυτό το αρχείο είναι η ίδια με αυτήν που εμφανίζεται όταν εκτελείται το logrotate με την επιλογή -v. Το αρχείο καταγραφής αντικαθίσταται σε κάθε εκτέλεση του logrotate.
-m, --mail command
Λέει στο logrotate ποια εντολή να χρησιμοποιήσει για την αποστολή των αρχείων καταγραφής μέσω email. Αυτή η εντολή θα πρέπει να δέχεται τα ακόλουθα ορίσματα:
1. το θέμα του μηνύματος που δίνεται με την επιλογή '-s subject'
2. τον παραλήπτη.
Η εντολή θα πρέπει στη συνέχεια να διαβάσει ένα μήνυμα από την τυπική είσοδο και να το στείλει μέσω email στον παραλήπτη. Η προεπιλεγμένη εντολή email είναι /usr/bin/mail.
--usage
Εμφανίζει ένα σύντομο μήνυμα χρήσης.
-?, --help
Εμφανίζει ένα μήνυμα βοήθειας.
--version
Εμφανίζει πληροφορίες έκδοσης.
ΑΡΧΕΙΟ ΔΙΑΜΟΡΦΩΣΗΣ
Το logrotate διαβάζει όλες τις πληροφορίες σχετικά με τα αρχεία καταγραφής που πρέπει να διαχειρίζεται από μια σειρά αρχείων διαμόρφωσης που καθορίζονται στη γραμμή εντολών. Κάθε αρχείο διαμόρφωσης μπορεί να ορίσει καθολικές επιλογές (οι τοπικές ορισμοί αντικαθιστούν τις καθολικές, και οι μεταγενέστεροι ορισμοί αντικαθιστούν τους προηγούμενους). Οι καθολικές επιλογές δεν επηρεάζουν τις προηγούμενες οδηγίες include. Ένα απλό αρχείο διαμόρφωσης έχει ως εξής:
# δείγμα αρχείου διαμόρφωσης logrotate
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail _
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
sharedscripts
postrotate
kill -HUP $(cat /var/run/inn.pid)
endscript
nocompress
}
~/log/*.log {}
Οι πρώτες γραμμές ορίζουν καθολικές επιλογές. στο παράδειγμα, τα αρχεία καταγραφής συμπιέζονται μετά την περιστροφή τους. Σημειώστε ότι τα σχόλια μπορούν να εμφανίζονται οπουδήποτε στο αρχείο διαμόρφωσης, εφόσον ο πρώτος μη-κενός χαρακτήρας της γραμμής είναι #.
Οι τιμές διαχωρίζονται από τις οδηγίες με κενό διάστημα ή μια προαιρετική "=". Οι αριθμοί πρέπει να καθορίζονται σε μια μορφή που να γίνεται κατανοητή από τη συνάρτηση strtoul(3).
Η επόμενη ενότητα του αρχείου διαμόρφωσης καθορίζει τον τρόπο διαχείρισης του αρχείου καταγραφής /var/log/messages. Το αρχείο καταγραφής θα υποστεί πέντε περιστροφές εβδομαδιαίως πριν διαγραφεί. Αφού περιστραφεί το αρχείο καταγραφής (αλλά πριν συμπιεστεί η παλιά έκδοση του αρχείου καταγραφής), θα εκτελεστεί η εντολή /usr/bin/killall -HUP syslogd.
Η επόμενη ενότητα ορίζει τις παραμέτρους τόσο για τα /var/log/httpd/access.log όσο και για τα /var/log/httpd/error.log. Κάθε ένα περιστρέφεται κάθε φορά που αυξάνεται κατά περισσότερο από 100 χιλιοστά του megabyte, και τα παλιά αρχεία καταγραφής αποστέλλονται (σε μη συμπιεσμένη μορφή) στον _ μετά από 5 περιστροφές, αντί να διαγράφονται. Η επιλογή sharedscripts σημαίνει ότι το σενάριο postrotate θα εκτελείται μόνο μία φορά για αυτήν την ενότητα, και όχι μία φορά για κάθε αρχείο καταγραφής που περιστρέφεται. Σημειώστε ότι τα ονόματα αρχείων καταγραφής μπορούν να περικλείονται σε εισαγωγικά (και ότι τα εισαγωγικά απαιτούνται εάν το όνομα περιέχει κενά). Ισχύουν οι κανονικοί κανόνες εισαγωγικών του shell, με τους χαρακτήρες ', ", και \ που υποστηρίζονται.
Η επόμενη ενότητα ορίζει τις παραμέτρους για όλα τα αρχεία στο /var/log/news. Κάθε αρχείο περιστρέφεται σε μηνιαία βάση.
Η τελευταία ενότητα χρησιμοποιεί την επέκταση tilde για να περιστρέψει αρχεία καταγραφής στον οικείο κατάλογο του τρέχοντος χρήστη. Αυτό είναι διαθέσιμο μόνο εάν η βιβλιοθήκη glob σας υποστηρίζει την επέκταση tilde. Το GNU glob υποστηρίζει αυτό.
Παρακαλούμε, χρησιμοποιήστε τις wildcard με προσοχή. Εάν καθορίσετε το *, το logrotate θα περιστρέψει όλα τα αρχεία, συμπεριλαμβανομένων των προηγουμένως περιστρεφόμενων. Ένας τρόπος για να το αποφύγετε είναι να χρησιμοποιήσετε την οδηγία olddir ή μια πιο ακριβή wildcard (όπως το *.log).
Παρακαλούμε, σημειώστε ότι, από προεπιλογή, όταν χρησιμοποιείτε το systemd(1), η επιλογή ProtectSystem=full ορίζεται στο αρχείο logrotate.service. Αυτό εμποδίζει το logrotate να τροποποιεί αρχεία καταγραφής στα /etc και /usr.
Εδώ είναι περισσότερες πληροφορίες σχετικά με τις οδηγίες που μπορούν να συμπεριληφθούν σε ένα αρχείο διαμόρφωσης του logrotate:
ΟΔΗΓΙΕΣ ΑΡΧΕΙΟΥ ΔΙΑΜΟΡΦΩΣΗΣ
Αυτές οι οδηγίες μπορούν να συμπεριληφθούν σε ένα αρχείο διαμόρφωσης του logrotate:
Περιστροφή
rotate count
Τα αρχεία καταγραφής περιστρέφονται count φορές πριν διαγραφούν ή αποσταλούν μέσω email στη διεύθυνση που καθορίζεται στην οδηγία mail. Εάν το count είναι 0, οι παλιές εκδόσεις διαγράφονται αντί να περιστραφούν. Εάν το count είναι -1, τα παλιά αρχεία καταγραφής δεν διαγράφονται καθόλου, εκτός από το ότι επηρεάζονται από το maxage (χρησιμοποιήστε το με προσοχή, μπορεί να σπαταλήσει την απόδοση και τον χώρο στο δίσκο). Η προεπιλογή είναι 0.
olddir directory
Τα αρχεία καταγραφής μετακινούνται στον κατάλογο για περιστροφή. Ο κατάλογος πρέπει να βρίσκεται στην ίδια φυσική μονάδα δίσκου με το αρχείο καταγραφής που περιστρέφεται, εκτός εάν χρησιμοποιηθεί η επιλογή copy, copytruncate ή renamecopy. Ο κατάλογος θεωρείται ότι είναι σχετικός με τον κατάλογο που περιέχει το αρχείο καταγραφής, εκτός εάν καθοριστεί μια απόλυτη διαδρομή. Όταν χρησιμοποιείται αυτή η επιλογή, όλες οι παλιές εκδόσεις του αρχείου καταγραφής καταλήγουν στον κατάλογο. Αυτή η επιλογή μπορεί να παρακαμφθεί από την επιλογή noolddir.
noolddir
Τα αρχεία καταγραφής περιστρέφονται στον κατάλογο στον οποίο βρίσκονται συνήθως (αυτό αντικαθιστά την επιλογή olddir).
su user group
Περιστρέψτε τα αρχεία καταγραφής που ορίζονται υπό αυτόν τον χρήστη και αυτήν την ομάδα αντί να χρησιμοποιείτε τον προεπιλεγμένο χρήστη/ομάδα (συνήθως root). Το user καθορίζει τον χρήστη που χρησιμοποιείται για την περιστροφή και το group καθορίζει την ομάδα που χρησιμοποιείται για την περιστροφή (δείτε την ενότητα ΧΡΗΣΤΗΣ ΚΑΙ ΟΜΑΔΑ για λεπτομέρειες). Εάν ο χρήστης/η ομάδα που καθορίζετε εδώ δεν διαθέτει επαρκή δικαιώματα για να δημιουργήσει αρχεία με την ιδιότητα που έχετε καθορίσει στην οδηγία create, θα προκαλέσει σφάλμα. Εάν το logrotate εκτελείται με δικαιώματα root, συνιστάται να χρησιμοποιείτε την οδηγία su για να περιστρέφετε αρχεία σε καταλόγους που ελέγχονται άμεσα ή έμμεσα από μη προνομιούχους χρήστες.
Συχνότητα
hourly Τα αρχεία καταγραφής περιστρέφονται κάθε ώρα. Σημειώστε ότι συνήθως το logrotate έχει ρυθμιστεί να εκτελείται από το cron καθημερινά (ή από το logrotate.timer όταν χρησιμοποιείται το [systemd]({filename}../../systemd)(1)). Πρέπει να αλλάξετε αυτήν τη διαμόρφωση και να εκτελείτε το logrotate κάθε ώρα για να μπορείτε να περιστρέφετε πραγματικά τα αρχεία καταγραφής κάθε ώρα.
daily Τα αρχεία καταγραφής περιστρέφονται καθημερινά.
weekly [ημέρα_της_εβδομάδας]
Τα αρχεία καταγραφής περιστρέφονται μία φορά κάθε εργάσιμη ημέρα ή εάν η ημερομηνία έχει προχωρήσει κατά τουλάχιστον 7 ημέρες από την τελευταία περιστροφή (παραβλέποντας την ακριβή ώρα). Η ερμηνεία της ημέρας της εβδομάδας είναι η εξής: 0 σημαίνει Κυριακή, 1 σημαίνει Δευτέρα, ..., 6 σημαίνει Σάββατο· η ειδική τιμή 7 σημαίνει κάθε 7 ημέρες, ανεξάρτητα από την ημέρα της εβδομάδας. Εάν παραληφθεί το όρισμα της ημέρας της εβδομάδας, χρησιμοποιείται η προεπιλεγμένη τιμή 0.
monthly
Τα αρχεία καταγραφής περιστρέφονται την πρώτη φορά που εκτελείται το logrotate σε έναν μήνα (συνήθως την πρώτη ημέρα του μήνα).
yearly
Τα αρχεία καταγραφής περιστρέφονται εάν η τρέχουσα χρονιά δεν είναι η ίδια με την τελευταία περιστροφή.
size μέγεθος
Τα αρχεία καταγραφής περιστρέφονται μόνο εάν γίνουν μεγαλύτερα από το μέγεθος σε byte. Εάν το μέγεθος ακολουθείται από k, το μέγεθος θεωρείται σε κιλοbyte. Εάν χρησιμοποιηθεί το M, το μέγεθος είναι σε megabyte και εάν χρησιμοποιηθεί το G, το μέγεθος είναι σε gigabyte. Έτσι, τα size 100, size 100k, size 100M και size 100G είναι έγκυρα. Αυτή η επιλογή αποκλείει τις επιλογές χρονικού διαστήματος και προκαλεί την περιστροφή των αρχείων καταγραφής ανεξάρτητα από την τελευταία ώρα περιστροφής, εάν καθοριστεί μετά από τα χρονικά κριτήρια (η τελευταία καθορισμένη επιλογή έχει προτεραιότητα).
Επιλογή αρχείου
missingok
Εάν το αρχείο καταγραφής λείπει, συνεχίστε στο επόμενο χωρίς να εκδώσετε μήνυμα σφάλματος. Δείτε επίσης το nomissingok.
nomissingok
Εάν ένα αρχείο καταγραφής δεν υπάρχει, εκδώστε ένα σφάλμα. Αυτή είναι η προεπιλογή.
ignoreduplicates
Αγνόησε τυχόν επακόλουθες αντιστοιχίες του αρχείου καταγραφής.
ifempty
Περιστρέψτε το αρχείο καταγραφής ακόμα και αν είναι κενό, παρακάμπτοντας την επιλογή notifempty (το ifempty είναι η προεπιλογή).
notifempty
Μην περιστρέφετε το αρχείο καταγραφής εάν είναι κενό (αυτό αντικαθιστά την επιλογή ifempty).
minage μέτρηση
Μην περιστρέφετε αρχεία καταγραφής που είναι μικρότερα από <μέτρηση> ημερών.
maxage μέτρηση
Διαγράψτε τις περιστρεφόμενες καταγραφές που είναι παλαιότερες από <μέτρηση> ημερών. Η ηλικία ελέγχεται μόνο εάν το αρχείο καταγραφής πρόκειται να περιστραφεί. Το rotate -1 δεν εμποδίζει τη διαγραφή. Τα αρχεία αποστέλλονται μέσω αλληλογραφίας στην διαμορφωμένη διεύθυνση εάν έχουν διαμορφωθεί τα maillast και mail.
minsize μέγεθος
Τα αρχεία καταγραφής περιστρέφονται όταν γίνουν μεγαλύτερα από το μέγεθος σε byte, αλλά όχι πριν από το επιπλέον καθορισμένο χρονικό διάστημα (καθημερινά, εβδομαδιαία, μηνιαία ή ετήσια). Η σχετική επιλογή μεγέθους είναι παρόμοια, εκτός από το ότι αποκλείει τις επιλογές χρονικού διαστήματος και προκαλεί την περιστροφή των αρχείων καταγραφής ανεξάρτητα από την τελευταία ώρα περιστροφής, εάν καθοριστεί μετά από τα χρονικά κριτήρια (η τελευταία καθορισμένη επιλογή έχει προτεραιότητα). Όταν χρησιμοποιείται το minsize, λαμβάνονται υπόψη τόσο το μέγεθος όσο και η χρονική σήμανση του αρχείου καταγραφής.
maxsize μέγεθος
Τα αρχεία καταγραφής περιστρέφονται όταν γίνουν μεγαλύτερα από το μέγεθος σε byte, ακόμη και πριν από το επιπλέον καθορισμένο χρονικό διάστημα (καθημερινά, εβδομαδιαία, μηνιαία ή ετήσια). Η σχετική επιλογή μεγέθους είναι παρόμοια, εκτός από το ότι αποκλείει τις επιλογές χρονικού διαστήματος και προκαλεί την περιστροφή των αρχείων καταγραφής ανεξάρτητα από την τελευταία ώρα περιστροφής, εάν καθοριστεί μετά από τα χρονικά κριτήρια (η τελευταία καθορισμένη επιλογή έχει προτεραιότητα). Όταν χρησιμοποιείται το maxsize, λαμβάνονται υπόψη τόσο το μέγεθος όσο και η χρονική σήμανση του αρχείου καταγραφής.
tabooext [+] λίστα
Η τρέχουσα λίστα επεκτάσεων που απαγορεύονται αλλάζει (δείτε την οδηγία include για πληροφορίες σχετικά με τις απαγορευμένες επεκτάσεις). Εάν ένα + προηγείται της λίστας των επεκτάσεων, η τρέχουσα λίστα των απαγορευμένων επεκτάσεων αυξάνεται, διαφορετικά αντικαθίσταται. Κατά την εκκίνηση, η λίστα των απαγορευμένων επεκτάσεων είναι: ,v, .bak, .cfsaved, .disabled, .dpkg-bak, .dpkg-del, .dpkg-dist, .dpkg-new, .dpkg-old, .dpkg-tmp, .new, .old, .orig, .rhn-cfg-tmp-*, .rpmnew, .rpmorig, .rpmsave, .swp, .ucf-dist, .ucf-new, .ucf-old, ~
taboopat [+] λίστα
Η τρέχουσα λίστα απαγορευμένων προτύπων glob αλλάζει (δείτε την οδηγία include για πληροφορίες σχετικά με τις απαγορευμένες επεκτάσεις και τα πρότυπα). Εάν ένα + προηγείται της λίστας των προτύπων, η τρέχουσα λίστα των απαγορευμένων προτύπων αυξάνεται, διαφορετικά αντικαθίσταται. Κατά την εκκίνηση, η λίστα των απαγορευμένων προτύπων είναι κενή.
Αρχεία και Φάκελοι
create mode owner group, create owner group
Αμέσως μετά την περιστροφή (πριν εκτελεστεί το σενάριο postrotate), το αρχείο καταγραφής δημιουργείται (με το ίδιο όνομα με το αρχείο καταγραφής που μόλις περιστράφηκε). Το mode καθορίζει τη λειτουργία για το αρχείο καταγραφής σε οκταδικό (όπως στο chmod(2)), το owner καθορίζει τον χρήστη που θα είναι ο ιδιοκτήτης του αρχείου καταγραφής και το group καθορίζει την ομάδα στην οποία θα ανήκει το αρχείο καταγραφής (δείτε την ενότητα USER ΚΑΙ ΟΜΑΔΑ για λεπτομέρειες). Οποιαδήποτε από τις ιδιότητες του αρχείου καταγραφής μπορεί να παραλειφθεί, οπότε οι ιδιότητες του νέου αρχείου θα χρησιμοποιήσουν τις ίδιες τιμές με το αρχικό αρχείο καταγραφής για τις παραλειφθείσες ιδιότητες. Αυτή η επιλογή μπορεί να απενεργοποιηθεί χρησιμοποιώντας την επιλογή nocreate.
nocreate
Δεν δημιουργούνται νέα αρχεία καταγραφής (αυτό αντικαθιστά την επιλογή create).
createolddir mode [owner [group]], createolddir [owner [group]]
Εάν ο κατάλογος που καθορίζεται από την οδηγία olddir δεν υπάρχει, δημιουργείται. Το mode καθορίζει τη λειτουργία για τον κατάλογο olddir σε οκταδικό (όπως στο chmod(2)), το owner καθορίζει τον χρήστη που θα είναι ο ιδιοκτήτης του καταλόγου olddir και το group καθορίζει την ομάδα στην οποία θα ανήκει ο κατάλογος olddir (δείτε την ενότητα USER ΚΑΙ ΟΜΑΔΑ για λεπτομέρειες). Εάν δεν καθοριστεί το mode, υποτίθεται ότι είναι 0755. Αυτή η επιλογή μπορεί να απενεργοποιηθεί χρησιμοποιώντας την επιλογή nocreateolddir.
nocreateolddir
Ο κατάλογος olddir δεν δημιουργείται από το logrotate όταν δεν υπάρχει.
copy Δημιουργήστε ένα αντίγραφο του αρχείου καταγραφής, αλλά μην αλλάξετε το αρχικό αρχείο καθόλου. Αυτή η επιλογή μπορεί να χρησιμοποιηθεί, για παράδειγμα, για να δημιουργηθεί ένα στιγμιότυπο του τρέχοντος αρχείου καταγραφής ή όταν κάποιο άλλο βοηθητικό πρόγραμμα πρέπει να περικόψει ή να αναλύσει το αρχείο. Όταν χρησιμοποιείται αυτή η επιλογή, η επιλογή create δεν θα έχει καμία επίδραση, καθώς το παλιό αρχείο καταγραφής παραμένει στη θέση του. Η επιλογή copy επιτρέπει την αποθήκευση των περιστρεφόμενων αρχείων καταγραφής σε διαφορετικές συσκευές χρησιμοποιώντας την οδηγία olddir.
nocopy Μην αντιγράψετε το αρχικό αρχείο καταγραφής και αφήστε το στη θέση του (αυτό αντικαθιστά την επιλογή copy).
copytruncate
Μετά τη δημιουργία ενός αντιγράφου, περικόπτει το αρχικό αρχείο καταγραφής στη θέση του σε μέγεθος μηδέν, αντί να μετακινεί το παλιό αρχείο καταγραφής και, προαιρετικά, να δημιουργεί ένα νέο. Μπορεί να χρησιμοποιηθεί όταν ένα πρόγραμμα δεν μπορεί να ενημερωθεί ώστε να κλείσει το αρχείο καταγραφής του και έτσι μπορεί να συνεχίσει να γράφει (να προσθέτει) στο προηγούμενο αρχείο καταγραφής επ' αόριστον. Σημειώστε ότι υπάρχει ένα πολύ μικρό χρονικό διάστημα μεταξύ της αντιγραφής του αρχείου και της περικοπής του, οπότε ορισμένα δεδομένα καταγραφής ενδέχεται να χαθούν. Όταν χρησιμοποιείται αυτή η επιλογή, η επιλογή create δεν θα έχει καμία επίδραση, καθώς το παλιό αρχείο καταγραφής παραμένει στη θέση του. Η επιλογή copytruncate επιτρέπει την αποθήκευση των αρχείων καταγραφής που έχουν υποστεί εναλλαγή σε διαφορετικές συσκευές χρησιμοποιώντας την οδηγία olddir. Η επιλογή copytruncate υπονοεί τη μη χρήση της norenamecopy.
nocopytruncate
Δεν περικόπτει το αρχικό αρχείο καταγραφής στη θέση του μετά τη δημιουργία ενός αντιγράφου (αυτό αναιρεί την επιλογή copytruncate).
renamecopy
Το αρχείο καταγραφής μετονομάζεται σε ένα προσωρινό όνομα αρχείου στον ίδιο κατάλογο προσθέτοντας την επέκταση ".tmp". Στη συνέχεια, εκτελείται το σενάριο postrotate και το αρχείο καταγραφής αντιγράφεται από το προσωρινό όνομα αρχείου στο τελικό όνομα αρχείου. Τέλος, το προσωρινό όνομα αρχείου διαγράφεται. Η επιλογή renamecopy επιτρέπει την αποθήκευση των αρχείων καταγραφής που έχουν υποστεί εναλλαγή σε διαφορετικές συσκευές χρησιμοποιώντας την οδηγία olddir. Η επιλογή renamecopy υπονοεί τη μη χρήση της nocopytruncate.
norenamecopy
Δεν μετονομάζει και δεν αντιγράφει το αρχικό αρχείο καταγραφής (αυτό αναιρεί την επιλογή renamecopy).
shred Διαγράφει τα αρχεία καταγραφής χρησιμοποιώντας την εντολή shred -u αντί για την unlink(). Αυτό θα πρέπει να διασφαλίσει ότι τα αρχεία καταγραφής δεν θα είναι αναγνώσιμα μετά τη προγραμματισμένη διαγραφή τους. Αυτό είναι απενεργοποιημένο από προεπιλογή. Δείτε επίσης noshred.
noshred
Δεν χρησιμοποιεί την εντολή shred κατά τη διαγραφή παλαιών αρχείων καταγραφής. Δείτε επίσης shred.
shredcycles count
Ζητά από το GNU shred(1) να αντικαταστήσει τα αρχεία καταγραφής count φορές πριν από τη διαγραφή. Χωρίς αυτήν την επιλογή, θα χρησιμοποιηθεί η προεπιλεγμένη τιμή της εντολής shred.
allowhardlink
Επιτρέπει την εναλλαγή αρχείων με πολλαπλούς σκληρούς συνδέσμους. Αυτό είναι απενεργοποιημένο από προεπιλογή. Το αρχείο προορισμού ενδέχεται να αδειάσει, π.χ., με την εντολή shred ή copytruncate. Χρησιμοποιήστε το με προσοχή, ειδικά όταν τα αρχεία καταγραφής εναλλάσσονται ως root.
noallowhardlink
Δεν επιτρέπει την εναλλαγή αρχείων με πολλαπλούς σκληρούς συνδέσμους. Δείτε επίσης allowhardlink.
Συμπίεση
compress
Οι παλιές εκδόσεις των αρχείων καταγραφής συμπιέζονται με την εντολή gzip(1) από προεπιλογή. Δείτε επίσης nocompress.
nocompress
Οι παλιές εκδόσεις των αρχείων καταγραφής δεν συμπιέζονται. Δείτε επίσης compress.
compresscmd
Καθορίζει ποια εντολή θα χρησιμοποιηθεί για τη συμπίεση των αρχείων καταγραφής. Η προεπιλογή είναι η gzip(1). Δείτε επίσης compress.
uncompresscmd
Καθορίζει ποια εντολή θα χρησιμοποιηθεί για την αποσυμπίεση των αρχείων καταγραφής. Η προεπιλογή είναι η gunzip(1).
compressext
Καθορίζει ποια επέκταση θα χρησιμοποιηθεί στα συμπιεσμένα αρχεία καταγραφής, εάν είναι ενεργοποιημένη η συμπίεση. Η προεπιλογή ακολουθεί αυτήν της διαμορφωμένης εντολής συμπίεσης.
compressoptions
Οι επιλογές γραμμής εντολών μπορούν να περαστούν στο πρόγραμμα συμπίεσης, εάν χρησιμοποιείται. Η προεπιλογή, για την εντολή gzip(1), είναι "-6" (προτιμά την υψηλή συμπίεση σε βάρος της ταχύτητας). Εάν χρησιμοποιείτε μια διαφορετική εντολή συμπίεσης, ίσως χρειαστεί να αλλάξετε τις επιλογές συμπίεσης ώστε να ταιριάζουν.
delaycompress
Αναβάλλετε τη συμπίεση του προηγούμενου αρχείου καταγραφής στον επόμενο κύκλο περιστροφής. Αυτό έχει
αποτέλεσμα μόνο όταν χρησιμοποιείται σε συνδυασμό με την επιλογή compress. Μπορεί να χρησιμοποιηθεί
όταν ένα πρόγραμμα δεν μπορεί να ενημερωθεί ώστε να κλείσει το αρχείο καταγραφής του και, επομένως,
μπορεί να συνεχίσει να γράφει στο προηγούμενο αρχείο καταγραφής για κάποιο χρονικό διάστημα.
nodelaycompress
Μην αναβάλλετε τη συμπίεση του προηγούμενου αρχείου καταγραφής στον επόμενο κύκλο περιστροφής (αυτό
ακυρώνει την επιλογή delaycompress).
Ονομασίες αρχείων
extension ext
Τα αρχεία καταγραφής με επέκταση ext μπορούν να τη διατηρήσουν μετά την περιστροφή. Εάν χρησιμοποιηθεί
συμπίεση, η επέκταση συμπίεσης (συνήθως .gz) εμφανίζεται μετά την επέκταση ext. Για παράδειγμα, εάν έχετε
ένα αρχείο καταγραφής με όνομα mylog.foo και θέλετε να το περιστρέψετε σε mylog.1.foo.gz αντί για
mylog.foo.1.gz.
addextension ext
Στα αρχεία καταγραφής προστίθεται η τελική επέκταση ext μετά την περιστροφή. Εάν το αρχικό αρχείο
ήδη τελειώνει με ext, η επέκταση δεν επαναλαμβάνεται, αλλά απλώς μεταφέρεται στο τέλος, δηλαδή τόσο
το όνομα αρχείου όσο και το όνομα αρχείου με επέκταση θα περιστραφούν σε filename.1ext. Εάν χρησιμοποιηθεί
συμπίεση, η επέκταση συμπίεσης (συνήθως .gz) εμφανίζεται μετά την επέκταση ext.
start count
Αυτός είναι ο αριθμός που θα χρησιμοποιηθεί ως βάση για την περιστροφή. Για παράδειγμα, εάν καθορίσετε
το 0, τα αρχεία καταγραφής θα δημιουργηθούν με επέκταση .0 καθώς περιστρέφονται από τα αρχικά αρχεία
καταγραφής. Εάν καθορίσετε το 9, τα αρχεία καταγραφής θα δημιουργηθούν με επέκταση .9, παραλείποντας
τα 0–8. Τα αρχεία θα εξακολουθούν να περιστρέφονται τον αριθμό των φορών που καθορίζεται με την
εντολή rotate.
dateext
Αρχειοθετήστε παλαιότερες εκδόσεις αρχείων καταγραφής προσθέτοντας μια επέκταση ημερομηνίας, όπως
YYYYMMDD, αντί απλώς να προσθέτετε έναν αριθμό. Η επέκταση μπορεί να διαμορφωθεί χρησιμοποιώντας τις
επιλογές dateformat και dateyesterday.
nodateext
Μην αρχειοθετείτε παλαιότερες εκδόσεις αρχείων καταγραφής με επέκταση ημερομηνίας (αυτό ακυρώνει την
επιλογή dateext).
dateformat format_string
Καθορίστε την επέκταση για την επιλογή dateext χρησιμοποιώντας τη μορφή παρόμοια με τη συνάρτηση
strftime(3). Επιτρέπονται μόνο οι προσδιοριστές %Y, %m, %d, %H, %M, %S, %V, %s και %z. Η προεπιλεγμένη
τιμή είναι -%Y%m%d, εκτός από την ωριαία, η οποία χρησιμοποιεί το -%Y%m%d%H ως προεπιλεγμένη τιμή. Σημειώστε
ότι ο χαρακτήρας που διαχωρίζει το όνομα αρχείου από την επέκταση αποτελεί επίσης μέρος της συμβολοσειράς
dateformat. Το σύστημα πρέπει να έχει ρυθμιστεί ώστε η ώρα να είναι μετά τις 9 Σεπτεμβρίου 2001 για να
λειτουργεί σωστά το %s. Σημειώστε ότι οι χρονικές σημάνσεις που δημιουργούνται από αυτήν τη μορφή πρέπει
να είναι λεξικά ταξινομήσιμες (δηλαδή, πρώτα το έτος, μετά ο μήνας και μετά η ημέρα. Για παράδειγμα, το
2001/12/01 είναι εντάξει, αλλά το 01/12/2001 δεν είναι, επειδή το 01/11/2002 θα ταξινομηθεί χαμηλότερα ενώ
είναι μεταγενέστερο). Αυτό συμβαίνει επειδή, όταν χρησιμοποιείτε την επιλογή rotate, το logrotate ταξινομεί
όλα τα περιστρεφόμενα ονόματα αρχείων για να διαπιστώσει ποια αρχεία καταγραφής είναι παλαιότερα και πρέπει
να διαγραφούν.
dateyesterday
Χρησιμοποιήστε την ημερομηνία του χθες αντί για τη σημερινή για να δημιουργήσετε την επέκταση dateext, ώστε
το περιστρεφόμενο αρχείο καταγραφής να έχει στην ονομασία του μια ημερομηνία που είναι ίδια με τις χρονικές
σημάνσεις που περιέχει.
datehourago
Χρησιμοποιήστε την ώρα αντί για την τρέχουσα ημερομηνία για τη δημιουργία της επέκτασης dateext, έτσι ώστε το περιστρεφόμενο αρχείο καταγραφής να έχει στην ονομασία του την ώρα που είναι η ίδια με τις χρονικές σημάνσεις που περιέχει. Χρήσιμο για περιστροφή ανά ώρα.
Αποστολή μηνυμάτων
mail address
Όταν ένα αρχείο καταγραφής περιστραφεί και πάψει να υπάρχει, αποστέλλεται μέσω email στη διεύθυνση που καθορίζεται. Εάν δεν πρέπει να δημιουργηθεί email για ένα συγκεκριμένο αρχείο καταγραφής, μπορεί να χρησιμοποιηθεί η οδηγία nomail.
nomail Μην αποστέλλετε τα παλιά αρχεία καταγραφής μέσω email σε οποιαδήποτε διεύθυνση.
mailfirst
Όταν χρησιμοποιείται η εντολή mail, αποστέλλετε μέσω email το αρχείο που μόλις περιστράφηκε, αντί για το αρχείο που πρόκειται να λήξει.
maillast
Όταν χρησιμοποιείται η εντολή mail, αποστέλλετε μέσω email το αρχείο που πρόκειται να λήξει, αντί για το αρχείο που μόλις περιστράφηκε (αυτή είναι η προεπιλογή).
Πρόσθετα αρχεία διαμόρφωσης
include file_or_directory
Διαβάζει το αρχείο που δίνεται ως όρισμα, σαν να είχε συμπεριληφθεί ενσωματωμένα στο σημείο που εμφανίζεται η οδηγία include. Εάν δοθεί ένας κατάλογος, τα περισσότερα αρχεία σε αυτόν τον κατάλογο διαβάζονται με αλφαβητική σειρά, προτού συνεχιστεί η επεξεργασία του αρχείου που περιέχει την οδηγία include. Τα μόνα αρχεία που αγνοούνται είναι τα αρχεία που δεν είναι κανονικά αρχεία (όπως κατάλογοι και ονομαστικές σωληνώσεις) και τα αρχεία των οποίων τα ονόματα τελειώνουν με μία από τις απαγορευμένες επεκτάσεις ή μοτίβα, όπως καθορίζονται από τις οδηγίες tabooext ή taboopat, αντίστοιχα. Η δοθείσα διαδρομή μπορεί να ξεκινά με ~/ για να είναι σχετική με τον κατάλογο του χρήστη που εκτελεί την εντολή. Για λόγους ασφαλείας, τα αρχεία διαμόρφωσης δεν πρέπει να είναι εγγράψιμα από την ομάδα ή από οποιονδήποτε άλλο χρήστη.
Σενάρια
sharedscripts
Συνήθως, τα σενάρια prerotate και postrotate εκτελούνται για κάθε αρχείο καταγραφής που περιστρέφεται και η απόλυτη διαδρομή προς το αρχείο καταγραφής περνάει ως πρώτο όρισμα στο σενάριο. Αυτό σημαίνει ότι ένα και το ίδιο σενάριο μπορεί να εκτελεστεί πολλές φορές για καταχωρήσεις αρχείων καταγραφής που ταιριάζουν με πολλά αρχεία (όπως το παράδειγμα /var/log/news/*). Εάν καθοριστεί το sharedscripts, τα σενάρια εκτελούνται μόνο μία φορά, ανεξάρτητα από το πόσα αρχεία καταγραφής ταιριάζουν με το μοτίβο με χαρακτήρες κράτησης θέσης και ολόκληρο το μοτίβο περνάει σε αυτά. Ωστόσο, εάν κανένα από τα αρχεία καταγραφής στο μοτίβο δεν απαιτεί περιστροφή, τα σενάρια δεν θα εκτελεστούν καθόλου. Εάν τα σενάρια τερματίσουν με σφάλμα (ή εάν κάποιο αρχείο καταγραφής αποτύχει να περιστραφεί), οι υπόλοιπες ενέργειες δεν θα εκτελεστούν για κανένα από τα αρχεία καταγραφής. Αυτή η επιλογή αντικαθιστά την επιλογή nosharedscripts.
nosharedscripts
Εκτελέστε τα σενάρια prerotate και postrotate για κάθε αρχείο καταγραφής που περιστρέφεται (αυτή είναι η προεπιλογή και αντικαθιστά την επιλογή sharedscripts). Η απόλυτη διαδρομή προς το αρχείο καταγραφής περνάει ως πρώτο όρισμα στο σενάριο. Η απόλυτη διαδρομή προς το τελικό περιστρεφόμενο αρχείο καταγραφής περνάει ως το δεύτερο όρισμα στο σενάριο postrotate. Εάν τα σενάρια τερματίσουν με σφάλμα, οι υπόλοιπες ενέργειες δεν θα εκτελεστούν για το συγκεκριμένο αρχείο καταγραφής.
firstaction
script
endscript
Το σενάριο εκτελείται μία φορά πριν από όλα τα αρχεία καταγραφής που ταιριάζουν με το μοτίβο με χαρακτήρες κράτησης θέσης, πριν εκτελεστεί το σενάριο prerotate και μόνο εάν τουλάχιστον ένα αρχείο καταγραφής θα περιστραφεί πραγματικά. Αυτές οι οδηγίες μπορούν να εμφανιστούν μόνο μέσα σε έναν ορισμό αρχείου καταγραφής. Το ολόκληρο μοτίβο περνάει στο σενάριο ως το πρώτο του όρισμα. Εάν το σενάριο τερματίσει με σφάλμα, δεν γίνεται καμία περαιτέρω επεξεργασία. Δείτε επίσης το lastaction και την ενότητα SCRIPTS.
lastaction
script
endscript
Το σενάριο εκτελείται μία φορά αφού περιστραφούν όλα τα αρχεία καταγραφής που ταιριάζουν με το μοτίβο wildcard, αφού εκτελεστεί το σενάριο postrotate και μόνο εάν περιστραφεί τουλάχιστον ένα αρχείο καταγραφής. Αυτές οι
εντολές μπορούν να εμφανιστούν μόνο μέσα σε έναν ορισμό αρχείου καταγραφής. Ολόκληρο το μοτίβο περνάει στο σενάριο ως το πρώτο του όρισμα. Εάν το σενάριο τερματιστεί με σφάλμα, εμφανίζεται μόνο ένα μήνυμα σφάλματος (καθώς αυτή είναι η τελευταία ενέργεια). Δείτε επίσης firstaction και την ενότητα SCRIPTS.
prerotate
script
endscript
Το σενάριο εκτελείται πριν από την περιστροφή του αρχείου καταγραφής και των παλαιότερων αρχείων καταγραφής του και μόνο εάν το
αρχείο καταγραφής θα περιστραφεί πραγματικά. Αυτές οι εντολές μπορούν να εμφανιστούν μόνο μέσα σε έναν ορισμό αρχείου καταγραφής. Συνήθως, η απόλυτη διαδρομή προς το αρχείο καταγραφής περνάει ως το πρώτο όρισμα στο
σενάριο. Εάν έχει καθοριστεί το sharedscripts, ολόκληρο το μοτίβο περνάει στο
σενάριο. Δείτε επίσης το postrotate και την ενότητα SCRIPTS. Δείτε το sharedscripts και το nosharedscripts για τη διαχείριση σφαλμάτων.
postrotate
script
endscript
Το σενάριο εκτελείται αφού περιστραφεί το αρχείο καταγραφής και πριν συμπιεστεί το αρχείο καταγραφής. Αυτές οι εντολές μπορούν να εμφανιστούν μόνο μέσα σε έναν ορισμό αρχείου καταγραφής. Συνήθως,
η απόλυτη διαδρομή προς το αρχείο καταγραφής περνάει ως το πρώτο όρισμα στο σενάριο και η απόλυτη διαδρομή προς το τελικό περιστρεφόμενο αρχείο καταγραφής περνάει ως το δεύτερο όρισμα στο
σενάριο.
Εάν έχει καθοριστεί το sharedscripts, ολόκληρο το μοτίβο περνάει ως το πρώτο όρισμα στο
σενάριο και το δεύτερο όρισμα παραλείπεται. Δείτε επίσης το prerotate και την ενότητα SCRIPTS.
Δείτε το sharedscripts και το nosharedscripts για τη διαχείριση σφαλμάτων.
preremove
script
endscript
Το σενάριο εκτελείται μία φορά ακριβώς πριν από την αφαίρεση ενός αρχείου καταγραφής. Το logrotate θα περάσει
το όνομα του αρχείου που πρόκειται να αφαιρεθεί ως το πρώτο όρισμα στο
σενάριο. Δείτε επίσης το firstaction και την ενότητα SCRIPTS.
SCRIPTS
Οι γραμμές μεταξύ της αρχικής λέξης-κλειδί (π.χ. prerotate) και του endscript (και τα δύο πρέπει να εμφανίζονται
σε ξεχωριστές γραμμές) εκτελούνται (χρησιμοποιώντας το /bin/sh). Το σενάριο κληρονομεί ορισμένα χαρακτηριστικά από τη
διαδικασία logrotate, συμπεριλαμβανομένων των stderr, stdout, του τρέχοντος καταλόγου, του περιβάλλοντος και του
umask. Τα σενάρια εκτελούνται ως ο χρήστης και η ομάδα που εκτελούν, ανεξάρτητα από οποιαδήποτε οδηγία su. Εάν έχει καθοριστεί η
σημαία --log, η περιγραφόμενη τιμή 3 είναι το αρχείο καταγραφής. Ο τρέχων κατάλογος εργασίας είναι
μη καθορισμένος.
USER AND GROUP
Οι αναγνωριστικοί χρήστη και ομάδας επιλύονται πρώτα προσπαθώντας την αναπαράσταση κειμένου και, σε περίπτωση αποτυχίας, στη συνέχεια με τη αριθμητική τιμή.
FILES
/var/lib/logrotate/status Προεπιλεγμένο αρχείο κατάστασης.
/etc/logrotate.conf Επιλογές διαμόρφωσης.
ΔΕΙΤΕ ΕΠΙΣΗΣ
chmod(2), gunzip(1), gzip(1), mail(1), shred(1), strftime(3), strtoul(3), [https://github.com/logrotate/logrotate]
ΣΥΓΓΡΑΦΕΙΣ
Erik Troan, Preston Brown, Jan Kaluza.
[https://github.com/logrotate/logrotate]