Cron¶
Cron to specjalny program, odpowiedzialny za cykliczne wykonywanie zadań. Każdy użytkownik posiada specjalną tabelę crontab
, w której może ustawić jakie programy i kiedy powinny zostać automatycznie uruchomione.
DevilWEB¶
Po zalogowaniu się do panelu administracyjnego konfiguracja Cron znajduje się w zakładce Zadania Cron
. Po kliknięciu przycisku Edytuj
pokaże się tabela cron. Z prawej strony wpisu jest przycisk do włączenia bądź wyłączenia danego wpisu oraz przycisk do usunięcia zadania.
Aby dodać wpis należy kliknąć + Dodaj zadanie Cron
i wypełnić pola na stronie. Na przykładz skrypt /usr/home/LOGIN/skrypt.sh
będzie wykonywany o 5:30 co niedzielę
.
Linia poleceń¶
Zarządzanie tabelami Cron jest również możliwe z linii poleceń komendą crontab
:
crontab -l
- pokazuje obecną tabelę croncrontab -e
- edytuje tabelęcrontab -r
- usuwa tabelę
Po wykonaniu polecenia crontab -e
tabela otwierana jest w domyślnym edytorze. Aby zmienić domyślny edytor należy zmienić zmienną środowiskową EDITOR
. Na przykład zmiana domyślnego edytora na nano
odbywa się przez polecenie: echo 'export EDITOR=nano' >> $HOME/.bashrc && source $HOME/.bashrc
. Dopisane export EDITOR=nano
do pliku /usr/home/LOGIN/.bashrc
spowoduje trwałą zmianę domyślnego edytora.
Przykłady¶
Poniżej prezentujemy przykładową tabelę cron. Należy zwrócić szczególną uwagę na zmienną PATH
- sprawia ona, że praca z Cronem staje się wygodniejsza.
# Używaj /usr/local/bin/bash do wywoływania komend. Ta linijka nie jest wymagana do działania crontab.
SHELL=/usr/local/bin/bash
# Użyj następującej wartości zmiennej PATH. Bez tego musimy podawać pełne ścieżki do binarek
# (przykładowo, zamiast python musimy podać /usr/local/bin/python, etc.)
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/home/LOGIN/bin
# Uruchamiaj się 5 minut po północy, codziennie
5 0 * * * /usr/home/LOGIN/bin/daily.job >> /usr/home/LOGIN/tmp/out 2>&1
# Uruchamiaj się o 14:15 pierwszego dnia każdego miesiąca -- wyjście jest
# przesyłane na adres e-mail
15 14 1 * * /usr/home/LOGIN/bin/monthly
# Denerwuj Stefana od poniedziałku do piątku o godzinie 22:00
0 22 * * 1-5 echo "Stefanie, jest już 22:00. Gdzie są Twoje dzieci?!" | mail -s "Wybiła 22:00" stefan@domena
# Wysyłane maila (codziennie o północy)
0 0 * * * echo -e "Subject: Tytuł maila\n$x" | /usr/sbin/sendmail adres@email
# Inne przykłady
23 0-23/2 * * * echo "uruchamiaj 23 min po polnocy, 2, 4, ..., codziennie"
5 4 * * sun echo "Uruchamiaj się 5 po 4 w niedziele"
0 10 * * 1,3 echo "Uruchamiaj się w każdy poniedzialek i srode o 10.00"
*/2 * * * * echo "Uruchamiaj się co 2 minuty"
# Lub z wykorzystaniem zapisu słownego z wykorzystaniem znaku "@" tzn.:
@reboot echo "System uruchomił się!"; # - polecenie uruchamiane każdorazowo po uruchomieniu systemu
@yearly echo "Minął kolejny rok!"; # - odpowiednik zapisu "0 0 1 1 *
@annually echo "Minął kolejny rok!"; # - jak wyżej
@monthly echo "Minął kolejny miesiąc!"; # - odpowiednik zapisu "0 0 1 * *"
@weekly echo "Minął kolejny tydzień!"; # - odpowiednik zapisu "0 0 * * 0"
@daily echo "Minął kolejny dzień!"; # - odpowiednik zapisu "0 0 * * *"
@midnight echo "Minął kolejny dzień!"; # - jak wyżej
@hourly echo "Minęła kolejna godzina!"; # - odpowiednik zapisu "0 * * * *"