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 🙂
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.
Otworzy się edytor nano z instrukcją oraz wszystkimi zadaniami w systemie:
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: 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 😉 To znak, że wszystko działa 🥳
Jeżeli poradnik okazał się pomocny lub spodobał ci się, zostaw ❤️ somsiadowi :nosacz: