Ο διαχειριστής του συστήματος μου έχει ρυθμίσει ένα σωρό εργασίες cron στο μηχάνημά μου. Θα ήθελα να ξέρω ακριβώς τι είναι προγραμματισμένο για ποια ώρα. Πώς μπορώ να πάρω αυτή τη λίστα;
Ανάλογα με το πώς είναι ρυθμισμένο το σύστημα linux σας, μπορείτε να κοιτάξετε στο:
/etc/crontab
(πίνακας crontab για όλο το σύστημα)Επίσης, πολλές διανομές έχουν:
/etc/cron.d/*
Αυτές οι ρυθμίσεις έχουν την ίδια σύνταξη με την /etc/crontab
.
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
Πρόκειται απλά για καταλόγους που περιέχουν εκτελέσιμα αρχεία που εκτελούνται ωριαία, καθημερινά, εβδομαδιαία ή μηνιαία, σύμφωνα με το όνομα του καταλόγου τους.
Επιπλέον, μπορείτε να έχετε at jobs (ελέγξτε το /var/spool/at/*
), anacron (/etc/anacrontab
και /var/spool/anacron/*
) και πιθανώς άλλα που ξεχνάω.
Με τα περισσότερα Crons (π.χ. Vixie-Cron - προεπιλογή Debian/Ubuntu, Cronie - προεπιλογή Fedora, Solaris Cron ...) λαμβάνετε τη λίστα των προγραμματισμένων εργασιών cron για τον τρέχοντα χρήστη μέσω:
$ crontab -l
ή για έναν άλλο χρήστη μέσω
# crontab -l -u juser
Για να λάβετε τις crontabs για όλους τους χρήστες μπορείτε να κάνετε επανάληψη σε όλους τους χρήστες και να καλέσετε αυτή την εντολή.
Εναλλακτικά, μπορείτε να αναζητήσετε τα αρχεία spool. Συνήθως, αποθηκεύονται στον κατάλογο /var/spool/cron
, π.χ. για το vcron στον ακόλουθο κατάλογο
/var/spool/cron/crontabs
περιέχει όλες τις ρυθμισμένες crontabs όλων των χρηστών - εκτός από τον χρήστη root, ο οποίος μπορεί επίσης να ρυθμίσει τις εργασίες μέσω της crontab όλου του συστήματος, η οποία βρίσκεται στη διεύθυνση
/etc/crontab
Με το cronie (προεπιλογή στο Fedora/CentOS), υπάρχει επίσης ένας κατάλογος ρυθμίσεων τύπου .d
για τις εργασίες cron του συστήματος:
/etc/cron.d
(Όπως πάντα, ο κατάλογος .d
απλοποιεί τη διατήρηση καταχωρήσεων ρυθμίσεων που αποτελούν μέρος διαφορετικών πακέτων).
Για ευκολία, οι περισσότερες διανομές παρέχουν επίσης έναν κατάλογο όπου εκτελούνται περιοδικά τα συνδεδεμένα/αποθηκευμένα σενάρια, π.χ:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Η έγκαιρη εκτέλεση αυτών των σεναρίων συνήθως διαχειρίζεται μέσω καταχωρήσεων run-parts
στο crontab του συστήματος ή μέσω του anacron.
Με το Systemd (π.χ. στο Fedora, CentOS 7, ...) η περιοδική εκτέλεση εργασιών μπορεί επιπλέον να ρυθμιστεί μέσω του timer units. Οι ενεργοποιημένοι χρονομετρητές συστήματος μπορούν να εμφανιστούν μέσω:
$ systemctl list-timers
Σημειώστε ότι οι χρήστες εκτός από τον root μπορεί να έχουν εκτελέσει και instances systemd χρηστών όπου έχουν ρυθμιστεί οι χρονομετρητές. Για παράδειγμα, στο Fedora, από προεπιλογή, ένα user systemd instance εκκινείται για κάθε χρήστη που είναι συνδεδεμένος αυτή τη στιγμή. Μπορούν να αναγνωριστούν μέσω:
$ ps aux | grep 'systemd[ ]--user'
Αυτοί οι χρονομετρητές χρηστών μπορούν να αναφερθούν μέσω:
$ systemctl --user list-timers
Μια εναλλακτική λύση στην έκδοση της εντολής list-timers
είναι να αναζητήσετε αρχεία μονάδων χρονοδιακόπτη (μοτίβο: *.timer
) και συμβολικούς συνδέσμους προς αυτά στους συνήθεις καταλόγους systemd config του συστήματος και του χρήστη:
$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
-o -path '/home/*/.config/systemd/*' ')' \
-name '*.timer' 2> /dev/null
(Όπως και με τις κανονικές μονάδες υπηρεσίας, μια μονάδα χρονοδιακόπτη ενεργοποιείται μέσω της δημιουργίας ενός συμβολικού συνδέσμου στο σωστό κατάλογο systemd config).
Βλέπε επίσης:
Για να εμφανίσετε όλα τα crons για τον συγκεκριμένο χρήστη.
crontab -u username -l,
Για να εμφανίσετε όλα τα crons για όλους τους χρήστες
Εκτελέστε το ως υπερ-χρήστης
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done