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

4voto

Ali Punkte 17386

Aufbauend auf @Kyle

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

um die Kommentare zu vermeiden, die normalerweise am Anfang von /etc/passwd stehen,

Und auf macosx

for user in $(dscl . -list /users | cut -f1 -d:); do echo $user; crontab -u $user -l; done

4voto

david collier Punkte 81

Mit Entschuldigung und Dank an yukondude.

Ich habe versucht, die Zeitvorgaben so zusammenzufassen, dass sie leicht zu lesen sind, auch wenn das nicht perfekt ist und ich die Angaben "jeden Freitag" oder "nur montags" nicht berücksichtige.

Dies ist die Version 10 - jetzt:

  • läuft viel, viel schneller
  • verfügt über optionale Fortschrittszeichen, mit denen Sie die Geschwindigkeit weiter erhöhen können.
  • verwendet eine Trennlinie, um Kopf und Ausgabe zu trennen.
  • Ausgaben in einem kompakten Format, wenn alle erfassten Zeitintervalle zusammengefasst werden können.
  • Akzeptiert Jan...Dec Deskriptoren für die Monate des Jahres
  • Akzeptiert Mon...Sun Deskriptoren für Wochentage
  • versucht, mit dem Debian-ähnlichen Dummy-Up von Anacron umzugehen, wenn es fehlt
  • versucht, mit crontab-Zeilen umzugehen, die eine Datei nach vorheriger Prüfung der Ausführbarkeit mit "[ -x ... ]" ausführen
  • versucht, mit Crontab-Zeilen umzugehen, die eine Datei ausführen, nachdem die Ausführbarkeit mit "command -v" vorab getestet wurde
  • ermöglicht die Verwendung von Intervallspannen und Listen.
  • unterstützt die Verwendung von run-parts in benutzerspezifischen /var/spool crontab-Dateien.

Ich veröffentliche das Skript jetzt hier in vollem Umfang.

https://gist.github.com/myshkin-uk/d667116d3e2d689f23f18f6cd3c71107

3voto

fedorqui Punkte 249453

Da es sich um eine Schleifenbildung durch eine Datei handelt ( /etc/passwd ) und eine Aktion ausführt, fehlt mir der richtige Ansatz für Wie kann ich eine Datei (Datenstrom, Variable) Zeile für Zeile (und/oder Feld für Feld) lesen? :

while IFS=":" read -r user _
do
   echo "crontab for user ${user}:"
   crontab -u "$user" -l
done < /etc/passwd

Diese lautet /etc/passwd Zeile für Zeile mit : als Feldbegrenzer. Mit den Worten read -r user _ machen wir $user halten das erste Feld und _ den Rest (es ist nur eine Junk-Variable, um Felder zu ignorieren).

Auf diese Weise können wir dann crontab -u unter Verwendung der Variablen $user die wir zur Sicherheit zitieren (was ist, wenn sie Leerzeichen enthält? Das ist in einer solchen Datei zwar unwahrscheinlich, aber man kann nie wissen).

2voto

Manifest Man Punkte 675

Ich verwende in der Regel die folgenden kleinen Befehle, um alle Aufträge für einen einzelnen Benutzer und alle Benutzer auf Unix-basierten Betriebssystemen mit einer modernen Bash-Konsole aufzulisten:

1. Einzelner Benutzer

 echo "Jobs owned by $USER" && crontab -l -u $USER

2. Alle Benutzer

for wellknownUser in $(cut -f1 -d: /etc/passwd);
   do
      echo "Jobs owned by $wellknownUser";
      crontab -l -u $wellknownUser;
      echo -e "\n";
      sleep 2;  # (optional sleep 2 seconds) while drinking a coffee
   done

-1voto

Nic0 Punkte 118

Für mich ist der Blick in /var/spool/cron/crontabs der beste Weg

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