Mein Systemadministrator hat eine Reihe von Cron-Jobs auf meinem Computer eingerichtet. Ich möchte genau wissen, was zu welcher Zeit geplant ist. Wie kann ich diese Liste bekommen?
Mein Systemadministrator hat eine Reihe von Cron-Jobs auf meinem Computer eingerichtet. Ich möchte genau wissen, was zu welcher Zeit geplant ist. Wie kann ich diese Liste bekommen?
Antworten:
Abhängig davon, wie Ihr Linux-System eingerichtet ist, können Sie Folgendes überprüfen:
/var/spool/cron/*
(Benutzer crontabs)/etc/crontab
(systemweite crontab)Viele Distributionen haben auch:
/etc/cron.d/*
Diese Konfigurationen haben die gleiche Syntax wie /etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
,/etc/cron.monthly
Dies sind einfach Verzeichnisse, die ausführbare Dateien enthalten, die stündlich, täglich, wöchentlich oder monatlich nach ihrem Verzeichnisnamen ausgeführt werden.
Darüber hinaus können Sie bei Jobs (Scheck /var/spool/at/*
), Anacron ( /etc/anacrontab
und /var/spool/anacron/*
) und wahrscheinlich andere, die ich vergesse.
/etc/cron.daily
. Wie funktioniert diese daily
Datei? Wann werden die täglichen Jobs ausgeführt? Auf meinem Rechner scheinen sie gegen Mittag zu laufen, aber es würde meinem Sysadmin gerne sagen, wie man das stattdessen auf Mitternacht umstellt.
/etc/crontab
, zB auf meinem Ubuntu-System heißt das: 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
6:25 Uhr.
cronie
kümmert sich der Daemon um diejenigen, die die Konfiguration in verwenden /etc/anacrontab
.
/var/cron
auch dabei.
Bei den meisten Crons (z. B. Vixie-Cron - Debian / Ubuntu-Standard, Cronie - Fedora-Standard, Solaris Cron ...) erhalten Sie die Liste der geplanten Cron-Jobs für den aktuellen Benutzer über:
$ crontab -l
oder für einen anderen Benutzer über
# crontab -l -u juser
Um die Crontabs für alle Benutzer zu erhalten, können Sie eine Schleife über alle Benutzer ausführen und diesen Befehl aufrufen.
Alternativ können Sie die Spooldateien nachschlagen. In der Regel werden sie unter /var/spool/cron
zB für vcron following gespeichert
/var/spool/cron/crontabs
enthält alle konfigurierten crontabs aller Benutzer - mit Ausnahme des Root-Benutzers, der Jobs auch über die systemweite crontab konfigurieren kann, die sich unter befindet
/etc/crontab
Mit cronie (Standardeinstellung unter Fedora / CentOS) gibt es auch ein .d
Konfigurationsverzeichnis für System-Cron-Jobs:
/etc/cron.d
(Wie immer .d
vereinfacht das Verzeichnis die Verwaltung von Konfigurationseinträgen, die Teil verschiedener Pakete sind.)
Der Einfachheit halber bieten die meisten Distributionen auch Verzeichnisse, in denen verknüpfte / gespeicherte Skripte regelmäßig ausgeführt werden, z.
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Die rechtzeitige Ausführung dieser Skripte wird normalerweise über run-parts
Einträge in der System-Crontab oder über Anacron verwaltet .
Mit Systemd (zB unter Fedora, CentOS 7, ...) kann zusätzlich die periodische Jobausführung über Timer-Einheiten konfiguriert werden . Die aktivierten Systemzeitgeber können angezeigt werden über:
$ systemctl list-timers
Beachten Sie, dass Benutzer neben root möglicherweise auch systemd-Instanzen ausführen, in denen Timer konfiguriert sind. Beispielsweise wird unter Fedora standardmäßig eine systemd-Benutzerinstanz für jeden derzeit angemeldeten Benutzer gestartet. Sie können folgendermaßen erkannt werden:
$ ps aux | grep 'systemd[ ]--user'
Diese Benutzer-Timer können aufgelistet werden über:
$ systemctl --user list-timers
Eine Alternative zur Ausgabe des list-timers
Befehls besteht darin, nach Timer-Unit-Dateien (Muster:) *.timer
und symbolischen Verknüpfungen zu diesen in den üblichen System- und Benutzersystem-Konfigurationsverzeichnissen zu suchen :
$ 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
(Wie bei normalen Serviceeinheiten wird eine Zeitgebereinheit durch Erstellen einer symbolischen Verknüpfung im rechten Konfigurationsverzeichnis von systemd aktiviert.)
Siehe auch:
crontab -l -u root
(weil diese Cronjobs, die ich kennenlernen möchte, unterlaufen root
), und es heißt, ich habe keine Berechtigungen zum Verwenden -u
.
root
Benutzer.
cronie
, wie in Fedora und RHEL6 ausgeliefert, beziehen sich nicht auf die in /etc/crontab
, sondern verwenden /etc/anacrontab
. Möglicherweise irre ich mich bei tatsächlichen Implementierungen, die in keiner Konfigurationsdatei auf diese verweisen. (Aber dann habe ich auch nicht abgelehnt ... ich sage es nur.)
Zum Auflisten aller Cron für den angegebenen Benutzer.
crontab -u Benutzername -l;
Um alle Benutzer für alle Benutzer aufzulisten
Führen Sie es als Superuser aus
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
root
oderapache
oder was auch immer, aber man sollte verwenden/etc/crontab
oder (besser in den meisten Distributionen)/etc/cron.d
und/etc/cron.[timeframe]
.