Stworzyłem 3 codzienne zadania crona do uruchomienia.
Poniżej znajdują się trzy, które są umieszczone w etc / cron.daily
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]
Mój adres e-mail.com oczywiście zastąpiłem moim adresem e-mail.
Jeśli uruchomię tę cronjob ręcznie, działa to dobrze ./nameoffile.sh
Ale to nie działa codziennie, co może być przyczyną lub w jaki sposób mogę to sprawdzić?
command-line
email
cron
rkhunter
GROM dźwiękowy
źródło
źródło
Odpowiedzi:
Możliwe są dwa podejrzane, które zwykle powodują, że
cron
zadania nie mogą zostać uruchomione.Pierwszym z nich są problemy z uprawnieniami, tzn. Użytkownik może uruchomić skrypt / polecenie, ale demon cron nie może, ponieważ zadanie jest w zadaniach crona niewłaściwego użytkownika. Na przykład użytkownik tworzy skrypt lub uruchamia polecenie z podwyższonymi uprawnieniami, tj. Używa
sudo
, a następnie dodaje przetestowany skrypt / polecenie do swojej listy zadań cron (crontab
). Powoduje to, że zadanie cron użytkownika nie będzie mogło zostać uruchomione, ponieważ wymaga podwyższonych uprawnień.crontab -e
sudo crontab -e
Drugi powód to ścieżki, aby mieć pewność, że skrypt zostanie wykonany, użytkownik musi dodać pełną ścieżkę do skryptu, który ma zostać wykonany w crontab. Innym rozwiązaniem byłoby rozszerzenie zmiennej PATH dla użytkowników root poprzez umieszczenie następującego wiersza u góry pliku crontab:
jak wspomina wiki społeczności .
Możesz przeczytać wiki społeczności o cronie, ponieważ zawiera ono dalsze szczegóły na temat powyższego.
źródło
Zgodnie z tą odpowiedzią problem leży w rozszerzeniu .sh. Usuń to (więc na przykład zmień nazwę pliku z rkhunter.sh na rkhunter.
Aby potwierdzić, uruchom następujące polecenie
run-parts --test /etc/cron.daily
Jeśli twój skrypt (rkhunter) znajduje się w wynikach, wszystko jest w porządku. Aby uzyskać więcej informacji na temat polecenia run-parts, przeczytaj znajdujące się na nim strony podręcznika man
man run-parts
źródło
man run-parts
„nazwy muszą składać się wyłącznie z wielkich i małych liter ASCII, cyfr ASCII, znaków podkreślenia ASCII i znaków minus ASCII”W moim systemie było tak dlatego, że anacron nie został zainstalowany.
Więc zainstaluj anacron lub usuń test -x / usr / sbin / anacron
źródło
dpkg --get-selections | grep cron
.. <anacron
nie jest konieczne;||
operator w crontab komendy uruchamiająrun-parts
gdy anacron nie jest zainstalowany. Poanacron
zainstalowaniu powoduje, że te codzienne / tygodniowe / miesięcznerun-parts
polecenia stają się zbędne.Myślę, że pliki z rozszerzeniami są ignorowane.
biegać:
Jeśli nie widzisz swoich skryptów na liście, usuń rozszerzenia .sh i spróbuj ponownie.
źródło
Dodając do odpowiedzi Stef, powinieneś również upewnić się, że mają one plik wykonywalny:
Powinieneś być w stanie uruchomić je za pomocą
chmod +x filename
.źródło
Zmień nazwę pliku, aby nie miał rozszerzenia .sh
Aby sprawdzić, czy to jest problem, spróbuj
zobaczysz, że nie ma go na liście. Więc uruchom:
i spróbuj jeszcze raz. Powinien być wymieniony.
źródło
Nie mogłem uruchomić go z anakronem, usunąłem anakron
/etc/crontab
i wykonałemapt remove --purge anacron
go i działa od razu.Nie rozumiem, dlaczego potrzebujemy dwóch harmonogramów.
źródło
Ta sama sytuacja dzisiaj tutaj
Zrobiłem
i znalezione
Odkryłem, że ktoś (ja !!!!) dodał wiersz zaczynający się od
i oczywiście 38. godzina nie istnieje!
źródło