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

KMatuszak | 2020-09-04 17:35:53 UTC | #1

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://forum.lvlup.pro/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 :slightlysmilingface:
obraz|453x278
Skrypt gotowy, możemy utworzyć teraz w systemie zadanie, które co minutę wykona go :slightlysmilingface:
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 :slightlysmilingface:)
https://forum.lvlup.pro/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

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/ :slightlysmilingface:

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 :slightlysmilingface:
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 :wink:
obraz|358x151
To znak, że wszystko działa :partying_face:

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

|84x126Poradnik miesiąca: sierpień 2020


Jakub | 2020-08-11 13:06:04 UTC | #2

Spoko poradnik :slight_smile: