How-To Cron (Crontab) - harmonogram zadań - edycja

Silas Mariusz

rm -rf /
Help us, GOD!
Apr 5, 2008
10,210
31
2,315
153
39
Nowy Sącz
forum.qnap.net.pl
QNAP
TS-x77
Ethernet
1 GbE
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:
Bash:
crontab -l

Aby dodać nowe zadanie do cron'a:
  1. Edytuj plik /etc/config/crontab, za pomocą edytora np.: nano, vi lub mcedit
    Bash:
    mcedit /etc/config/crontab
    
    # lub vi...
    vi /etc/config/crontab

  2. Przeładuj cron'a i zrestartuj jego usługę:
    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:
vi /mnt/HDA_ROOT/.config/crontab
 
  • Like
Reactions: QNAP and kaktus
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?
 
m@k said:
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:
/var/spool/cron/crontabs/
Nie edytuje się ich bezpośrednio, lecz wymusza załadowanie z pliku:
Code:
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.
 
  • Like
Reactions: kaktus
  • ·
  • TS-219P+
  • ·
  • 1 GbE
  • ·
  • ostatni możliwy do używania
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:
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 shell z /etc/profile.

Dlatego w cron'ie zrób sobie wpis na plik pośredni który będzie logował uruchomienie docelowego pliku.
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.
 
  • ·
  • TS-219P+
  • ·
  • 1 GbE
  • ·
  • ostatni możliwy do używania
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. ;-p
 

Users search this thread by keywords

  1. crontab edycja