Instruktaż/Tutorial Cron (Crontab) - harmonogram zadań - edycja

Silas Mariusz

Silas Mariusz

rm -rf /
Help us, GOD!
5 Kwiecień 2008
10 173
31
2 250
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:
Kod:
vi /mnt/HDA_ROOT/.config/crontab
 
  • Lubię to
Reakcje: QNAP i 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 napisał:
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
Kod:
/var/spool/cron/crontabs/
Nie edytuje się ich bezpośrednio, lecz wymusza załadowanie z pliku:
Kod:
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.
 
  • Lubię to
Reakcje: kaktus
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.
 
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
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. crontab edycja