Jak korzystać z crona? Automatyczne wykonywanie codziennych czynności

Poradniki
vps, zarządzanie, poradnik-miesiąca
KMatuszak
KMatuszak Weteran

Witaj, w tym poradniku wyjaśnię do czego służy cron oraz w jaki sposób z niego korzystać :slight_smile:

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. (Źródło: Wikipedia)

Na wstępie trzeba zweryfikować ustawienia daty i godziny i poprawić je w razie potrzeby, gdyż jest to wymagane do prawidłowego działania crona. W tym celu odsyłam do tego poradnika: https://lvlup.rok.ovh/t/zmiana-strefy-czasowej-na-vpsie/99?u=nosacz

Aby zaprezentować jak to działa na prostym przykładzie, stworzę zadanie które będzie co minutę dodawało linijkę tekstu do pliku tekstowego.

Najpierw utworzę skrypt o nazwie skrypt.sh w katalogu zadanie który będzie znajdował się w katalogu głównym użytkownika (w moim przypadku root).

Ścieżka do pliku będzie więc wyglądała w taki sposób:

/root/zadanie/skrypt.sh

Jeżeli pracujesz na koncie użytkownika innym niż root, ścieżka do pliku będzie wyglądała w taki sposób:

/home/NAZWA_UZYTKOWNIKA/zadanie/skrypt.sh

Skrypt jest bardzo prosty i prezentuje się następująco:

#!/bin/bash
echo "LVL UP" >> mojplik.txt

Teraz będąc w katalogu zadanie nadam skryptowi uprawnienia wymagane do jego wykonywania:

chmod +x skrypt.sh

Warto jeszcze przetestować działanie skryptu, jak widać działa 🙂 obraz|453x278 Skrypt gotowy, możemy utworzyć teraz w systemie zadanie, które co minutę wykona go 🙂 W tym celu wykonaj komendę crontab -e. Jeżeli zobaczysz takie pytanie, wciśnij przycisk enter. obraz|532x171 Otworzy się edytor nano z instrukcją oraz wszystkimi zadaniami w systemie: obraz|690x463 Jeżeli nie wiesz w jaki sposób korzystać z tego edytora, zapoznaj się z tym poradnikiem (również mojego autorstwa 🙂) https://lvlup.rok.ovh/t/jak-korzystac-z-edytora-nano-poradnik-dla-poczatkujacych/15556

Przejdź na sam dół pliku i dopisz tam poniższą linijkę, spowoduje ona wykonanie skryptu co minutę:

* * * * * cd /root/zadanie && bash skrypt.sh
  • Pierwsze miejsce na liczbę oznacza minutę w której skrypt ma zostać uruchomiony, gwiazdka oznacza dowolną minutę.
  • Drugie miejsce na liczbę oznacza godzinę w której skrypt ma zostać uruchomiony, gwiazdka oznacza dowolną godzinę.
  • Trzecie miejsce na liczbę oznacza dzień miesiąca w którym skrypt ma zostać uruchomiony, gwiazdka oznacza dowolny dzień miesiąca.
  • Czwarte miejsce na liczbę oznacza miesiąc w którym skrypt ma zostać uruchomiony, gwiazdka oznacza dowolny miesiąc.
  • Piąte miejsce na liczbę oznacza dzień tygodnia w którym skrypt ma zostać uruchomiony, gwiazdka oznacza dowolny dzień tygodnia.

Dodatkowo, na przykład taka linijka spowoduje uruchomienie zadania codziennie o godzinie 17:00:

0 17 * * * cd /root/zadanie && bash skrypt.sh

Można też uruchamiać zadanie na przykład co podaną liczbę godzin (w tym przypadku 3):

0 */3 * * * cd /root/zadanie && bash skrypt.sh

lub minut (w tym przypadku 5):

*/5 * * * * cd /root/zadanie && bash skrypt.sh

Na koniec, zamiast pięciu pól na liczbę można używać takich skrótów: @yearly oraz @annually (to jest to samo) - zadanie zostanie uruchomione co rok @monthly - zadanie zostanie uruchomione co miesiąc @weekly - zadanie zostanie uruchomione co tydzień @daily - zadanie zostanie uruchomione codziennie @hourly - zadanie zostanie uruchomione co godzinę @reboot - zadanie zostanie uruchomione przy starcie systemu Przykład:

@reboot cd /root/zadanie && bash skrypt.sh

Do eksperymentowania z tym polecam stronę https://crontab.guru/ 🙂

Po dodaniu linijki i zapisaniu zmian oraz wyjściu z edytora powinien pojawić się taki napis: obraz|318x49 Oznacza to, że zadanie zostało pomyślnie utworzone 🙂 Warto sprawdzić teraz, czy co minutę do pliku dodawana jest następna linijka tekstu W pliku było 5 linijek tekstu, minęły 2 minuty, i już jest 7 😉 obraz|358x151 To znak, że wszystko działa 🥳

Jeżeli poradnik okazał się pomocny lub spodobał ci się, zostaw ❤️ somsiadowi :nosacz:

|84x126Poradnik miesiąca: sierpień 2020

Jakub
Jakub

Spoko poradnik :slight_smile: