|
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 zaczyna się od /etc/rc.d/ o /etc/init.d w zależności od dystrybucji. Cron działa w tle, co minutę sprawdza tabelę zadań crontab / etc / crontab lub / var / spool / cron w poszukiwaniu zadań do wykonania. Jako użytkownik możemy dodawać polecenia lub skrypty z zadaniami do crona, aby zautomatyzować niektóre procesy. Jest to przydatne na przykład do zautomatyzowania aktualizacji systemu lub dobrego systemu kopii zapasowych.
Co to jest Crontab?
Crontab to prosty plik tekstowy, który przechowuje listę poleceń do wykonania w czasie określonym przez użytkownika. Crontab zweryfikuje datę i godzinę wykonania skryptu lub polecenia, uprawnienia do wykonywania i zrobi to w tle. Każdy użytkownik może mieć swój własny plik crontab, w rzeczywistości plik / etc / crontab zakłada się, że jest to plik crontab użytkownika root, kiedy zwykli użytkownicy (a nawet root) chcą wygenerować własny plik crontab, użyjemy 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!”
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).
Nadal można się nimi zająć 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 jest to mylące, uchwyty crontab specjalne ciągi 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: