Cron.hourly nie będzie działać


54

Ok, więc stworzyłem swój skrypt, upuściłem go, /etc/cron.hourlya następnie chmod 777plik, ale nie uruchomi się (automatycznie). Jeśli uruchomię go ręcznie, działa dobrze. Czy muszę zrobić coś jeszcze?


Ta odpowiedź nie powinna była otrzymać tylu głosów bez nazwy pliku i treści.
użytkownik nieznany

Odpowiedzi:


13

Dlaczego nie użyć crontab (/ etc / crontab) i użyć * / 1 w polu godziny. Użyłem tego do uruchamiania skryptu co 5 minut i działa dobrze:

# m h dom mon dow user  command
* */1  * * *   user    command

6
Używanie cron.dailyi znajomych działa nieco lepiej, jeśli maszyna nie działa przez cały czas, ponieważ anacron próbuje zbliżyć się do właściwego harmonogramu, podczas gdy zwykły cron po prostu nie uruchomi ich, jeśli maszyna nie będzie działać przez całą noc. W przypadku godzinowych prac prawdopodobnie nie ma to większego znaczenia.
poolie

9
Naprawdę doceniam następną odpowiedź, ponieważ dotyczy ona problemu z cron.hourly, zamiast znaleźć obejście.
tishma

4
To nie jest odpowiedź na pytanie
josh123a123

@poolie Jak można zobaczyć na/etc/crontab : cron.daily, cron.weeklyi cron.monthly biegać z anacron (jeśli są dostępne), ale co godzinę run-parts --report /etc/cron.hourly.
Pablo A

144

Wpisy cron.hourlysą uruchamiane przez mechanizm części roboczych ( man run-partswięcej informacji). I run-partsjest wybredny co do nazw plików, które uważa za prawidłowe.

Na przykład nadanie skryptu rozszerzenia spowoduje, że będzie ono nieprawidłowe i spowoduje, że zadanie nie zostanie uruchomione. [a-zA-Z0-9_-]są poprawnymi znakami, więc „.” czyni to nieważnym.

Podczas dodawania zadania do /etc/cron.hourly(lub .daily, .weeklyitp), zawsze przetestować potem, że run-partsfaktycznie go uruchomić za pomocą polecenia:

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

Jeśli uruchomienie tego polecenia pokazuje plik, oznacza to, że zadziałało. W przeciwnym razie, jeśli nic nie pokazuje, nazwa pliku jest nieprawidłowa.

Jak nazywał się twój skrypt?


Istnieją dwa: cerebro_random_response.sh i Cerebro Temperature.sh nie dobrze?
Switchkick

21
poprawnie, nie dobrze :) [a-zA-Z0-9_-] są poprawnymi znakami, więc „.” czyni to nieważnym. To, co
miałem na

11
oMG, to właśnie uratowało ogromny ból głowy. DZIĘKUJĘ CI! giving your script an extension will make it invalid and result in the job not being run
Jonathan S. Fisher

Możesz także użyć --reportdo faktycznego uruchomienia skryptów.
Pablo A

5

Problem prawdopodobnie wynika z nadmiernie otwartych uprawnień, które pozwalają każdemu edytować plik. Spróbuj 755zamiast tego.

Przejrzenie wpisów cron w danych wyjściowych syslog powinno to potwierdzić.


4

Odpowiedź DaithiF powinna być właściwą odpowiedzią.

Poza tym mój skrypt nie miał #!/bin/bashw pierwszym wierszu. Mimo że skrypt można wykonać za pomocą wiersza polecenia, run-partsodrzucił go, mówiąc „Błąd formatu wykonania”.

Zmiana nazwy pliku z scriptname.shcelu scriptnamei dodanie #!/bin/bashw pierwszej linii włączony mój skrypt do uruchomienia co godzinę.


-1

Kiedy biegniesz

crontab -l

czy to zadanie jest na liście?

jeśli nie, dodaj go

crontab -e

dodaj tę linię

0 * * * * yourScript

jeśli jest na tej liście, spróbuj dodać ścieżkę języka programowania na górze skryptu

Przykład:

bash: #!/bin/bash

Te 2 rzeczy zawsze rozwiązały moje problemy :)


Zrobiłem to wszystko, a skrypt jest dobry, działa jak urok. Jest również na liście crontab, ale nie uruchamia się co godzinę. W każdym razie dzięki :(
Switchkick,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.