998 Stimmen

Wie kann ich alle Cron-Jobs für alle Benutzer auflisten?

Gibt es einen Befehl oder ein vorhandenes Skript, mit dem ich alle geplanten Cron-Jobs eines *NIX-Systems auf einmal sehen kann? Ich möchte, dass es alle Benutzer-Crontabs einschließt, ebenso wie /etc/crontab und was auch immer in /etc/cron.d . Es wäre auch schön, wenn man die spezifischen Befehle sehen könnte, die von run-parts sur /etc/crontab .

Im Idealfall hätte ich die Ausgabe gerne in einer schönen Spaltenform und in einer sinnvollen Reihenfolge.

Ich könnte dann diese Auflistungen von mehreren Servern zusammenführen, um den gesamten "Veranstaltungskalender" zu sehen.

Ich wollte selbst ein solches Drehbuch schreiben, aber wenn sich schon jemand die Mühe gemacht hat...

18voto

sum Punkte 181

Eine kleine Verfeinerung der Antwort von Kyle Burton mit verbesserter Ausgabeformatierung:

#!/bin/bash
for user in $(cut -f1 -d: /etc/passwd)
do echo $user && crontab -u $user -l
echo " "
done

17voto

Sheikh Abdul Wahid Punkte 2240

Um die Liste von Root-Benutzer zu erhalten.

for user in $(cut -f1 -d: /etc/passwd); do echo $user; sudo crontab -u $user -l; done

16voto

Mithaldu Punkte 2388
getent passwd | cut -d: -f1 | perl -e'while(<>){chomp;$l = `crontab -u $_ -l 2>/dev/null`;print "$_\n$l\n" if $l}'

Dies vermeidet die direkte Eingabe von passwd, überspringt Benutzer, die keine Cron-Einträge haben, und gibt für diejenigen, die welche haben, den Benutzernamen und die Crontab aus.

Ich stelle es hier ab, damit ich es später wiederfinden kann, falls ich jemals wieder danach suchen muss.

13voto

Viele der Antworten liefern zwar nützliche Ergebnisse, aber ich denke, der Aufwand, ein komplexes Skript für diese Aufgabe zu pflegen, ist es nicht wert. Das liegt vor allem daran, dass die meisten Distros unterschiedliche Cron-Daemons verwenden.

Seht zu und lernt, Kinder und Ältere.

$ \cat ~jaroslav/bin/ls-crons 
#!/bin/bash
getent passwd | awk -F: '{ print $1 }' | xargs -I% sh -c 'crontab -l -u % | sed "/^$/d; /^#/d; s/^/% /"' 2>/dev/null
echo
cat /etc/crontab /etc/anacrontab 2>/dev/null | sed '/^$/d; /^#/d;'
echo
run-parts --list /etc/cron.hourly;
run-parts --list /etc/cron.daily;
run-parts --list /etc/cron.weekly;
run-parts --list /etc/cron.monthly;

So laufen

$ sudo ls-cron

Beispielhafte Ausgabe (Gentoo)

$ sudo ~jaroslav/bin/ls-crons 
jaroslav */5 * * * *  mv ~/java_error_in_PHPSTORM* ~/tmp 2>/dev/null
jaroslav 5 */24 * * * ~/bin/Find-home-files
jaroslav * 7 * * * cp /T/fortrabbit/ssh-config/fapps.tsv /home/jaroslav/reference/fortrabbit/fapps
jaroslav */8 1 * * * make -C /T/fortrabbit/ssh-config discover-apps # >/dev/null
jaroslav */7    * * * * getmail -r jazzoslav -r fortrabbit 2>/dev/null
jaroslav */1    * * * * /home/jaroslav/bin/checkmail
jaroslav *    9-18 * * * getmail -r fortrabbit 2>/dev/null

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
RANDOM_DELAY=45
START_HOURS_RANGE=3-22
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

/etc/cron.hourly/0anacron
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/mlocate
/etc/cron.weekly/mdadm
/etc/cron.weekly/pfl

Beispielhafte Ausgabe (Ubuntu)

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

/etc/cron.hourly/btrfs-quota-cleanup
/etc/cron.hourly/ntpdate-debian
/etc/cron.daily/apport
/etc/cron.daily/apt-compat
/etc/cron.daily/apt-show-versions
/etc/cron.daily/aptitude
/etc/cron.daily/bsdmainutils
/etc/cron.daily/dpkg
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/mlocate
/etc/cron.daily/passwd
/etc/cron.daily/popularity-contest
/etc/cron.daily/ubuntu-advantage-tools
/etc/cron.daily/update-notifier-common
/etc/cron.daily/upstart
/etc/cron.weekly/apt-xapian-index
/etc/cron.weekly/man-db
/etc/cron.weekly/update-notifier-common

Bilder

Ubuntu:

ubuntu

Gentoo:

gentoo

12voto

Sam Arul Raj T Punkte 1702

Dieses Skript hat bei mir unter CentOS funktioniert, um alle Crons in der Umgebung aufzulisten:

sudo cat /etc/passwd | sed 's/^\([^:]*\):.*$/sudo crontab -u \1 -l 2>\&1/' | grep -v "no crontab for" | sh

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X