Wie werden Dateien unter /etc/cron.d verwendet?

19

Wie werden Dateien unter /etc/cron.d verwendet?

Von https://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

cron liest die Dateien im Verzeichnis /etc/cron.d/. Normalerweise platzieren Systemdämons wie sa-update oder sysstat hier ihren Cronjob. Als Root-Benutzer oder Superuser können Sie folgende Verzeichnisse verwenden, um Cron-Jobs zu konfigurieren. Hier können Sie Ihre Skripte direkt ablegen . Der Befehl run-parts führt Skripte oder Programme in einem Verzeichnis über die Datei / etc / crontab aus :

/etc/cron.d/ Fügen Sie alle Skripte hier ein und rufen Sie sie aus der Datei / etc / crontab auf.

Unter Lubuntu 18.04 scheinen die Dateien unter /etc/cron.d Crontab-Dateien zu sein, keine Shell-Skripte (die im obigen Link erwähnt wurden):

$ cat /etc/cron.d/anacron 
# /etc/cron.d/anacron: crontab entries for the anacron package

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

30 7    * * *   root    [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi

Meine Datei / etc / crontab bezieht sich niemals auf Dateien unter / etc / cron.d, im Gegensatz zu dem, was der Link sagt:

$ cat /etc/crontab 
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
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 )

Können Sie erklären, wie die Dateien unter /etc/cron.d verwendet werden? Vielen Dank.

Tim
quelle

Antworten:

20

In Debian-Derivaten, einschließlich Lubuntu, sind die Dateien /etc/cron.deffektiv /etc/crontabSnippets mit demselben Format. Zitieren der cronManpage :

cronLiest außerdem in Debian die Dateien im /etc/cron.dVerzeichnis. cronbehandelt die Dateien /etc/cron.dgenauso wie die /etc/crontabDatei (sie folgen dem speziellen Format dieser Datei, dh sie enthalten das Benutzerfeld). Sie sind jedoch unabhängig von /etc/crontab: Sie erben beispielsweise keine Einstellungen für Umgebungsvariablen davon. Diese Änderung ist spezifisch für Debian, siehe den Hinweis unter DEBIAN SPECIFIC unten.

Ebenso /etc/crontabwerden die Dateien im /etc/cron.dVerzeichnis auf Änderungen überwacht. Im Allgemeinen sollte der Systemadministrator nicht /etc/cron.d/die Standard-System-Crontab verwenden /etc/crontab.

Der Debian-spezifische Abschnitt gibt Hinweise darauf, warum Systemadministratoren Folgendes nicht verwenden sollten /etc/cron.d:

Unterstützung für /etc/cron.d(Drop-In-Verzeichnis für Paket-Crontabs)

Es ist so konzipiert, dass Pakete Crontab-Snippets installieren können, ohne Änderungen vornehmen zu müssen /etc/crontab.

Stephen Kitt
quelle
Vielen Dank. Sind die Dateien in /etc/cron.d und / etc / crontab unabhängig voneinander und werden sie von crond unabhängig und getrennt gelesen? Oder enthält / etc / crontab jemals die Dateien in /etc/cron.d?
Tim
1
"Sie sind jedoch unabhängig von /etc/crontab", wie oben zitiert. Um ganz klar zu sein, /etc/crontabenthält /etc/cron.dstandardmäßig keine Dateien von . (Als Administrator könnten Sie Befehle einfügen /etc/cron.dund verwenden /etc/crontab, aber das wäre durchaus verwirrend.)
Stephen Kitt
Vielen Dank. "Im Allgemeinen sollte der Systemadministrator nicht /etc/cron.d/ verwenden, sondern das Standardsystem crontab / etc / crontab." Wann sollte ein Systemadministrator verwenden /var/spool/cron/crontabs/rootoder /etc/crontab?
Tim
Ich benutze immer nur /var/spool/cronfür benutzerspezifische Jobs. Jeder Systemjob sollte in /etc/crontaboder /etc/cron.{hourly,daily,weekly,monthly}IMO gehen.
Stephen Kitt
4
Die Leute könnten vermissen, dass " die Dateinamen den Dateinamenanforderungen von Run-Parts entsprechen müssen " (siehe Debians man cron). Daher werden Dateinamen, /etc/cron.d/die mit dem Shell-Glob übereinstimmen, *[!A-Za-z0-9_-]*ignoriert! Daher schaden Dinge wie *.dpkg-distoder vi-backups *~nicht, aber wenn Sie versehentlich erstellen /etc/cron.d/very_important.crontab, wird dies aufgrund der .darin enthaltenen ignoriert !
Tino