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?
command-line
email
cron
rkhunter
Überschallknall
quelle
quelle
Antworten:
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, dh er verwendet
sudo
, und fügt dann das getestete Skript / den getesteten Befehl zu seiner Liste der Cron-Jobs hinzu (crontab
). Das Ergebnis ist, dass der Cron-Job des Benutzers nicht ausgeführt werden kann, da er erhöhte Berechtigungen benötigt.crontab -e
sudo crontab -e
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:
wie das Community-Wiki erwähnt .
Vielleicht möchten Sie das Community-Wiki über Cron lesen, das weitere Details zu den oben genannten Themen enthält.
quelle
Nach dieser 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
quelle
man run-parts
"Namen müssen vollständig aus ASCII-Groß- und Kleinbuchstaben, ASCII-Ziffern, ASCII-Unterstrichen und ASCII-Minus-Bindestrichen bestehen" zuIch denke, dass Dateien mit Erweiterungen ignoriert werden.
Lauf:
Wenn Ihre Skripte nicht aufgelistet sind, entfernen Sie die .sh-Erweiterungen und versuchen Sie es erneut.
quelle
In meinem System war es, weil Anacron nicht installiert war.
Installieren Sie also entweder anacron oder entfernen Sie test -x / usr / sbin / anacron
quelle
dpkg --get-selections | grep cron
.. <schwört>anacron
ist nicht notwendig; Der||
Operator in den crontab-Befehlen wird ausgeführt,run-parts
wenn anacron NICHT installiert ist. Bei deranacron
Installation werden diese täglichen / wöchentlichen / monatlichenrun-parts
Befehle überflüssig.Um Stef zu antworten, sollten Sie auch sicherstellen, dass sie das ausführbare Bit haben:
Sie sollten sie mit ausführen können
chmod +x filename
.quelle
Benennen Sie Ihre Datei so um, dass sie nicht die Erweiterung .sh hat
Versuchen Sie, dies zu überprüfen
Sie werden sehen, dass es nicht aufgeführt ist. Also laufe:
und versuchen Sie es erneut. Es sollte aufgelistet sein.
quelle
Ich konnte es nicht mit Anacron zum Laufen bringen, ich habe Anacron entfernt
/etc/crontab
und ausgeführtapt remove --purge anacron
und es funktioniert sofort.Ich verstehe nicht, warum wir zwei Scheduler brauchen.
quelle