cron cron jest opartym na czasie programem do harmonogramowania zadań w systemach operacyjnych z rodziny Unixa. Może zostać wykorzystany do uruchamiania zadań (programów, komend, skryptów) o określonych godzinach, datach albo regularnie zgodnie z określonym interwałem. Aby wyświetlić znajdujące się w cron'ie zaplanowane zadania wykonaj polecenie: Code (Bash): crontab -l Aby dodać nowe zadanie do cron'a: Edytuj plik /etc/config/crontab, za pomocą edytora np.: nano, vi lub mcedit Code (Bash): mcedit /etc/config/crontab # lub vi... vi /etc/config/crontab Przeładuj cron'a i zrestartuj jego usługę: Code (Bash): crontab /etc/config/crontab && /etc/init.d/crond.sh restart Uprawnienia pliku Pamiętaj, aby uruchamiany plik z crona miał uprawnienie wykonania. chmod +x plik.sh Stara metoda: Wielu z Was pewnie chcialoby dodac jakas swoja aplikacje do crontab'a. Sprawa bardzo prosta lecz nie robimy tego w sposob crontab -e, lecz: Code (Text): vi /mnt/HDA_ROOT/.config/crontab
Witam. Na Qnap'ie 109 crontab pamięta ustawienia po restarcie natomiast na 509 po każdym restarcie crontab jest bez moich wpisów, co prawda wpisywałem przy urzyciu edytora z MC ale to chyba nie ma znaczenia? Gdzie i jak można ustawić crontaba na stałe?
Na moim TS-109 II faktycznie, jakakolwiek modyfikacja po crontab -e nie jest zapisywana. Zmieniłem plik /mnt/HDA_ROOT/.config/crontab zrestartowalem /etc/init.d/crond.sh restart. Ale crontab -l wypisuje wciąż starą listę zadań różną od tego co mam w pliku /mnt/HDA_ROOT/.config/crontab. Jak sprawdzić, skąd faktycznie cron czyta plik?
cron dziala na danych zapisanych w Code (Text): /var/spool/cron/crontabs/ Nie edytuje się ich bezpośrednio, lecz wymusza załadowanie z pliku: Code (Text): crontab /etc/config/crontab Trzeba tu wspomnieć, że /etc/config/crontab jest podlinkowany do /mnt/HDA_ROOT/.config/crontab, a więc w Twoim przypadku, przed restartem crond trzeba jeszcze wywołać crontab /etc/config/crontab.
Co może być na rzeczy, że po starcie QTS nie uruchamia się moje zadania z cron-a. Postępowałem wg powyższych instrukji, wpis nie jest tracony z tablicy. Zaczyna dopiero funkcjonować po: Code (Bash): /etc/init.d/crond.sh restart
Klasyczny problem. Otóż @kaktus wyobraź sobie, że podczas startu Twój system ma zupełnie inne zmienne środowiskowe niż te, które są po Twoim zalogowaniu się na FAQ shell z /etc/profile. Dlatego w cron'ie zrób sobie wpis na plik pośredni który będzie logował uruchomienie docelowego pliku. Code (Bash): #!/bin/sh EXECLOG="/share/Public/cronexec.log" # log stderr sh /share/Public/runme.sh >> $EXECLOG 2>&1 # lub stdout sh /share/Public/runme.sh >> $EXECLOG # albo jesli posiadasz w systemie tee export PATH="$PATH:/usr/bin:/opt/bin" sh /share/Public/runme.sh | tee -a $EXECLOG Pamiętaj też, żeby wykorzystywać crontab do zadań do, którym ma on służyć. Czyli cykliczny harmonogram uruchomień programu. Przypadkiem nie używaj crontab'a jako alternatywy do autostartu.
Tych czarówmarów nie uskuteczniłem, ale naprowadziłeś mnie na rozwiązanie, dopisałem pełną ścieżkę do wywoływanego programu Powinno działać po restarcie lepiej.