Cron Job: Kiedy Twój Harmonogram Snu Ma Znaczenie

Opublikowano: przez Matt Stamp
Cron Job: Kiedy Twój Harmonogram Snu Ma Znaczenie thumbnail

Czy chcesz budzić się o 2 rano, czyścić dzienniki, usuwać pliki tymczasowe i wykonywać te same zadania konserwacyjne serwera każdego dnia?

No ja też nie. Tak samo jak miliony administratorów serwerów, którzy zarządzają 14+ miliardami serwerów na całym świecie.

Więc, proszę cię, zatrzymaj to szaleństwo!

Zadania Cron zostały stworzone do tego celu.

Ponieważ, szczerze mówiąc, nic tak nie świadczy o „kompetentnym administratorze systemu„, jak spanie z zadowoleniem i przypisywanie sobie zasług za pracę, którą wykonują twoje skrypty. To nazywa się „wykorzystaniem swoich zasobów.

Z zadaniami Cron Job:

  • Twój szef myśli, że jesteś zaangażowany. 
  • Twój serwer wie, że jesteś leniwy. 
  • Macie piękną symbiotyczną relację nazywaną automatyzacją. 

Dziś nauczysz się profesjonalnie zarządzać Cron Job.

Po Pierwsze, Co To Jest Cron Job? (Wersja Nie Nudna)

Cron Job to w zasadzie harmonogram zadań wbudowany w systemy operacyjne typu Unix (Linux, macOS), który pozwala automatycznie uruchamiać komendy Linux w określonych czasach i datach.

Pomyśl o tym jak o liście rzeczy do zrobienia dla twojego serwera, ale… ta faktycznie zostaje wykonana.

Cron Job w Metaforach

Jeśli twoja infrastruktura serwerowa była restauracją:

  • Cron daemon jest menedżerem sprawdzającym codzienny harmonogram.
  • Crontab jest tablicą przydziału zadań dla pracowników.
  • Każde Cron Job to zadanie przypisane konkretnemu pracownikowi na określony czas.
  • Polecenie to faktyczna praca, która jest wykonywana.

Kiedy zegar wybije zaplanowaną godzinę, menadżer klepie przypisanego pracownika w ramię i mówi: „Czas na występ!”

Pracownik wykonuje swoje zadanie bez pytania lub narzekania.

Gdybyśmy my, ludzie, byli tak niezawodni, świat wyglądałby inaczej!

Budowa Zadania Cron

Każdy Cron Job składa się z dwóch głównych części:

  1. Kiedy uruchomić (harmonogram)
  2. Co uruchomić (polecenie lub skrypt do wykonania)

Harmonogram korzysta z określonej składni, która na pierwszy rzut oka może wyglądać jak magia komputerowa:

Ale spójrz bliżej, a zacznie to mieć sens.

Każda gwiazdka może być zastąpiona konkretnymi wartościami, zakresami lub interwałami, aby stworzyć dokładnie taki harmonogram, jakiego potrzebujesz.

Dlaczego Administratorzy Serwerów Uwielbiają Cron Joby

Jest powód, dla którego administratorzy serwerów (nawet ja) wzruszają się, gdy rozmawiają o Cron Job.

Przekształcają zarządzanie serwerem w coś, co (przynajmniej w pewnym stopniu) przypomina równowagę między pracą a życiem prywatnym.

1. Oszczędzają Twój Czas

Pamiętasz czas? Tej rzeczy, której nigdy nie masz wystarczająco? Cron Joby oddają go z powrotem. Ustawiasz je, zapominasz o nich, i praktycznie nigdy na nie nie patrzysz.

(No cóż, dopóki się nie zepsują lub nie będziesz musiał zmienić harmonogramu.)

2. Zapewniają Spójność

Ludzie są niespójni. Zapominamy rzeczy. Robimy literówki. Rozpraszają nas filmy z kotami. Cron Job wykonuje dokładnie to samo zadanie, w dokładnie taki sam sposób, za każdym razem — bez wyjątków.

3. Twój Serwer Nigdy Nie Śpi

Dzięki Cron Job, niezbędne prace konserwacyjne odbywają się całą dobę, 365 dni w roku, niezależnie od tego, czy jesteś obudzony, śpisz, czy siedzisz na plaży popijając margarity.

4. Dzienniki błędów > Pamięć człowieka

Kiedy wykonujesz zadania ręcznie, czy potrafisz dokładnie zapamiętać, co zrobiłeś i kiedy to zrobiłeś? Prawdopodobnie nie.

Ale zadania Cron mogą być skonfigurowane do rejestrowania swojej aktywności, tworząc ślad papierowy wszystkich zautomatyzowanych działań do rozwiązywania problemów i weryfikacji.

5. Są Zbudowane z Myślą o Skalowalności

Kiedy twoja infrastruktura rośnie, ręczne zarządzanie wszystkim staje się znacznie trudniejsze. Cron Job skaluje się bez wysiłku.

To oznacza, że to samo zadanie może być uruchamiane na wielu serwerach bez wymagania od Ciebie dodatkowego czasu.

Otrzymuj treści bezpośrednio do swojej skrzynki odbiorczej

Zapisz się teraz, aby otrzymywać wszystkie najnowsze aktualizacje bezpośrednio do swojej skrzynki odbiorczej.

Konfiguracja Zadań Cron: Przewodnik Krok po Kroku

Dość teorii! Musisz zabrać się za praktyczne ustawienia Cron Job.

Krok 1: Potwierdź Instalację Cron Job

Większość systemów podobnych do Unix ma Cron zainstalowany domyślnie. Aby sprawdzić, czy jest dostępny do użycia, wpisz poniższe polecenie:

crontab -e

W zależności od domyślnego edytora, polecenie otworzy crontab w twoim konkretnym edytorze. Jeśli nigdy wcześniej nie używałeś crontab, może poprosić o ustawienie domyślnego edytora.

Jeśli terminal odpowie komunikatem nie znaleziono polecenia, musisz zainstalować Cron, używając poniższych poleceń:

  • Na Ubuntu/Debian: sudo apt update && sudo apt install cron
  • Na CentOS/RHEL:  sudo yum install cronie

Po zakończeniu, uruchom i włącz usługę Cron Job:

sudo systemctl start cron
sudo systemctl enable cron

Za pomocą poleceń start i enable uruchamiamy usługę cron, aby wykonać zadania Cron Job.

A dzięki włączeniu, upewniamy się, że nawet jeśli Twój serwer zostanie uruchomiony ponownie, usługa cron zostanie automatycznie uruchomiona razem z nim i żadne zadania Cron Job nie zostaną pominięte.

Notka dla Nerdów: CentOS nazywa usługę cron „crond”, więc musisz uruchomić i włączyć usługę crond.

Krok 2: Zrozumienie Crontab

Dobrze, otwórz crontab lub crontable, aby zacząć dodawać swoje zaplanowane zadania.

Każdy użytkownik systemu może mieć własny plik Cron Job. Dodatkowo, istnieje systemowy Cron Job.

Aby edytować swoje osobiste zadania Cron:

crontab -e

To otwiera twój plik Cron Job w domyślnym edytorze tekstu. Jeśli robisz to po raz pierwszy, wybierz edytor nano (opcja 1), ponieważ jest najbardziej przyjazny dla początkujących.

Dla systemowych zadań Cron, uruchom poniższe polecenie z uprawnieniami sudo:

sudo nano /etc/crontab

Krok 3: Składnia Cron Job

Już wcześniej rozmawialiśmy o podstawowej strukturze w anatomii zadań Cron.

Ale tworzenie Cron Job czasami może być mylące. Crontab.guru pomaga Ci wizualizować harmonogramy zadań w miarę ich wpisywania.

Teraz czas na zabawę — tworzenie naszego pierwszego Cron Job. Spójrzmy na kilka typowych harmonogramów Cron Job:

Każda minuta:

* * * * /path/to/command

Co godzinę w minucie 0:

0 * * * * /path/to/command

Każdego dnia o północy:

0 0 * * * /path/to/command

Każdy Poniedziałek O 3 Rano:

0 3 * * 1 /path/to/command

Co 15 minut:

*/15 * * * * /path/to/command

Pierwszy dzień każdego miesiąca o 6:30 rano:

30 6 1 * * /path/to/command

Krok 4: Tworzenie Twojego Pierwszego Cron Job

Przejdźmy do tworzenia prostego Cron Job do tworzenia kopii zapasowej na twoim serwerze.

Zadanie poniżej tworzy kopię zapasową twojej strony internetowej codziennie o 2:00.

0 2 * * * tar -czf /path/to/backup/website-backup-$(date +%Y%m%d).tar.gz /path/to/your/website

Wygeneruje skompresowane archiwum tar Twojego katalogu strony internetowej z aktualną datą jako nazwą pliku.

Krok 5: Zapisz i Zweryfikuj

Teraz, wyjdź z edytora. W nano, naciśnij Ctrl+X, a następnie Y.

Aby wyświetlić aktualny crontab i sprawdzić, czy twoje zadanie zostało dodane:

crontab -l

To wszystko! Twój pierwszy Cron Job jest już ustawiony i będzie uruchamiany automatycznie o zaplanowanej godzinie.

Praktyczne Przykłady Zadań Cron Dla Zarządców Stron

Teraz, gdy znasz podstawy, zobaczmy kilka praktycznych Cron Job, które mogą znacznie ułatwić życie jako menadżerowi strony internetowej.

Kopie Zapasowe Bazy Danych

Kopia zapasowa bazy danych MySQL (codziennie o 1:00):

0 1 * * * mysqldump -u username -p'password' database_name | gzip > /path/to/backups/db-backup-$(date +%Y%m%d).sql.gz

Rotacja i Czyszczenie Dzienników

Usuwaj dzienniki starsze niż 7 dni (cotygodniowo w niedziele):

0 0 * * 0 find /path/to/logs -type f -name "*.log" -mtime +7 -delete

Monitorowanie Wydajności Strony

Sprawdzaj czas odpowiedzi strony co 5 minut:

*/5 * * * * curl -o /dev/null -s -w "%{http_code} %{time_total}sn" example.com >> /path/to/logs/website-performance.log

Aktualizacje Treści

Pobieraj i aktualizuj dynamiczną zawartość (co godzinę):

0 * * * * /path/to/content-update-script.sh

Raporty E-mail

Wysyłaj podsumowanie ruchu tygodniowego w każdy poniedziałek o 9:00:

0 9 * * 1 /path/to/generate-and-email-report.sh

Skanowanie Bezpieczeństwa

Uruchamiaj skrypt skanowania bezpieczeństwa każdej nocy o 3 rano:

0 3 * * * /path/to/security-scan.sh

Najlepsze Praktyki Cron Job: Czego Robić a Czego Nie

Aby upewnić się, że twoje Cron Job działają płynnie i nie powodują więcej problemów niż rozwiązują, oto kilka ważnych najlepszych praktyk.

Do Zrobienia

  1. Zawsze używaj pełnych ścieżek do poleceń i plików: Twoje środowisko Crona nie ma tej samej ścieżki co twoja powłoka, więc “/usr/bin/python” jest lepsze niż samo python.
  2. Przekieruj wyjście, aby zapobiec spamowaniu e-maili: Domyślnie cron wysyła wszelkie wyjście do użytkownika. Dodaj >/dev/null 2>&1, aby stłumić wyjście lub przekieruj je do pliku dziennika.
  3. Testuj swoje polecenia przed ich zaplanowaniem: Uruchom swoje polecenie ręcznie, aby upewnić się, że działa zgodnie z oczekiwaniami.

Dodaj komentarze, aby wyjaśnić każde zadanie — przyszłe Ty będzie wdzięczne obecnemu Ty za udokumentowanie, co robi każdy Cron Job i dlaczego.

Dzienna kopia zapasowa bazy danych - Dodane przez Jane w dniu 2023-05-15
0 1 * * * /path/to/backup-script.sh

Rozważ użycie plików blokujących dla długotrwałych zadań, aby zapobiec uruchamianiu nowej instancji, jeśli poprzednia nadal działa.

0 * * * * flock -n /tmp/script.lock /path/to/your/script.sh

Czego Nie Robić

  1. Nie planuj zasobożernych zadań w godzinach szczytu: Twoja kopia zapasowa nie musi być uruchamiana w południe, gdy Twoja strona jest najbardziej obciążona.
  2. Nie używaj ścieżek względnych: “./script.sh” z pewnością nie zadziała w Cron Job.
  3. Nie zapominaj o zmiennych środowiskowych: Cron Job nie ładuje Twojego .bashrc czy .profile. Ustaw wszystkie potrzebne zmienne w crontabie lub skrypcie.
  4. Nie lekceważ logowania: Bez odpowiedniego logowania, debugowanie zadań Cron Job może być koszmarem.
  5. Nie przesadzaj: Zbyt wiele częstych zadań Cron Job może przeciążyć Twój serwer. Planuj strategicznie.

Co Robić, Gdy Cron Job Nie Działa Poprawnie

Jedyny moment, kiedy musisz spojrzeć wstecz na Cron Job, to kiedy przestaje działać — a gdy to się stanie, oto jak zdiagnozować i naprawić typowe problemy.

Częsty Problem #1: Zadanie Nie Uruchamia Się

Symptomy: Wydaje się, że twoje zaplanowane zadanie w ogóle się nie wykonuje.

Potencjalne rozwiązania:

  • Sprawdź, czy daemon cron działa: Status “systemctl” cron
  • Zweryfikuj składnię twojego crontab: Użyj narzędzia takiego jak crontab.guru
  • Upewnij się, że podajesz pełne ścieżki do plików wykonywalnych: Komenda which służy do znajdowania pełnych ścieżek
  • Sprawdź uprawnienia plików: Skrypty muszą być wykonywalne (chmod +x script.sh)

Typowy Problem #2: Zadanie Jest Wykonywane, Ale Kończy Się Niepowodzeniem

Objawy: Zadanie jest wykonywane, ale nie kończy swojego zadania pomyślnie.

Możliwe rozwiązania:

  • Przekieruj wyjście do pliku dziennika, aby zobaczyć błędy: * * * * /path/to/script.sh > /path/to/script.log 2>&1
  • Przetestuj polecenie ręcznie w tym samym środowisku
  • Sprawdź, czy nie brakuje zależności w środowisku crona

Typowy Problem #3: Zalewanie E-mailami

Objawy: Twoja skrzynka odbiorcza jest zalewana e-mailami z wynikami działania Cron Job.

Możliwe rozwiązania:

  • Przekieruj wyjście do nulla: >/dev/null 2>&1
  • Przekieruj do pliku logów: >/path/to/logfile.log 2>&1

Tylko e-mail w przypadku błędów:

* * * * /path/to/script.sh >/dev/null || echo "Skrypt nie powiódł się" | mail -s "Błąd Crona" you@example.com

Typowy Problem #4: Problemy Czasowe

Objawy: Zadania są wykonywane w nieoczekiwanych momentach lub z częstotliwością.

Możliwe rozwiązania:

  • Sprawdź dokładnie ustawienia strefy czasowej — data a oczekiwania Cron Job
  • Bądź świadomy zmian czasu DST, które mogą wpłynąć na synchronizację
  • Używaj wyraźnych ram czasowych zamiast względnych, gdy dokładność ma znaczenie

Zaawansowane Techniki Pisanie Zadań Cron

Przyjrzeliśmy się podstawom, i jesteś już prawie profesjonalistą w obsłudze Cron Job. Ale ta sekcja zabierze cię o krok dalej.

Używanie Specjalnych Ciągów

Nie musisz zawsze pisać zadań Cron Job z tymi gwiazdkami. Istnieją specjalne ciągi znaków, które pozwalają łatwo ustawić zadania Cron Job.

  • @yearly lub @annually: Wykonywane raz w roku (0 0 1 1 *)
  • @monthly: Wykonywane raz w miesiącu (0 0 1 * *)
  • @weekly: Wykonywane raz w tygodniu (0 0 * * 0)
  • @daily lub @midnight: Wykonywane raz dziennie (0 0 * * *)
  • @hourly: Wykonywane co godzinę (0 * * * *)
  • @reboot: Wykonywane raz przy uruchomieniu

Na przykład, jeśli chcesz, aby coś działało codziennie, wystarczy napisać poniższą komendę:

@daily /path/to/daily-backup.sh

Zmienne środowiskowe w Crontab

Aby uniknąć powtarzania ciągu znaków w swoich zadaniach Cron Job (na przykład określonej ścieżki lub swojego e-maila administracyjnego), ustaw zmienne środowiskowe na początku swojego crontab. 

Możesz następnie ponownie użyć zmiennych, jak potrzebujesz, w swoich skryptach lub komendach.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@example.com

# To zadanie wyśle błędy na adres admin@example.com
0 2 * * * /path/to/mailing_script.sh

Jeśli użyjemy zmiennej środowiskowej MAILTO w naszym skrypcie mailing_script.sh, skrypt automatycznie wyśle e-mail na poprawny adres e-mail.

Dzięki temu, zmiana adresu e-mail administratora będzie wymagała jedynie zmiany wartości zmiennej MAILTO, zamiast wprowadzania zmian we wszystkich skryptach.

Uruchamianie Zadań Jako Inni Użytkownicy

Jeśli masz dostęp superużytkownika, możesz edytować crontab innego użytkownika:

sudo crontab -u username -e

Korzystanie z Anacron dla maszyn, które nie są zawsze włączone

W przeciwieństwie do cron, anacron zapewnia, że zadania zostaną wykonane, nawet jeśli komputer był wyłączony w zaplanowanym czasie:

sudo apt install anacron

Edytuj /etc/anacrontab, aby dodać zadania, które zostaną uruchomione, gdy system wróci do pracy.

Łączenie zadań dla złożonych przepływów pracy

Uruchamiaj zadania sekwencyjnie:

0 1 * * * /path/to/first-script.sh && /path/to/second-script.sh

Monitorowanie Cron Job 

Jeśli poważnie myślisz o zarządzaniu serwerem, rozważ narzędzia takie jak Cronitor, które oferują monitorowanie i alerty dla twoich zadań cron.

0 * * * * cronitor exec check-12345 -- /path/to/your/script.sh

Porozmawiajmy O Kosztach

Cron Job nie może istnieć samodzielnie. Potrzebuje serwera i usługi działającej na serwerze, którą musisz zarządzać. 

Jeśli czytasz ten artykuł, to bardzo prawdopodobne, że masz serwer dla swojej strony internetowej lub aplikacji. 

W rzeczywistości, jeśli korzystasz z hostingu DreamHost VPS lub innego dostawcy hostingu opartego na systemie Linux, masz już wszystko, czego potrzebujesz, aby zacząć automatyzować zarządzanie swoim serwerem. 

Jeśli nie, to VPS za 10 dolarów miesięcznie będzie wszystkim, czego potrzebujesz, zwłaszcza na początku. 

Dla tych, którzy już używają VPS DreamHost, proces nie mógłby być prostszy:

  1. Zaloguj się do swojego serwera przez SSH
  2. Uruchom crontab -e, aby edytować swoją osobistą tabelę Cron Job
  3. Dodaj zaplanowane zadania
  4. Zapisz i pozwól, aby automatyzacja się rozpoczęła!
Słownik DreamHost

SSH

Secure Shell Protocol (SSH) to kryptograficzny protokół sieciowy służący do bezpiecznego uruchamiania usług przez niezabezpieczoną sieć. Jest głównie używany do wykonywania poleceń linii komend i zdalnych logowań.

Czytaj Więcej

To wszystko. Infrastruktura, za którą już płacisz, staje się bardziej wartościowa, bardziej wydajna.

Nowy Autopilot Twojego Serwera

Gratulacje! 

Przeszedłeś od pracy ręcznej do magii automatyzacji. Dzięki Cron Jobom, które zajmują się rutynową konserwacją, kopiami zapasowymi i monitorowaniem, możesz skupić się na rozwijaniu swojej strony internetowej i biznesu zamiast pilnować serwera.

I pamiętaj, to będzie proces. Automatyzacja stanie się bardziej zaawansowana, kiedy będziesz dodawać do niej coraz więcej zadań. 

Ale na razie zacznij od kilku podstawowych Cron Job, monitoruj jak działają i stopniowo rozszerzaj swoją automatyzację, gdy poczujesz się bardziej komfortowo z procesem.

Teraz idź i zdrzemnij się, bo właśnie zaoszczędziłeś mnóstwo czasu.

Otrzymuj treści bezpośrednio do swojej skrzynki odbiorczej

Zapisz się teraz, aby otrzymywać wszystkie najnowsze aktualizacje bezpośrednio do swojej skrzynki odbiorczej.