Android

Planowanie zadań cron za pomocą crontab

4.Linux для Не Начинающих - Выполнение по расписанию - crontab

4.Linux для Не Начинающих - Выполнение по расписанию - crontab

Spisu treści:

Anonim

Cron to demon planowania, który wykonuje zadania w określonych odstępach czasu. Te zadania są nazywane zadaniami cron i są najczęściej używane do automatyzacji konserwacji lub administracji systemu.

Na przykład można ustawić zadanie cron w celu zautomatyzowania powtarzających się zadań, takich jak tworzenie kopii zapasowych baz danych lub danych, aktualizowanie systemu o najnowsze poprawki bezpieczeństwa, sprawdzanie wykorzystania miejsca na dysku, wysyłanie wiadomości e-mail i tak dalej. Niektóre aplikacje, takie jak Drupal lub Magento, wymagają zadań cron do wykonania określonych zadań.

Zadania cron można zaplanować na minutę, godzinę, dzień miesiąca, miesiąc, dzień tygodnia lub dowolną ich kombinację.

Co to jest plik Crontab

Crontab (tabela cron) to plik tekstowy, który określa harmonogram zadań cron. Istnieją dwa typy plików crontab. Ogólnosystemowe pliki crontab i indywidualne pliki crontab użytkownika.

Pliki crontab użytkowników są przechowywane pod nazwą użytkownika, a ich lokalizacja zależy od systemu operacyjnego. W systemie opartym na Red Hat, takim jak CentOS, pliki crontab są przechowywane w katalogu /var/spool/cron natomiast w plikach Debian i Ubuntu są przechowywane w katalogu /var/spool/cron/crontabs .

Chociaż możesz ręcznie edytować pliki crontab użytkownika, zalecane jest użycie polecenia crontab .

/etc/crontab i pliki w /etc/cron.d są ogólnosystemowymi plikami crontab, które mogą być edytowane tylko przez administratorów systemu.

W większości dystrybucji Linuksa możesz również umieszczać skrypty w katalogach /etc/cron.{hourly, daily, weekly, monthly} a skrypty będą wykonywane co hour/day/week/month .

Składnia i operatory Crontab

Każdy wiersz w pliku crontab użytkownika zawiera sześć pól oddzielonych spacją, po której następuje polecenie do uruchomienia.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

Pierwsze pięć pól może zawierać jedną lub więcej wartości oddzielonych przecinkiem lub zakres wartości oddzielonych łącznikiem.

  • * - Operator gwiazdki oznacza dowolną wartość lub zawsze. Jeśli masz symbol gwiazdki w polu Godzina, oznacza to, że zadanie będzie wykonywane co godzinę. , - Operator przecinków pozwala określić listę wartości do powtórzenia. Na przykład, jeśli masz 1, 3, 5 w polu Godzina, zadanie będzie działać o 1 w nocy, 3 w nocy i 5 w nocy. --Operator łącznika umożliwia określenie zakresu wartości. Jeśli masz 1-5 w polu Dzień tygodnia, zadanie będzie uruchamiane każdego dnia tygodnia (od poniedziałku do piątku). / -Operator ukośnika pozwala określić wartości, które będą powtarzane w określonym przedziale czasowym między nimi. Na przykład, jeśli masz */4 w polu Godzina, oznacza to, że akcja będzie wykonywana co cztery godziny. Jest to to samo, co określenie 0, 4, 8, 12, 16, 20 . Zamiast gwiazdki przed operatorem ukośnika możesz także użyć zakresu wartości, 1-30/10 oznacza to samo co 1, 11, 21 .

Pliki systemowe Crontab

Składnia ogólnosystemowych plików crontab jest nieco inna niż plików crontab użytkownika. Zawiera dodatkowe obowiązkowe pole użytkownika, które określa, który użytkownik uruchomi zadanie cron.

* * * * * command(s) * * * * * command(s)

Predefiniowane makra

Istnieje kilka specjalnych makr harmonogramu Cron używanych do określania typowych odstępów czasu. Możesz użyć tych skrótów zamiast pięciokolumnowej specyfikacji daty.

  • @yearly (lub @annually ) - Uruchom określone zadanie raz w roku o północy (12:00) 1 stycznia. Odpowiednik 0 0 1 1 * . @monthly - Uruchom określone zadanie raz w miesiącu o północy pierwszego dnia miesiąca. Odpowiednik 0 0 1 * * . @weekly - Uruchom określone zadanie raz w tygodniu o północy w niedzielę. Odpowiednik 0 0 * * 0 . @daily - Uruchom określone zadanie raz dziennie o północy. Odpowiednik 0 0 * * * . @hourly - Uruchom określone zadanie raz na godzinę na początku godziny. Odpowiednik 0 * * * * . @reboot - Uruchom określone zadanie podczas uruchamiania systemu (boot-time).

Linux Crontab Command

Polecenie crontab pozwala zainstalować lub otworzyć plik crontab do edycji.

Za pomocą polecenia crontab można przeglądać, dodawać, usuwać lub modyfikować zadania cron przy użyciu następujących opcji:

  • crontab -e - Edytuj plik crontab lub utwórz go, jeśli jeszcze nie istnieje. crontab -l - Wyświetl zawartość pliku crontab. crontab -r - Usuń bieżący plik crontab. crontab -i - Usuń bieżący plik crontab z monitem przed usunięciem. crontab -u - Edytuj inny plik crontab. Wymaga uprawnień administratora systemu.

Komenda crontab otwiera plik crontab przy użyciu edytora określonego przez zmienne środowiskowe VISUAL lub EDITOR .

Zmienne Crontab

Demon cron automatycznie ustawia kilka zmiennych środowiskowych.

  • Domyślna ścieżka to PATH=/usr/bin:/bin . Jeśli wywoływane polecenie znajduje się w ścieżce podanej w cron, możesz albo użyć bezwzględnej ścieżki do polecenia, albo zmienić zmienną cron $PATH . Nie można domyślnie dołączyć :$PATH , tak jak w przypadku zwykłego skryptu. Domyślną powłoką jest /bin/sh . Możesz ustawić inną powłokę, zmieniając zmienną SHELL wywołuje polecenie z katalogu domowego użytkownika. Zmienną HOME można zastąpić ustawieniami w crontab. Powiadomienie e-mail jest wysyłane do właściciela crontab. Aby zastąpić domyślne zachowanie, możesz użyć zmiennej środowiskowej MAILTO z listą (oddzieloną przecinkami) wszystkich adresów e-mail, na które chcesz otrzymywać powiadomienia e-mail. Jeśli MAILTO jest zdefiniowane, ale puste ( MAILTO="" ), poczta nie jest wysyłana.

Ograniczenia Crontab

Administratorzy systemu mogą kontrolować, którzy użytkownicy mają dostęp do polecenia crontab , korzystając z plików /etc/cron.deny i /etc/cron.allow . Pliki składają się z listy nazw użytkowników, po jednej nazwie użytkownika w wierszu.

Domyślnie istnieje tylko plik /etc/cron.deny i jest on pusty, co oznacza, że ​​wszyscy użytkownicy mogą korzystać z polecenia crontab. Jeśli chcesz odmówić dostępu do poleceń crontab określonemu użytkownikowi, dodaj nazwę użytkownika do tego pliku.

Jeśli plik /etc/cron.allow istnieje, tylko użytkownicy wymienieni w tym pliku mogą użyć polecenia crontab .

Jeśli żaden plik nie istnieje, tylko użytkownicy z uprawnieniami administracyjnymi mogą używać polecenia crontab .

Przykłady Cron Jobs

Poniżej znajduje się kilka przykładów zadań cron, które pokażą, jak zaplanować uruchamianie zadania w różnych przedziałach czasowych.

  • Uruchom polecenie o 15:00 każdego dnia od poniedziałku do piątku:

    0 15 * * 1-5 command

    Uruchom skrypt co 5 minut i przekieruj standardowe wyjście na dev null , tylko standardowy błąd zostanie wysłany na podany adres e-mail:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Uruchom dwa polecenia w każdy poniedziałek o 15:00 (użyj operatora && między poleceniami):

    0 15 * * Mon command1 && command2

    Uruchom skrypt PHP co 2 minuty i zapisz dane wyjściowe do pliku:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Uruchom skrypt codziennie, co godzinę, o godzinie od 8 rano do 4 po południu:

    00 08-16 * * * /path/to/script.sh

    Uruchom skrypt w pierwszy poniedziałek każdego miesiąca o 7 rano

    0 7 1-7 * 1 /path/to/script.sh

    Uruchom skrypt o 21:15, 1 i 15 każdego miesiąca:

    15 9 1, 15 * * /path/to/script.sh

    Ustaw niestandardowe zmienne HOME , PATH , SHELL i MAILTO i uruchamiaj polecenie co minutę.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Wniosek

Nauczyłeś się, jak tworzyć zadania cron i planować zadania o określonej dacie i godzinie.

Jeśli masz jakieś pytania, zostaw komentarz.

terminal cron crontab