Cron: Różnice pomiędzy wersjami

(.bashrc na .bash_profile)
 
(Nie pokazano 16 wersji utworzonych przez 6 użytkowników)
Linia 1: Linia 1:
 
''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.
 
''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.
  
=== Zarządzanie ===
+
=== DevilWeb ===
 +
Po zalogowaniu się do [[DevilWEB|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 wpisu.
  
Swoimi tabelami cron zarządzamy korzystając z polecenia crontab:
+
[[Plik:cron list.png|1135px|class=mydevilscreen]]
  
  {{prompt}}crontab -l ''pokazuje obecną tabelę cron''
+
Aby dodać wpis należy kliknąć ''+ Dodaj zadanie Cron'' i wypełnić pola na stronie. Na przykład skrypt <code>/usr/home/''login''/skrypt.sh</code> będzie wykonywany o 5:30 co niedzielę.
{{prompt}}crontab -e ''edytuje tabelę''
+
 
{{prompt}}crontab -r ''usuwa tabelę''
+
[[Plik:Cron.png|1135px|class=mydevilscreen]]
Przy poleceniu <code>crontab -e</code>, nasza tabela otwierana jest w domyślnym edytorze. Jeśli chcemy zmienić domyślny edytor na nano trzeba wydać polecenie: <code>export EDITOR=nano</code>.
+
 
 +
=== Linia poleceń ===
 +
 
 +
Zarządzanie tabelami cron jest również możliwe z linii poleceń komendą <code>crontab</code>:
 +
* <code>crontab -l</code> - pokazuje obecną tabelę cron,
 +
* <code>crontab -e</code> - edytuje tabelę,
 +
* <code>crontab -r</code> - usuwa tabelę.
 +
Po wykonaniu polecenia <code>crontab -e</code> tabela otwierana jest w domyślnym edytorze. Aby zmienić domyślny edytor nano na inny należy zmienić zmienną środowiskową <code>EDITOR</code>. Na przykład zmiana domyślnego edytora na mcedit odbywa się przez polecenie: <code>echo 'export EDITOR=mcedit' >> $HOME/.bash_profile && source $HOME/.bash_profile</code>. Dopisane <code>export EDITOR=mcedit</code> do pliku <code class="directory">/usr/home/''login''/.bash_profile</code> spowoduje trwałą zmianę domyślnego edytora.
  
 
==== Przykłady ====
 
==== Przykłady ====
  
Poniżej prezentujemy przykładową tabelę cron. Należy zwrócić szczególną uwagę na zmienne <code>MAILTO</code> i <code>PATH</code> - sprawiają one że praca z cronem staje się wygodniejsza.
+
Poniżej prezentujemy przykładową tabelę cron. Należy zwrócić szczególną uwagę na zmienną <code>PATH</code> - 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.
 
  # Używaj /usr/local/bin/bash do wywoływania komend. Ta linijka nie jest wymagana do działania crontab.
 
  SHELL=/usr/local/bin/bash
 
  SHELL=/usr/local/bin/bash
 
# Przesyłaj raport na adres e-mail:
 
MAILTO=login@''domena''
 
 
   
 
   
 
  # Użyj następującej wartości zmiennej PATH. Bez tego musimy podawać pełne ścieżki do binarek (przykładowo,
 
  # Użyj następującej wartości zmiennej PATH. Bez tego musimy podawać pełne ścieżki do binarek (przykładowo,
Linia 33: Linia 38:
 
  # Denerwuj Stefana od poniedziałku do piątku o godzinie 22:00
 
  # 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''  
 
  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
 
  # Inne przykłady
Linia 51: Linia 59:
 
  @hourly          echo "Minęła kolejna godzina!";  # - odpowiednik zapisu "0 * * * *"
 
  @hourly          echo "Minęła kolejna godzina!";  # - odpowiednik zapisu "0 * * * *"
  
[[Category:Podstawy]]
+
[[Kategoria:Ustawienia i Informacje]]

Aktualna wersja na dzień 20:50, 10 sie 2023

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 wpisu.

Cron list.png

Aby dodać wpis należy kliknąć + Dodaj zadanie Cron i wypełnić pola na stronie. Na przykład skrypt /usr/home/login/skrypt.sh będzie wykonywany o 5:30 co niedzielę.

Cron.png

Linia poleceń

Zarządzanie tabelami cron jest również możliwe z linii poleceń komendą crontab:

  • crontab -l - pokazuje obecną tabelę cron,
  • crontab -e - edytuje tabelę,
  • crontab -r - usuwa tabelę.

Po wykonaniu polecenia crontab -e tabela otwierana jest w domyślnym edytorze. Aby zmienić domyślny edytor nano na inny należy zmienić zmienną środowiskową EDITOR. Na przykład zmiana domyślnego edytora na mcedit odbywa się przez polecenie: echo 'export EDITOR=mcedit' >> $HOME/.bash_profile && source $HOME/.bash_profile. Dopisane export EDITOR=mcedit do pliku /usr/home/login/.bash_profile 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: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 * * * *"