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?
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?
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.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.
/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.
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?
giving your script an extension will make it invalid and result in the job not being run
--reportdo faktycznego uruchomienia skryptów.
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ę.
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 :)