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...

12voto

Doris Punkte 121

Wenn Sie einen Cluster mit NIS überprüfen, ist die einzige Möglichkeit zu sehen, ob ein Benutzer einen Crontab-Eintrag hat, gemäß Matts Antwort /var/spool/cron/tabs.

grep -v "#" -R  /var/spool/cron/tabs

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

10voto

linux.cnf Punkte 323

Ich habe das untenstehende Skript erstellt und es hat bei mir funktioniert, um alle Cron-Jobs für alle Benutzer aufzulisten.

cat /etc/passwd |awk -F ':' '{print $1}'|while read a;do crontab -l -u ${a} ; done

10voto

Dale Anderson Punkte 1799

Im Folgenden werden Kommentare, Leerzeilen und Fehler von Benutzern ohne Crontab entfernt. Alles, was übrig bleibt, ist eine übersichtliche Liste der Benutzer und ihrer Aufgaben.

Beachten Sie die Verwendung von sudo in der 2. Zeile. Wenn Sie bereits Root sind, entfernen Sie das.

for USER in $(cut -f1 -d: /etc/passwd); do \
USERTAB="$(sudo crontab -u "$USER" -l 2>&1)";  \
FILTERED="$(echo "$USERTAB"| grep -vE '^#|^$|no crontab for|cannot use this program')";  \
if ! test -z "$FILTERED"; then  \
echo "# ------ $(tput bold)$USER$(tput sgr0) ------";  \
echo "$FILTERED";  \
echo "";  \
fi;  \
done

Beispielhafte Ausgabe:

# ------ root ------
0 */6 * * * /usr/local/bin/disk-space-notify.sh
45 3 * * * /opt/mysql-backups/mysql-backups.sh
5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

# ------ sammy ------
55 * * * * wget -O - -q -t 1 https://www.example.com/cron.php > /dev/null

Ich verwende es unter Ubuntu (12 bis 16) und Red Hat (5 bis 7).

9voto

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

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