W tym artykule wyjaśniono zadania dotyczące planowania i uruchamianie skryptów w regularnych odstępach czasu za pomocą CRON Jobs.
Co to jest Cron?
Cron to program planowania zadań, który działa w tle jako proces. Można go użyć do okresowego uruchamiania niektórych zadań, które są zaplanowane przy użyciu predefiniowanego zestawu reguł. Cron jest wstępnie zainstalowany w większości dystrybucji Linux lub dostępnych w repozytoriach, które mają być zainstalowane ręcznie.
Presete Cron
Cron na Ubuntu jest wyposażony w zestaw wstępnie zdefiniowanych harmonogramów. Możesz je sprawdzić, uruchamiając poniższe polecenie:
$ ls /etc /cron.*
Zwykle te foldery to „/etc/cron.godzinę ”,„/itp./Cron.codziennie ”,„/etc/cron.miesięczny ”i„/etc/cron.co tydzień".
Wystarczy umieścić swoje żądane skrypty w jednym z tych folderów, aby wykonywać zautomatyzowane zadania co godzinę, codziennie, miesięcznie lub co tydzień.
Zauważ, że Cron domyślnie używa powłoki „/bin/sh”. Jeśli chcesz użyć „/bin/bash” jako skorupy w skryptach cron, musisz użyć ”!#/bin/bash ”Hashbang u góry pliku skryptu lub zdefiniuj powłożenie jako zmienna„ Shell =/bin/bash ”w pierwszym wierszu w zaplanowanym skrypcie Bash. Zastępca zmienna środowiskowa „powłoki” działa również dla edytora crontab wyjaśnionego poniżej.
Nie wszystkie zmienne środowiskowe systemu mogą być narażone na zadania CRON. Zasadniczo dobrym pomysłem jest ręczne zdefiniowanie ważnych zmiennych środowiskowych w skrypcie zaplanowanym przez Cron.
Crontab
Crontab pozwala zdefiniować własne zaplanowane zadania. Możesz go użyć do konfigurowania harmonogramów CRON inaczej niż cztery standardowe ustawienia wstępne CRON wyjaśnione powyżej.
Aby ustawić zaplanowane zadanie w crontab, najpierw uruchom edytor crontab za pomocą poniższego polecenia:
$ crontab -e
Teraz na końcu pliku możesz dodać wpis w następującym formacie:
Minute godzinowy dzień miesiąca w dzień powszedni/pełny/ścieżka/do/skrypt.ciiGdzie:
Wpis Crontab poniżej zrobi zrzut ekranu komputera i przechowuje go w katalogu domowym raz o 15:13 godzin 2 marca plus w każdy wtorek marca o 15:13 godzin.
13 15 2 3 2 SoszaAby wymienić wszystkie wpisy crontab, użyj poniższego polecenia:
$ crontab -l
Więcej przykładów
Zadania CRON można najlepiej wyjaśnić za pomocą przykładów, więc poniżej znajdują się przykłady, które okresowo zrobią zrzuty ekranu komputera stacjonarnego i przechowują je w folderze domowym.
Oprócz pięciu zmiennych planowania, Cron używa również specjalnego ciągu do planowania zadań. Te struny są:
Poniższy wpis Crontab zrobi zrzut ekranu raz na każdym ponownym uruchomieniu:
@Reboot SosztMożesz zastąpić „@reboot” na dowolne inne specjalne ciągi wymienione powyżej.
Korzystanie z gwiazdki lub wielkiej karty zamiast dowolnej z pięciu zmiennych powtórzy zadanie we wszystkich nowych przypadkach tej zmiennej. Poniższy wpis będzie robić zrzut ekranu co minutę:
* * * * * SPRAWACo godzinę:
0 * * * * SPRAWACodziennie o 18:00 godzin:
0 18 * * * SPROTKACo miesiąc 6 o 18:00 godzin:
0 18 6 * * SiewoUżyj „/”, aby uruchomić skrypt w ustalonym okresie 30 minut (działa co 30 minut):
*/30 * * * *Możesz użyć zmiennych oddzielonych przecinków, aby zdefiniować powtarzanie się skryptu w regularnych odstępach czasu. Poniższy przykład zrobi zrzut ekranu pulpitu na 1, 4. i 5 minucie nowej godziny.
Siewo 1,4,5 * * * *Weryfikacja wpisów crontab
Definiowanie wpisów crontab może być trudne, ale debugowanie ich lub weryfikacja, czy działają w prawidłowych znacznikach, jest jeszcze trudniejsze. Jedną z opcji jest użycie maszyny wirtualnej i rejestrowania znaczników czasu skryptu działającego okresowo na zadaniu CRON, włączając coś takiego jak polecenie „data” i przekierowanie wyjścia do pliku tekstowego. Lepszym rozwiązaniem jest jednak skorzystanie z jednej z licznych usług testowania zadań CRON dostępnych w Internecie. Polecam udostępnienie witryny Cron Tester tutaj.
Wniosek
Running Cron Jobs to doskonały sposób na automatyzację powtarzających się zadań, szczególnie na serwerach. Narzędzie jest niezwykle potężne i dostosowywane. Ważne jest jednak, aby ustalić, że definicja harmonogramu działa poprawnie, zwłaszcza jeśli istnieją zadania krytyczne misji.