Cron i crontab, wyjaśniono

Lukaina opublikowany chwilę temu doskonały poradnik na temat cron i crontab którymi myślę, że warto się nimi podzielić. Cron jest rodzajem odpowiednika zaplanowanych zadań w systemie Windowstylko tyle, że jest obsługiwana z terminala. Widzą to ci, którzy wolą interfejs wizualny, aby osiągnąć ten sam cel kolejny artykuł.

Co to jest cron?

Nazwa cron pochodzi od greckiego chronosu, co oznacza „czas”. W systemie operacyjnym Unix cron jest zwykłym menedżerem procesów w tle (demonem), który uruchamia procesy lub skrypty w regularnych odstępach czasu (na przykład co minutę, dzień, tydzień lub miesiąc). Procesy, które muszą zostać wykonane, oraz czas, w którym muszą zostać wykonane, są określone w pliku crontab.

prace Como

Demon cron uruchamia się z pliku /etc/rc.d/ lub /etc/init.d, w zależności od dystrybucji. Cron działa w tle, co minutę sprawdzając tabelę zadań crontab /etc/crontab lub /var/spool/cron pod kątem zadań do wykonania. Jako użytkownik możemy dodawać polecenia lub skrypty z zadaniami do crona, aby zautomatyzować określone procesy. Jest to przydatne na przykład do automatyzacji aktualizacji systemu lub tworzenia solidnego systemu kopii zapasowych.

Podobne artykuł:
Samouczek: Zainstaluj pakiety .tar.gz i .tar.bz2

Co to jest Crontab?

Crontab to prosty plik tekstowy, który przechowuje listę poleceń do wykonania w określonym przez użytkownika czasie. Crontab sprawdza datę i godzinę uruchomienia skryptu lub polecenia, uprawnienia wykonywania i wykonuje je w tle. Każdy użytkownik może mieć własny plik crontab; w rzeczywistości zakłada się, że plik /etc/crontab jest plikiem crontab użytkownika root. Gdy zwykli użytkownicy (a nawet root) chcą utworzyć własny plik crontab, używają polecenia `crontab`.

Crontab to najłatwiejszy sposób zarządzania zadaniami cron w systemach z wieloma użytkownikami, jako zwykły użytkownik systemu lub użytkownik root.

Korzystanie z crontab

Zaczynamy od prostego przykładu.

Zamierzamy zautomatyzować aktualizację systemu, aby wyeliminować irytujące stwierdzenie „Zawsze muszę aktualizować, a mi się to nie podoba!”

jak
Podobne artykuł:
Polecenia umożliwiające poznanie systemu (identyfikacja sprzętu i niektórych konfiguracji oprogramowania)

Przede wszystkim zrobimy skrypt. Ten skrypt zostanie wywołany przez crona i będzie zawierał wszystkie instrukcje, które chcemy wykonać, dlatego konieczne jest przetestowanie go w kilku przypadkach i na kilka sposobów przed umieszczeniem go w cronie, prosty skrypt aktualizacyjny, taki jak ten:

#! / bin / bash #script update przykład #wybierz swoją dystrybucję # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Usuń # z linii dystrybucji. Jeśli jest to Ubuntu / Debian, zaczyna się od apt-get.

Zapisujemy skrypt jako update.sh (np. Katalog skryptów w Twoim domu). Zmieniamy uprawnienia do wykonywania wspomnianego skryptu za pomocą:

chmod a + x ~ / scripts / update.sh

Uruchamiamy skrypt kilka razy, aby sprawdzić, czy wszystko działa płynnie, modyfikujemy to, co jest konieczne (nie może zawierać błędów, w przeciwnym razie cron będzie tylko powtarzał błąd). Teraz dodajmy zadanie do naszej tabeli crontab.

Dodaj zadania do crontab

Wykonujemy edycję pliku crontab za pomocą crontab -e, w niektórych dystrybucjach (takich jak Ubuntu) daje nam to możliwość wyboru żądanego edytora tekstu, resztę pozostaje vi. Plik crontab będzie wyglądał mniej więcej tak.

# mh dom mon dow polecenie użytkownika

gdzie:

  • m odpowiada minucie wykonania skryptu, wartości mieszczą się w zakresie od 0 do 59
  • h dokładny czas, obsługiwany jest format 24-godzinny, wartości mieszczą się w zakresie od 0 do 23, gdzie 0 oznacza północ.
  • Słońce odnosi się do dnia miesiąca, na przykład możesz określić 15, jeśli chcesz uruchamiać co 15 dni
  • dow oznacza dzień tygodnia, może być numeryczny (od 0 do 7, gdzie 0 i 7 to niedziela) lub pierwsze 3 litery dnia w języku angielskim: pon, wt, śr, czw, pt, sob, niedz.
  • użytkownik definiuje użytkownika, który wykona polecenie, może to być root lub inny użytkownik, o ile ma uprawnienia do wykonania skryptu.
  • komenda odnosi się do polecenia lub bezwzględnej ścieżki wykonywanego skryptu, na przykład: /home/usuario/scripts/update.sh, jeśli wywołuje skrypt, musi być wykonywalny

Dla jasności wyjaśniono kilka przykładów zadań crona:

15 10 * * * user /home/user/scripts/update.sh

Będzie uruchamiał skrypt update.sh codziennie o 10:15

15 22 * * * user /home/user/scripts/update.sh

Będzie uruchamiał skrypt update.sh codziennie o 10:15

00 10 * * 0 root apt-get -y update Użytkownik główny

Będzie uruchamiał aktualizację w każdą niedzielę o 10:00

45 10 * * sun root apt-get -y aktualizacja

Użytkownik root będzie przeprowadzał aktualizację w każdą niedzielę (niedziela) o godzinie 10:45

30 7 20 11 * użytkownik /home/usuario/scripts/update.sh

20 listopada o godzinie 7:30 użytkownik uruchomi skrypt

30 7 11 11 użytkownik słońca /home/usuario/scripts/pastel_con_velitas.sh

11 listopada o 7:30, czyli w niedzielę, użytkownik będzie świętował swojego administratora systemu (czyli mnie)

01 * * * * użytkownik /home/usuario/scripts/molestorecordatorio.sh

Irytujące przypomnienie co minutę o każdej godzinie każdego dnia (NIE zalecane).

Można również obsługiwać zakresy specjalne :

30 17 * * 1,2,3,4,5

O 5:30 po południu codziennie od poniedziałku do piątku.

00 12 1,15,28 * *

O 12:28 każdego pierwszego, piętnastego i XNUMX dnia każdego miesiąca (idealne do płac)

Jeśli to jest mylące, crontab używa specjalnych ciągów znaków do definiowania tych zakresów.

@reboot Uruchom raz, przy starcie
@rocznie kursuje tylko raz w roku: 0 0 1 1 *
@rocznie to samo co @yearly
@miesięczny kursuje raz w miesiącu, pierwszy dzień: 0 0 1 * *
@ Weekly Co tydzień pierwsza minuta pierwszej godziny tygodnia. 0 0 * * 0 ″.
@ codziennie, o godzinie 12:00 0 0 * * *
@midnight to samo co @daily
@ co godzinę w pierwszej minucie każdej godziny: 0 * * * *

Jego użycie jest bardzo proste.

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

Nie mniej ważny:

Zarządzanie zadaniami w Cron

plik crontab

Zastąp istniejący plik crontab plikiem zdefiniowanym przez użytkownika

crontab -e

Edytuj plik crontab użytkownika, każda nowa linia będzie nowym zadaniem crontab.

crontab -l

Wypisz wszystkie zadania crontab użytkownika

crontab -d

Usuń crontab użytkownika

crontab -c reż

Definiuje katalog crontab użytkownika (musi mieć uprawnienia do zapisu i wykonywania)

crontab -u użytkownik

prefiks do obsługi tabeli crontab innego użytkownika, przykłady:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u użytkownik

To narzędzie, podobnie jak wiele innych, można zobaczyć bardziej szczegółowo i szczegółowo w:

Dzięki Lucain!

Dodaj jako preferowane źródło w Google