🖤 ​​Wyprzedaż z okazji Czarnego Piątku: Dodatkowe 10% zniżki z kodem BFCM10 | Takie samo odnowienie
Chwyć ofertę

Jak prawidłowo tworzyć zadania cron na serwerze Linux

Ostatnia aktualizacja: wrzesień 7, 2026 7 min odczyt Sanjeet Chauhan
Utwórz zadania Cron na serwerze Linux

Aby utworzyć zadania cron na serwerze Linux, upewnij się, że usługa cron jest zainstalowana i uruchomiona, a następnie użyj crontab -e aby dodać harmonogram w formacie m h dom mon dow command. Zapisz plik i zweryfikuj za pomocą crontab -li sprawdź logi, aby potwierdzić wykonanie. Użyj ścieżek bezwzględnych i danych wyjściowych logów, aby zapewnić niezawodność.

W tym przewodniku dowiesz się, jak krok po kroku tworzyć zadania cron na serwerze Linux, zrozumiesz składnię cron, unikniesz typowych pułapek i zobaczysz przykłady z życia wzięte. Jako starszy specjalista ds. hostingu w YouStablePodzielę się również praktycznymi wskazówkami dotyczącymi zarządzania serwerami produkcyjnymi, aby zaplanowane zadania były zawsze wykonywane na czas.

Czym jest Cron i jak działa?

Cron to harmonogram zadań oparty na czasie dla systemów Unix/Linux. Odczytuje pliki crontab użytkownika i systemu oraz wykonuje polecenia w określonych momentach. Istnieją dwa ogólne typy: crontaby użytkownika (dla każdego użytkownika) i ogólnosystemowe. zadania cron (/etc/cron.* i /etc/cron.d). Cron działa w tle jako usługa (cron or crond).

Czym jest Cron i jak działa?

Wymagania wstępne

  • Dostęp do serwera Linux (SSH)
  • Edytor tekstu (nano, vim)
  • Uprawnienia sudo dla zadań systemowych
  • Podstawowa znajomość wiersza poleceń

Większość dystrybucji domyślnie zawiera cron. Jeśli nie, zainstaluj go i włącz za pomocą swojego pakietu. manager.

# Ubuntu/Debian
sudo apt update
sudo apt install -y cron
sudo systemctl enable --now cron
sudo systemctl status cron

# RHEL/CentOS/AlmaLinux/Rocky
sudo dnf install -y cronie
sudo systemctl enable --now crond
sudo systemctl status crond

Zrozum składnię Crontab

Każdy wpis cron wykorzystuje harmonogram składający się z pięciu pól, po którym następuje polecenie. Harmonogram wykonuje obliczenia od lewej do prawej.

# ┌───────── minute (0-59)
# │ ┌─────── hour (0-23)
# │ │ ┌───── day of month (1-31)
# │ │ │ ┌─── month (1-12 or Jan-Dec)
# │ │ │ │ ┌─ day of week (0-7 or Sun-Sat; 0/7 = Sunday)
# │ │ │ │ │
# * * * * *  command to execute

Specjalne ciągi znaków i operatory

  • Specjalne ciągi znaków: @reboot, @hourly, @daily (lub @midnight), @weekly, @monthly, @yearly/@annually
  • Listy: 1,15,30
  • Zakresy: 1-5
  • Wartości kroków: */5 (co 5 jednostek)

Zmienne środowiskowe, które mają znaczenie

  • PATH: Ustaw to jawnie, aby uniknąć komunikatu „polecenie nie znaleziono”.
  • MAILTO: Odbieraj dane wyjściowe e-mailem. Pusta wartość wyłącza pocztę.
  • SHELL oraz HOME: Zdefiniuj interpreter i katalog roboczy.
# At top of a user crontab
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[email protected]

Utwórz swoje pierwsze zadanie Cron (użytkownik Crontab)

Pliki crontab użytkownika działają jako bieżący użytkownik. Jest to idealne rozwiązanie w przypadku skryptów osobistych lub zadań na poziomie aplikacji.

# Edit (select your editor on first run)
crontab -e

# Example: run a backup every day at 02:00
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

# Verify
crontab -l

Utwórz zadania Cron w całym systemie

Systemowe crony są przydatne do globalnej konserwacji lub zadań root. Możesz używać folderów takich jak: /etc/cron.hourly, /etc/cron.dailylub bardziej elastyczny /etc/cron.d katalogiem.

Korzystanie z /etc/cron.d (elastyczne i jawne)

sudo nano /etc/cron.d/nightly-backup

# File contents: note the required "user" field
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 2 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Korzystanie z cron.hourly, cron.daily, cron.weekly, cron.monthly

Umieść skrypty wykonywalne w tych katalogach, a system będzie je uruchamiał z odpowiednią częstotliwością. Używaj ich do prostych zadań konserwacyjnych.

# Example: run daily
sudo cp cleanup.sh /etc/cron.daily/
sudo chmod +x /etc/cron.daily/cleanup.sh

Praktyczne przykłady cron (gotowe do kopiowania i wklejania)

1. Uruchom skrypt co 5 minut

*/5 * * * * /usr/bin/php /var/www/app/artisan schedule:run >> /var/log/laravel-schedule.log 2>&1

2. Cotygodniowe czyszczenie dziennika w niedziele o 03:30

30 3 * * 0 /usr/bin/find /var/log/myapp -type f -name "*.log" -mtime +14 -delete

3. Zrzut bazy danych codziennie o 01:15

15 1 * * * /usr/bin/mysqldump -u backup -p'STRONGPASS' mydb 
| /usr/bin/gzip > /backups/mydb-$(/bin/date +%F).sql.gz 2>&1

4. Uruchom przy rozruchu

@reboot /usr/local/bin/warm-cache.sh >> /var/log/warm-cache.log 2>&1

5. Zapobiegaj nakładaniu się wybiegów ze stadem

*/10 * * * * /usr/bin/flock -n /var/run/report.lock 
/usr/local/bin/generate-report.sh >> /var/log/report.log 2>&1

Testowanie, dzienniki i rozwiązywanie problemów

  • Najpierw przetestuj polecenie ręcznie w powłoce.
  • Użyj ścieżek bezwzględnych do plików binarnych i skryptów.
  • Przekieruj dane wyjściowe do pliku dziennika: >> /var/log/job.log 2>&1.

Gdzie znaleźć logi Cron

  • Ubuntu / Debian: grep CRON /var/log/syslog or journalctl -u cron
  • RHEL/Alma/Rocky/CentOS: less /var/log/cron or journalctl -u crond

Najczęstsze przyczyny niedziałania crona

  • Nieprawidłowa zmienna PATH lub brak ścieżek bezwzględnych.
  • Uprawnienia do plików: skrypt nie jest wykonywalny (chmod +x), niewłaściwego właściciela.
  • Różnice środowiskowe: cron działa w minimalnym środowisku.
  • Nieprawidłowa składnia crontab lub zakończenia linii systemu Windows (użyj Unix LF).
  • Wyłączony przez /etc/cron.deny lub brakuje w /etc/cron.allow.
  • Usługa nie działa: uruchom lub włącz cron/crond.

Najlepsze praktyki bezpieczeństwa dla Cron

  • Najmniejsze uprawnienia: użyj crontabów użytkownika, jeśli nie jest potrzebny root.
  • Ścieżki bezwzględne do poleceń, skryptów i plików.
  • Chroń tajemnice: preferuj pliki env lub sejf zamiast haseł wbudowanych; ogranicz uprawnienia do plików.
  • Sprawdź poprawność danych wejściowych i dodaj obsługę błędów w skryptach (set -Eeuo pipefail).
  • Rejestruj wszystko, obracaj dzienniki logrotate.
  • Zastosowanie flock aby uniknąć równoczesnych przebiegów i nice/ionice w celu ograniczenia wpływu na system.

Cron vs Systemd Timery vs Anacron

Cron jest lekki i wszechobecny, idealny do prostych harmonogramów. Timery Systemd dodają solidne funkcje, takie jak wyrażenia kalendarzowe, losowe opóźnienia i natywne logowanie. Anacron zapewnia, że ​​zadania okresowe nadal będą działać w systemach, które nie zawsze są włączone (np. laptopy), wykonując pominięte uruchomienia po uruchomieniu.

  • Użyj crona do tworzenia precyzyjnych, częstych harmonogramów na serwerach stale włączonych.
  • Używaj timerów systemd, gdy potrzebujesz zaawansowanego harmonogramu lub ustrukturyzowanych logów.
  • Używaj Anacrona do codziennych/tygodniowych/miesięcznych zadań w systemach, które często przechodzą w stan uśpienia lub są ponownie uruchamiane.

WordPress: Zastąp WP Cron prawdziwym Cronem

Domyślny pseudo-cron WordPressa uruchamia się podczas ładowania stron, co może być zawodne. Wyłącz go i użyj systemowego crona dla dokładności i wydajności.

# in wp-config.php
define('DISABLE_WP_CRON', true)
# Run every 5 minutes via curl (replace domain)
*/5 * * * * /usr/bin/curl -s https://example.com/wp-cron.php?doing_wp_cron=1 > /dev/null 2>&1

# Or with WP-CLI (safer, faster); set correct path
*/5 * * * * cd /var/www/html && /usr/local/bin/wp cron event run --due-now >> /var/log/wp-cron.log 2>&1

Jeśli jesteś gospodarzem YouStable, Nasz managePlany WordPress i VPS obejmują środowiska gotowe na cron, WP-CLI oraz pomoc ekspertów umożliwiającą konfigurację niezawodnych harmonogramów tworzenia kopii zapasowych, aktualizacji i czyszczenia pamięci podręcznej — dzięki czemu Twoja witryna będzie szybka i spójna.

Porady ze świata rzeczywistego z produkcji

  • Używaj czasu UTC w harmonogramach o znaczeniu krytycznym, aby uniknąć niespodzianek związanych z przechodzeniem na czas letni.
  • Kontroluj wersje swoich skryptów i przechowuj szablony crontab w repozytorium.
  • Dodaj wyraźne prefiksy dzienników i identyfikatory zadań, aby odróżnić zadania w dziennikach współdzielonych.
  • W przypadku ciężkich prac planuj pracę poza godzinami szczytu i korzystaj z niej nice/ionice.
  • Udokumentuj, kto jest właścicielem każdego crona i jak go bezpiecznie wyłączyć.

FAQ

1. Jak zaplanować zadanie cron w systemie Linux?

Uruchom crontab -e, dodaj wiersz, używając harmonogramu pięciopolowego i polecenia, zapisz i zweryfikuj za pomocą crontab -lUpewnij się, że usługa cron jest uruchomiona i użyj ścieżek bezwzględnych w swoim poleceniu.

2. Jaki jest format crontab?

Format to minute hour day-of-month month day-of-week command. Użyj liczb, nazw (np. pon., sty.), list (1,2), zakresy (1-5), kroki (*/10) lub specjalne ciągi znaków, takie jak @daily oraz @reboot.

3. Gdzie są przechowywane logi zadań cron?

W Ubuntu/Debianie sprawdź /var/log/syslog or journalctl -u cron. W systemach opartych na RHEL sprawdź /var/log/cron or journalctl -u crond. Przekieruj również dane wyjściowe zadania do dedykowanego pliku dziennika.

4. Dlaczego moje zadanie cron nie działa?

Najczęstsze przyczyny: nieprawidłowe ścieżki, brak uprawnień do wykonywania, błędy składni, różnice środowiskowe, zatrzymanie usługi cron lub ograniczenia poprzez cron.allow/cron.deny. Przetestuj polecenie ręcznie i dodaj rejestrowanie.

5. Czy powinienem używać timerów cron czy systemd?

Do prostych, często uruchamianych harmonogramów na serwerach cron jest idealny. Wybierz timery systemd, aby korzystać z zaawansowanych kalendarzy, jittera, zależności i lepszego rejestrowania. W przypadku laptopów lub komputerów stacjonarnych, które nie zawsze działają, dodaj anacron, aby wychwycić pominięte uruchomienia.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Pola oznaczone * są obowiązkowe.

Przewiń do góry