Cron - Automatyzacja codziennych zadań SEO

Wykonywanie powtarzających się zadań każdego dnia może być męczące. Dlaczego więc nie zaprząc do tego Crona?! W tym artykule krok po kroku pokażę, jak skonfigurować proste zadanie w Cron na komputerach z systemem macOS. Podam też kilka przykładów, jak automatyzacja może być wykorzystana w codziennej pracy SEOwca.


Autor: 
Daniel Jędrysik
Czas czytania: 
Publikacja: 
28 listopada 2020
Aktualizacja: 
9 kwietnia 2022
Kategorie: 

Monotonia z czasem zabije nawet najciekawszą pracę. Codzienne wykonywanie tych samych czynności sprawia, że szybciej się męczymy oraz nie poświęcamy czasu na rzeczy naprawdę istotne. I tutaj na scenę wkracza automatyzacja.

W pracy wykorzystuję wiele narzędzi, które automatycznie, bez mojej wiedzy, zbierają informację, które w dogodnym czasie mogę przetworzyć. Czasem wymagamy jednak czegoś więcej, czego ogólnodostępne narzędzia nie są nam w stanie zapewnić.

W tym wpisie przedstawię, w jaki sposób wykorzystać Cron’a do automatyzacji prostych, cyklicznych zadań.

Co to jest Cron i Crontab?

Zanim zaczniemy. Cron jest to narzędzie, które umożliwia uruchomienie skryptu, zadania lub programu według wcześniej przygotowanego harmonogramu.

Crontab to z kolei lista zadań, które Cron ma wykonać.

Narzędzie Cron głównie kojarzone jest z usługą na serwerze, kiedy to możemy ustawić uruchomienie skryptu o dowolnej porze. Nie każdy jednak wie, że również komputery wyposażone w system Linux czy macOS także oferują taką opcję. Niestety, żeby zadania Cron były wykonywane, komputer musi być uruchomiony.

Nie mniej jednak jeżeli chcemy zautomatyzować pewne czynności w trakcie godzin pracy, konfiguracja Cron będzie niezwykle pomocna.

Do czego można wykorzystać Cron w SEO?

W pracy specjalisty SEO Cron można użyć do automatyzacji cyklicznych czynności takich jak:

  • wysyłanie comiesięcznych raportów,
  • crawlowanie portalu o określonej porze,
  • sprawdzanie raz dziennie statusu odpowiedzi serwera,
  • usuwanie lub aktualizowanie adresów znajdujących się w indeksie,
  • pobieranie danych z Google Search Console czy Google Analytics.

Harmonogram Cron, czyli ustalamy cykliczne zadania do wykonania

Do utworzenia zadania cyklicznego Cron potrzebować będziesz:

  • komputera z systemem macOS,
  • Pythona,
  • dowolnego edytora, w którym utworzysz kod. Ja używam programu Atom lub Notepad++.

Krok 1. Tworzymy skrypt w Pythonie

Na potrzeby tego miniporadnika utworzymy przykładowy skrypt, który będzie odczytywał godzinę i zapisywał ją w pliku.

Plik zapisujemy pod dowolną nazwą z rozszerzeniem .py np. test.py

Pokrótce wyjaśnię, co każda linijka oznacza.

#!/usr/bin/python3 – linia wskazująca, gdzie znajduje się interpretator kodu,

import datetime – importujemy bibliotekę datatime odpowiedzialną za pobieranie czasu i daty z systemu operacyjnego

x = datetime.datetime.now() – przypisujemy do zmiennej x obiekt z aktualną datą i czasem

text = x.strftime("%m/%d/%Y, %H:%M:%S")+"\n" – przy wykorzystaniu metody strftime przekształcamy – zgodnie z wzorcem – datę i czas z obiektu na ciąg znaków (string). Dodatkowo do ciągu dodaję jeszcze znak końca wiersz \n

f = open("/Users/admin/desktop/python/cron/cron-test.txt", "a") – otwieramy plik, w którym przechowywać będziemy pobraną z systemu datę i godzinę. Drugi parametr oznacza tryb, w jakim zostanie otwarty plik.

Stosować możemy kilka trybów:

  • "r" - otwarcie pliku tylko do odczytu ("read"). W przypadku braku pliku wystąpi błąd.
  • "a" - otwarcie pliku w trybie edycji ("append"). Treść dodawana jest na końcu bez kasowania wcześniejszej zawartości pliku. Jeżeli plik nie istnieje, zostanie on utworzony.
  • "w" - otwarcie pliku w trybie edycji ("write"). Dotychczasowa treść zostanie skasowana. Jeżeli plik nie istnieje, zostanie on utworzony.

f.write(text) – zapisanie zmiennej text w pliku.

f.close() – zamknięcie pliku.

print(text."Zadanie wykonane poprawnie!") – polecenie wyświetlenia komunikatu o poprawnym wykonaniu zadania, który zostanie zapisany w pliku log.txt

Skrypt możesz przetestować, uruchamiając go w terminalu.

cd siezka/do/katalogu
python3 test.py

Jeżeli wszystko jest w porządku, w tym samym katalogu znajdziemy plik cron-test.txt, a wewnątrz niego w pierwszej linii datę i czas wykonania skryptu.

Krok 2. Uruchamiamy Crontab

Do obsługi Crontab w systemie macOS używane są 3 polecenia, które wprowadza się w terminalu:

  • crontab -l - pozwala sprawdzić, czy mamy jakieś aktywne zadania w Cron
  • crontab -e - służy to tworzenia nowych zadań i modyfikacji obecnych
  • crontab -r - umożlkiwia usuwanie utworzonych zadań.

W pierwszej kolejności skorzystaj z polecenia crontab -l. Pozwoli to na sprawdzenie, czy masz jakieś aktywne zadanie Cron.

Następnie w terminalu wpisz crontab -e. Otworzy się vi editor. Edytor nie jest trudny w obsłudze i musisz zapamiętać jedynie kilka komend, które go obsługują.

  • i - przejście w tryb edycji
  • esc - wyjście z trybu edycji
  • dd - usunięcie linii
  • u - cofnięcie zmian
  • :q! - wyjście z edytora bez zapisania zmian
  • :wq - wyjście z edytora po uprzednim zapisaniu zmian
vi editor

Krok 3. Budowa wyrażenia Cron

Wyrażenie Cron składa się z 6 parametrów. Pięć pierwszych odpowiada za to, kiedy skrypt będzie wykonany. W kolejności od lewej do prawej to:

  • minuty (0-59)
  • godziny (0-23)
  • dzień miesiąca (1-31)
  • miesiąc (1-12)
  • dzień tygodnia (0-6)
Składowe polecenia cron

Zamiast tych pięciu parametrów możemy wpisać ciąg znaków poprzedzony @. Przykłady takich ciągów znajdziesz w tabeli poniżej.

Ostatni parametr w wyrażeniu to wskazanie, co ma zostać wykonane o podanej porze.

Wyrażenia Cron – Przykłady

Poniższa tabela zawiera przykłady najczęściej używanych wyrażań.

Parametr słownyCzas wykonania zadaniaParametry liczbowe
@hourlyco godzinę0 * * * *
@dailyraz dziennie0 0 * * *
@weeklyraz w tygodniu0 0 * * 0
@monthlyraz w miesiącu0 0 1 * *
@yearlyraz w roku0 0 1 1 *
@rebootprzy starcie systemu
co minutę* * * * *
co 5 minut*/5 * * * *
co minutę codziennie od poniedziałku do piątku* * * * 1-5
co 5 minut w dni parzyste w lutym*/5 * 2/2 2 *
o godzinie 8 każdego dnia roboczego0 8 * * 1-5
codziennie o 4 godzinie pierwszego dnia każdego miesiąca0 4 1 * *
codziennie o północy w styczniu oraz od kwietnia do lipca0 0 * 1,4-7 *
co 2 godzin w poniedziałek i piątek0 */2 * * 1,5

Dla ułatwienia można skorzystać z narzędzia crontab.guru.

Dla naszych przypadku skrypt powinien się uruchamiać co minutę (* * * * *). Dzięki temu szybko sprawdzimy, czy nasz Cron działa.

Krok 4. Utworzenie harmonogramu dla skryptów w Pythonie

Jednym z ostatnich kroków będzie utworzenie wyrażenia, które umieścimy w tablicy Cron, a które będzie odpowiedzialne za uruchamianie cykliczne napisanego wcześniej skryptu w Pythonie.

Budowa takiego wyrażenia przedstawia się następująco:

* * * * * cd ~/desktop/python/cron && /usr/bin/python3 test.py >> ~/desktop/python/cron/log.txt 2>&1

* * * * * – argumenty liczbowe wskazujące na uruchamianie skryptu co minutę

cd ~/desktop/python/cron – wskazanie ścieżki do katalogu, w którym znajduje się skrypt. Jeżeli zapisałeś w innym katalogu swój skrypt, ścieżka do niego będzie inna.

/usr/bin/python3 – wskazanie ścieżki do katalogu, w którym zainstalowany jest Python. Do znalezienia ścieżki możesz wykorzystać polecenie whereis python3.

test.py – nazwa skryptu

>> – symbol oznaczający przekierowanie danych wyjściowych z programu do pliku. Dane będą dołączane do końca pliku.

~/desktop/python/cron/cron.txt – lokalizacja pliku, gdzie będą kierowane dane wyjściowe z programu

2>&1 – oznacza, że standardowe wyjście błędów zostanie przekierowane do standardowego wyjścia. Innymi słowy, jeżeli wystąpi się błąd, to informacja o tym pojawi się w pliku log.txt

Krok 5. Dodanie zadania do tablicy Crontab

Mamy już gotowe polecenie, które pozwoli nam co minutę uruchomić skrypt dopisujący czas i datę do pliku.

W edytorze vi editor przyciskamy klawisz i i przechodzimy w tryb edycji.

W linijce wklejamy lub wpisujemy przygotowane we wcześniejszym kroku polecenie.

Wciskamy klawisz esc wychodząc z trybu edycji.

Wpisujemy :wq i wciskamy enter. Nasze zadanie zostało zapisan

W oknie terminalu powinna pokazać się informacja, która świadczy o powodzeniu całego procesu: crontab: installing new crontab

Jak sprawdzić, czy Cron działa?

To czy Cron działa czy nie przekonamy się, sprawdzając efekt działania skryptu. Jeżeli plik cron-test.txt nie zawiera wierszy z kolejnymi datami i godzinami, koniecznie sprawdź plik z danymi wyjściowymi. W nim będą składowane informacje o błędach, jeżeli się pojawią.

Czy warto automatyzować zadania w Cron?

Moim zdaniem tak. Skrypty wykonywane automatycznie to duża oszczędność czasu oraz zmniejszenie ryzyka, że w ciągu intensywnego dnia zapomnimy o jakimś zadaniu. Mam nadzieję, że ten artykuł przybliżył Ci nieco tematykę automatyzacji zadań oraz skłoni do częstszego używania tego narzędzia.

Daniel Jędrysik

Od 2018 roku związany jestem z marketingiem internetowym. Specjalizuję się w optymalizacji stron internetowych i sklepów. Obecnie pełnię funkcję Marketing Managera w Agencji KS. Prywatnie jestem miłośnikiem fantastyki oraz zapalonym czytelnikiem.