Ok, więc stworzyłem swój skrypt, upuściłem go, /etc/cron.hourly
a następnie chmod 777
plik, ale nie uruchomi się (automatycznie). Jeśli uruchomię go ręcznie, działa dobrze. Czy muszę zrobić coś jeszcze?
Ok, więc stworzyłem swój skrypt, upuściłem go, /etc/cron.hourly
a następnie chmod 777
plik, ale nie uruchomi się (automatycznie). Jeśli uruchomię go ręcznie, działa dobrze. Czy muszę zrobić coś jeszcze?
Odpowiedzi:
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
cron.daily
i 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.
/etc/crontab
: cron.daily
, cron.weekly
i cron.monthly
biegać z anacron (jeśli są dostępne), ale co godzinę run-parts --report /etc/cron.hourly
.
Wpisy cron.hourly
są uruchamiane przez mechanizm części roboczych ( man run-parts
więcej informacji). I run-parts
jest 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
, .weekly
itp), zawsze przetestować potem, że run-parts
faktycznie 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?
giving your script an extension will make it invalid and result in the job not being run
--report
do faktycznego uruchomienia skryptów.
Odpowiedź DaithiF powinna być właściwą odpowiedzią.
Poza tym mój skrypt nie miał #!/bin/bash
w pierwszym wierszu. Mimo że skrypt można wykonać za pomocą wiersza polecenia, run-parts
odrzucił go, mówiąc „Błąd formatu wykonania”.
Zmiana nazwy pliku z scriptname.sh
celu scriptname
i dodanie #!/bin/bash
w pierwszej linii włączony mój skrypt do uruchomienia co godzinę.
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 :)