it-swarm.com.de

Crontab wird in /etc/cron.d nie ausgeführt

Folgendes habe ich bei Debian Jessie gemacht:

  • installiere cron über apt-get install cron
  • setze ein backup_crontab Datei in /etc/cron.d/

Die Aufgabe wird jedoch nie ausgeführt.

Hier sind einige Ausgaben:

/# crontab -l
no crontab for root

/# cd /etc/cron.d && ls
backup_crontab

/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

Gibt es etwas zu tun, um eine bestimmte Crontab zu aktivieren oder um den Cron "Service" an sich zu aktivieren?

34
Jivan

Dateien in /etc/cron.d muss auch den Benutzer auflisten, unter dem der Job ausgeführt werden soll.

d.h.

0,15,30,45 * * * * root /backup.sh >/dev/null 2>&1

Sie sollten auch sicherstellen, dass die Berechtigungen und die Gruppe owner: korrekt festgelegt sind (-rw-r--r-- und im Besitz von root:root)

53
Stephen Harris

Eine andere Sache, die ich beobachtet habe, ist, dass die Datei in /etc/cron.d kann keine Erweiterung haben. In meinem speziellen Fall hatte ich eine symbolische Verbindung:

# my-job.crontab
* * * * * root echo "my job is running!" >> /tmp/my-job.log

$: ln -sf /home/me/my-job.crontab /etc/cron.d/
# This did not work -> job would not run

$: ln -sf /home/me/my-job.crontab /etc/cron.d/my-job
# This did work -> job ran fine

Dateinamenbeschränkungen sind auf der Run-Part-Manpage dokumentiert: http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html , man kann einen --regex übergeben Option zum Überschreiben des Dateiformats.

Das Standard-Cron-Verhalten blieb jedoch ohne Erweiterungen, siehe Kommentare unter: https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022

11

Ich denke, Sie vermissen wahrscheinlich nur eine notwendige Leerzeile am Ende Ihrer Cron-Datei. Ich hatte das gleiche Problem, aber nachdem ich alle hier aufgeführten Informationen (Benutzerberechtigungen, Dateiname, Cron-Version usw.) überprüft hatte, stellte ich fest, dass ich nach dem letzten Eintrag in meinem /etc/cron.d/own_cron Keinen Zeilenumbruch hatte und dies das Ganze verursacht Datei wird ignoriert.

6
slac1024

Wenn Sie der einzige Benutzer auf diesem Computer sind, möchten Sie möglicherweise nur crontab -e Verwenden. Sie werden aufgefordert, einen Editor auszuwählen, wenn Sie den Befehl zum ersten Mal ausführen. Dann können Sie dies hinzufügen:

0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

Wenn Sie zu einem normalen Benutzerkonto wechseln, müssen Sie Sudo crontab -e Verwenden, um die Skripts zu konfigurieren, deren Ausführung als root geplant ist.

crontab -l Zeigt nur die aktuelle Crontab an, wenn Sie eine mit crontab -e Einrichten. Wenn Sie eine Cron-Datei in /etc/cron.d/Haben, wird diese nicht mit crontab -l Angezeigt.

Sie müssen auch überprüfen, ob Ihr Skript ausführbar ist mit: chmod +x /backup.sh.

2
clk

Für Cron aus * bian-Distributionen (wie Raspbian) müssen Sie den Parameter -l Des Cron-Daemons aktivieren. Dies ist ratsam, indem Sie die Konfigurationsdatei /etc/default/cron Verwenden und EXTRA_OPTS Aktivieren.

2
touchwood
  1. Überprüfen Sie zunächst die /var/log/syslog Datei für cron.d Fehler,

    Sudo grep "cron.d" /var/log/syslog |grep -i error

    könnte nützlich sein, um Fehler wie schlechte Benutzernamen oder schlechte Syntax zu finden

  2. Wenn Sie keine haben, suchen Sie nach allen cron.d Einträge in dieselbe Datei mit

    Sudo grep "cron.d" /var/log/syslog

1

Überprüfen Sie Ihre Version von cron.

Wenn Sie Dillons Crond verwenden, benötigen Sie den Benutzer anscheinend nicht in einem /etc/cron.d - Eintrag.

Ich fand das heraus, nachdem ich fast meine restlichen Haare herausgezogen hatte.

Ich habe eine Handvoll Einträge, die von verschiedenen Installationen in /etc/cron.d Abgelegt wurden. Nach einigen Nachforschungen stellte ich fest, dass einer von ihnen arbeitete. Es hatte nicht den Benutzer. Also habe ich den Benutzer aus den anderen herausgenommen. Und sie fingen an zu arbeiten.

1
James Nelson