Υπάρχει μια εντολή ή ένα υπάρχον σενάριο που θα μου επιτρέψει να δω όλες τις προγραμματισμένες εργασίες cron ενός συστήματος *NIX ταυτόχρονα; Θα ήθελα να περιλαμβάνει όλες τις crontabs των χρηστών, καθώς και το /etc/crontab
και οτιδήποτε βρίσκεται στο /etc/cron.d
. Θα ήταν επίσης καλό να βλέπω τις συγκεκριμένες εντολές που εκτελούνται από το run-parts
στο /etc/crontab
.
Ιδανικά, θα ήθελα την έξοδο σε μια ωραία μορφή στήλης και ταξινομημένη με κάποιο ουσιαστικό τρόπο.
Θα μπορούσα στη συνέχεια να συγχωνεύσω αυτές τις λίστες από πολλούς διακομιστές για να δω το συνολικό "πρόγραμμα των γεγονότων",
Ήμουν έτοιμος να γράψω ένα τέτοιο σενάριο μόνος μου, αλλά αν κάποιος έχει ήδη μπει στον κόπο...
Θα πρέπει να το εκτελέσετε ως διαχειριστής, αλλά:
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
θα κάνει επανάληψη σε κάθε όνομα χρήστη και θα εμφανίσει την crontab του. Οι crontabs ανήκουν στους αντίστοιχους χρήστες, οπότε δεν θα μπορείτε να δείτε την crontab ενός άλλου χρήστη χωρίς να είστε ο ίδιος ή ο root.
Επεξεργασία
αν θέλετε να μάθετε σε ποιον χρήστη ανήκει μια crontab, χρησιμοποιήστε echo $user
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
Κατέληξα να γράψω ένα σενάριο (προσπαθώ να διδάξω τον εαυτό μου τα λεπτότερα σημεία του σεναρίου bash, γι' αυτό δεν βλέπετε κάτι σαν Perl εδώ). Δεν είναι ακριβώς μια απλή υπόθεση, αλλά κάνει τα περισσότερα από αυτά που χρειάζομαι. Χρησιμοποιεί την πρόταση του Kyle'για την αναζήτηση των crontabs μεμονωμένων χρηστών, αλλά ασχολείται επίσης με το /etc/crontab
(συμπεριλαμβανομένων των σεναρίων που ξεκινούν από το run-parts
στο /etc/cron.hourly
, /etc/cron.daily
, κλπ.) και τις εργασίες στον κατάλογο /etc/cron.d
. Παίρνει όλα αυτά και τα συγχωνεύει σε μια οθόνη κάπως σαν την ακόλουθη:
mi h d m w user command
09,39 * * * * root [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
47 */8 * * * root rsync -axE --delete --ignore-errors / /mirror/ >/dev/null
17 1 * * * root /etc/cron.daily/apt
17 1 * * * root /etc/cron.daily/aptitude
17 1 * * * root /etc/cron.daily/find
17 1 * * * root /etc/cron.daily/logrotate
17 1 * * * root /etc/cron.daily/man-db
17 1 * * * root /etc/cron.daily/ntp
17 1 * * * root /etc/cron.daily/standard
17 1 * * * root /etc/cron.daily/sysklogd
27 2 * * 7 root /etc/cron.weekly/man-db
27 2 * * 7 root /etc/cron.weekly/sysklogd
13 3 * * * archiver /usr/local/bin/offsite-backup 2>&1
32 3 1 * * root /etc/cron.monthly/standard
36 4 * * * yukon /home/yukon/bin/do-daily-stuff
5 5 * * * archiver /usr/local/bin/update-logs >/dev/null
Σημειώστε ότι εμφανίζει τον χρήστη, και λίγο-πολύ ταξινομεί ανά ώρα και λεπτό ώστε να μπορώ να δω το ημερήσιο πρόγραμμα.
Μέχρι στιγμής, το έχω δοκιμάσει σε Ubuntu, Debian και Red Hat AS.