it-swarm.com.de

cron.daily-Jobs laufen nicht

Ich habe 3 tägliche Cron-Jobs erstellt, die ausgeführt werden sollen.

Unten sind die drei, die in etc/cron.daily abgelegt sind

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' [email protected]

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" [email protected]

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' [email protected]

Ich habe natürlich [email protected] durch meine E-Mail ersetzt.

Wenn ich diesen Cronjob manuell starte, funktioniert er einwandfrei ./nameoffile.sh

Aber es läuft nicht täglich, was kann die Ursache sein oder wie kann ich das überprüfen?

19
sonicboom

Es gibt zwei mögliche Verdächtige, die normalerweise dazu führen, dass cron Jobs nicht ausgeführt werden können.

Das erste Problem sind Berechtigungsprobleme, dh ein Benutzer kann das Skript/den Befehl ausführen, der Cron-Daemon jedoch nicht, da sich der Job in den Cron-Jobs des falschen Benutzers befindet. Beispielsweise erstellt der Benutzer ein Skript oder führt einen Befehl mit erhöhten Rechten aus, z. B. mit Sudo, und fügt dann das getestete Skript/den getesteten Befehl zu seiner Liste der Cron-Jobs (crontab) hinzu. Das Ergebnis ist, dass der Cron-Job des Benutzers nicht ausgeführt werden kann, da er erhöhte Berechtigungen benötigt.

  • Um einen Cron-Job in die Crontab des aktuellen Benutzers einzufügen, geben Sie crontab -e ein.
  • Geben Sie Sudo crontab -e ein, um einen Cron-Job in die crontab von root zu schreiben.

Der zweite Grund sind die Pfade. Um sicherzustellen, dass das Skript ausgeführt wird, muss der Benutzer dem Skript, das in crontab ausgeführt werden soll, den vollständigen Pfad hinzufügen. Eine andere Lösung wäre, die PATH-Variable des Root-Benutzers zu erweitern, indem Sie die folgende Zeile oben in die crontab-Datei einfügen:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

als Community-Wiki Erwähnungen .

Vielleicht möchten Sie das Community-Wiki über Cron lesen, da es weitere Details zu den oben genannten Themen enthält.

6
Stef K

Laut this Antwort liegt das Problem bei der Erweiterung .sh. Entfernen Sie das (also benennen Sie zum Beispiel Ihre Datei von rkhunter.sh in rkhunter um).

Führen Sie zur Bestätigung den folgenden Befehl aus: run-parts --test /etc/cron.daily

Wenn Ihr Skript (rkhunter) in den Ergebnissen enthalten ist, ist alles in Ordnung. Weitere Informationen zum Befehl run-parts finden Sie in den Manpages man run-parts.

73
user19366

In meinem System war es, weil Anacron nicht installiert war.

grep run-parts /etc/crontab

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 )

Installieren Sie also entweder anacron oder entfernen Sie test -x/usr/sbin/anacron

10
Natim

Ich denke, dass Dateien mit Erweiterungen ignoriert werden.

lauf:

 run-parts --test /etc/cron.daily

Wenn Ihre Skripte nicht aufgelistet sind, entfernen Sie die .sh-Erweiterungen und versuchen Sie es erneut.

8
rharriso

Um Stef zu antworten, sollten Sie auch sicherstellen, dass sie das ausführbare Bit haben:

$ ls -l
-rwxr-xr-x  1 root root   268 Jun  1 08:06 00logwatch
-rwxr-xr-x  1 root root   311 May 22  2012 0anacron
-rwxr-xr-x  1 root root 15007 Jun  6 14:08 apt

Sie sollten in der Lage sein, sie mit chmod +x filename auszuführen.

5
Braiam

Benennen Sie Ihre Datei so um, dass sie nicht die Erweiterung .sh hat

Versuchen Sie, dies zu überprüfen

Sudo run-parts --list /etc/cron.daily 

sie werden sehen, dass es nicht aufgeführt ist. Also laufe:

mv script.sh script

und versuchen Sie es erneut. Es sollte aufgelistet sein.

4
Elan Kivity

Ich konnte es nicht mit Anacron zum Laufen bringen, ich habe Anacron aus /etc/crontab entfernt und apt remove --purge anacron ausgeführt und es funktioniert sofort.

Ich verstehe nicht, warum wir zwei Scheduler brauchen.

0
Patrik Laszlo