
Gabriel Brooks
0
4854
984
Czy wiedziałeś, że Łowca ostrzy jest ustawiony w 2019 roku? To za trzy lata! Nie wspominając Powrót do przyszłości 2, gdzie podróżują w czasie do 2015 roku. Jednak nie mamy latających samochodów i nie ma wśród nas replikantów (o ile mi wiadomo).
Łatwo jest poczuć się rozczarowanym obecną technologią, gdy porównamy ją do fikcyjnych przedstawień przyszłości. W dzisiejszych czasach nasze telefony, komputery, a nawet domy mogą robić niesamowite rzeczy. 5 projektów automatyki domowej DIY, aby rozpocząć pracę z inteligentnym domem 5 projektów automatyki domowej DIY, aby rozpocząć pracę z inteligentnym domem Jeśli chodzi o tworzenie inteligentnych domów, większość ludzi po prostu nie wiem od czego zacząć. Oto pięć podstawowych projektów inteligentnego domu dla początkujących, które możesz teraz zbudować. . Jednym z nich jest zdolność do automatyzacji zadań.
Każdy użytkownik systemu Linux może korzystać z zadań planowania, niezależnie od tego, czy są one związane z systemem (np. Czyszczenie starych dzienników i aktualizowanie pakietów. Jak zaktualizować jedną lub wszystkie aplikacje w systemie Linux w kilka sekund Jak zaktualizować jedną lub wszystkie aplikacje w systemie Linux w kilka sekund Terminal Linux ułatwia aktualizację pojedynczej aplikacji na komputerze lub zastosowanie wszystkich dostępnych aktualizacji jednocześnie. Oto jak.) lub obsługę użytkownika (sprawdzanie poczty e-mail, pobieranie podcastów…). Użytkownicy systemu Windows mieli Task Scheduler 4 Nudne zadania, które można zautomatyzować za pomocą Windows Task Scheduler 4 Nudne zadania, które można zautomatyzować za pomocą Windows Task Scheduler Twój czas jest zbyt cenny, aby zmarnować go z powtarzającymi się zadaniami. Pozwól nam pokazać, jak zautomatyzować i zaplanować zadania. Mamy też kilka świetnych przykładów. od Windows 95. Narzędzie, które wykonuje tę samą pracę w systemie Linux, nazywa się cron, a tutaj wyjaśnimy, jak z niego korzystać.
Co to jest Cron?
Cron to usługa systemowa, która działa w tle, sprawdza zaplanowane zadania i wykonuje je, jeśli je znajdzie. Zadania - również nazywane “Zadania cron 5 Pomysły dla początkujących instalatorów Linuksa dla zadań Cron i skryptów powłoki 5 Początkujące pomysły dla Instalatorów Linuksa dla zadań Cron i skryptów powłoki Przy pomocy skryptów bash możesz wykonać złożoną serię zadań za jednym razem, więc jest to idealne rozwiązanie dla skomplikowanych i powtarzalnych potrzeb. To także świetny sposób na poznanie terminala. ” - są zdefiniowane w specjalnych plikach konfiguracyjnych (crontabs), które cron skanuje co minutę. Kilka wersji crona można znaleźć w różnych dystrybucjach Linuksa. Na przykład rozwidlenie crona Fedory nazywa się cronie, a są też fcron, bcron i dcron. Niektóre mają dodatkowe funkcje, podczas gdy inne są bardziej skoncentrowane na bezpieczeństwie, ale wszystkie oparte są na tym samym pomyśle.
Ten przewodnik został napisany dla vixie-cron, która jest najbardziej rozpowszechnioną wersją crona i tą, którą znajdziesz na Ubuntu i jego pochodnych. Chociaż większość instrukcji dotyczy również innych implementacji crona, mogą występować niewielkie różnice, więc sprawdź ich instrukcje, jeśli zdecydujesz się na zmianę.
Co to jest Crontab?
Jeśli poważnie myślisz o zarządzaniu czasem, prawdopodobnie masz jakiś kalendarz. Organizuj swój czas z tymi 4 aplikacjami kalendarza Linuxa Organizuj swój czas z tymi 4 aplikacjami kalendarza systemu Linux Czy nadal warto używać aplikacji kalendarza na komputery? Uważamy, że tak, zwłaszcza w celu umożliwienia dostępu do wydarzeń na dowolnym zsynchronizowanym urządzeniu. Te aplikacje kalendarza dla systemu Linux są szczególnie przydatne. - aplikacja lub przynajmniej kartka papieru. Crontab jest bardzo podobny do kalendarza twojego komputera. Przechowuje informacje o zaplanowanych zadaniach, informując crona, które komendy mają zostać uruchomione o której godzinie.
W rzeczywistości w twoim systemie jest kilka plików crontab. Każdy użytkownik ma własny plik crontab, w tym root (administrator). Pliki crontab użytkownika są przechowywane w / var / spool / cron / crontabs /
. The crontab -l
polecenie wyświetli plik crontab dla bieżącego użytkownika. Możesz sprawdzić crontab roota za pomocą sudo crontab -l
.
Dodatkowo istnieje systemowy plik crontab / etc / crontab
który jest używany do zadań ogólnosystemowych. Zazwyczaj przyjmują one postać wykonywalnych skryptów włożonych do roota /etc/cron.hourly/
, /etc/cron.daily/
, /etc/cron.weekly/
, i /etc/cron.monthly/
foldery, aw niektórych dystrybucjach plik /etc/cron.d/
folder również. Ogólnie rzecz biorąc, nie powinieneś zajmować się tymi zadaniami, ponieważ większość z nich jest tworzona automatycznie przez zainstalowane aplikacje.
Jak planować zadania za pomocą Crona
Brzmi prosto: zaplanuj zadania, po prostu dodaj je do swojego crontab. Ponieważ crontab jest specjalnym plikiem konfiguracyjnym, nie zaleca się jego ręcznej edycji. Zamiast tego użyj crontab -e
dowództwo. Aby edytować tabele główne lub innych użytkowników, uruchom polecenie z uprawnieniami administratora i dodaj ich nazwę użytkownika po opcji -u:
sudo crontab -u root -e
sudo crontab -u nazwa użytkownika -e
Plik crontab ma dwie sekcje. Pierwszy zawiera zmienne środowiskowe, które są konfigurowane automatycznie. Możesz bezpiecznie zmieniać zmienne PATH, HOME i SHELL oraz modyfikować zmienną MAIL.
Druga część pliku to rzeczywista “rozkład jazdy” z zaplanowanymi zadaniami. Każde zadanie zajmuje wiersz (wiersz) w tabeli, a kolumny reprezentują następujące wartości:
Aby pomyślnie zaplanować zadania, musisz wiedzieć trochę o składni crontab:
- Liczby powinny być liczbami całkowitymi (liczbami całkowitymi) i można użyć gwiazdki (*) w dowolnej kolumnie jako symbolu wieloznacznego, co oznacza “co minutę / dzień / miesiąc… ”.
- w “Dzień miesiąca” należy uważać, aby nie ustawić daty, która nie występuje w miesiącu określonym w “Miesiąc” kolumna (na przykład 30 lutego).
- Obie “Miesiąc” i “Dzień tygodnia” kolumny akceptują krótkie nazwy odpowiednio dla miesięcy i dni, bez rozróżniania wielkości liter.
- w “Dzień tygodnia” kolumna, zarówno 0, jak i 7 oznaczają niedzielę. The “Godzina” kolumna wymaga “czas wojskowy” (W formacie 24-godzinnym), ale nie można użyć liczby 24 - zamiast tego 0 oznacza 12 rano. Dzieje się tak, ponieważ wartości minuty, godziny i dnia tygodnia zaczynają się od 0 zamiast 1.
- Sekundy nie są obsługiwane, więc nie można zaplanować zadania na konkretną sekundę.
Co możesz zrobić, to zaplanować przedziały czasowe za pomocą łącznika (14-22 poniżej “godziny” wykona zadanie nieprzerwanie od godziny 14:00 do 22.00) lub uruchom jedno zadanie kilka razy, definiując listę oddzieloną przecinkami (1,3,5 poniżej “Dzień tygodnia” uruchomi zadanie w poniedziałek, środę i piątek).
Tymczasem wartości kroków są reprezentowane przez ukośnik (/), a one wskazują liczbę pominięć w zakresie; na przykład 3-20 / 3 poniżej “godziny” będzie wykonywać zadanie co trzy godziny od 3 rano do 8 wieczorem Jest to przydatne, gdy chcesz powtarzać zadania co X godzin, ponieważ możesz połączyć gwiazdkę i krok (* / X). Możesz łączyć zakresy z listami i kroki z zakresami, o ile używasz liczb. Innymi słowy, kombinacje takie jak “Jan-Mar” lub “Wt., Pt. – Niedz” niedozwolone.
Alternatywnie, zamiast ustawiać wartość dla każdej kolumny, możesz po prostu napisać @ co tydzień, @ rok, @ miesiąc, @ dzień lub @ godzinę na początku wiersza, a następnie polecenie. Zaplanowane w ten sposób zadania będą uruchamiane w pierwszej możliwej instancji, więc @weekly będzie uruchamiane o północy pierwszego dnia tygodnia. Jeśli chcesz uruchomić zadanie natychmiast po uruchomieniu systemu (ponownie), użyj polecenia @reboot.
W tym przykładzie zaplanowaliśmy tworzenie kopii zapasowej codziennie o 08:20 i 20:20. Tapeta zmienia się automatycznie co trzy dni o godzinie 19:00, a skrypt sprawdzi, czy są nowe podcasty. 10 najlepszych aplikacji do zarządzania podcastami w systemie Linux. 10 najlepszych aplikacji do zarządzania podcastami w systemie Linux Linux nie ma dużego wyboru klientów podcastów, ale nie martw się - prawie każdy nowoczesny odtwarzacz muzyki dla systemu Linux może służyć jako podcatcher. Rzućmy okiem na opcje. w każdy poniedziałek o 10:20 i 20:20. Przypomnienie o urodzeniu jest ustawione na 25 marca i działa co 30 minut w określonym czasie. Na koniec skrypt sprawdza pocztę e-mail co 15 minut od 8 do 20, ale tylko w dni robocze. Możesz dowolnie porządkować swoje tabele ze spacjami i tabulatorami między kolumnami, ale nie w nich (nie umieszczaj spacji między przecinkami, myślnikami i ukośnikami).
Jeśli wszystko to wydaje się zbyt skomplikowane, nie martw się - zawsze możesz polegać na Internecie. Narzędzia takie jak Crontab Generator, Crontab.guru i Corntab pomagają tworzyć zadania cron bez znajomości składni crontab. Pokazują, kiedy zadanie zostanie uruchomione w następnej kolejności, i udostępniają szablony często używanych wyrażeń. Crontab.guru jest najlepszy w tej grupie, ponieważ umożliwia testowanie składni crontab na żywo, dzięki czemu można od razu zobaczyć, jak zmiany wpłyną na harmonogram.
Jak sprawdzić, czy zadania Cron są wykonywane
Cron powinien działać cicho w tle i pozwolić ci pracować bez zakłóceń, gdy dba o twoje zadania. Ale jak możesz się upewnić, że to naprawdę działa?
Cron ma wbudowaną funkcję powiadomień e-mail, ale wymaga to skonfigurowania co najmniej prostego lokalnego serwera poczty. Jak działa serwer poczty e-mail? [Objaśnienie technologii] Jak działa serwer e-mail? [Objaśnienie technologii] Za każdą wiadomością e-mail kryje się potężny silnik o nazwie serwer poczty e-mail, który przesyła wiadomości e-mail przez Internet. . Niewielu użytkowników domowych jest skłonnych to skonfigurować i niewiele dystrybucji domyślnie to zapewnia (na przykład Ubuntu tego nie robi). Najszybszym sposobem sprawdzenia na cronie jest zeskanowanie dziennika systemu za pomocą tego polecenia:
cat / var / log / syslog | grep -i cron
Opcja -i powoduje, że w naszym zapytaniu wielkość liter nie jest uwzględniana. Możliwe, że cron będzie miał gdzieś swój własny plik dziennika / var / log /
, więc spójrz tam, jeśli to polecenie nie przyniesie użytecznych wyników.
Jeśli chcesz zapisać dane wyjściowe określonego zadania cron, możesz przekierować je do pliku. Podaj ścieżkę i nazwę pliku w ostatniej kolumnie twojego crontab, po poleceniu, które chcesz uruchomić:
30 * * * * / usr / bin / yourcommand> /home/username/logfile.txt
Użycie pojedynczego symbolu> zastąpi plik przy każdym uruchomieniu polecenia. Aby tego uniknąć, użyj >> zamiast tego - dodaje dane wyjściowe do istniejącego pliku.
Co jeśli Cron nie działa?
Może się zdarzyć, że dodano niektóre zadania, sprawdzono dzienniki systemowe i okazało się, że nie działają one tak, jak powinny. Oto kilka rzeczy, które należy wziąć pod uwagę - i zachować ostrożność - próbując rozwiązać problem.
Czy usługa cron jest uruchomiona??
Jak wiadomo, demon cron powinien działać w tle. Upewnij się, że tak jest naprawdę. Usługa nosi nazwę crond lub po prostu cron.
W przypadku dystrybucji korzystających z systemd:
systemctl status cron
W przypadku dystrybucji korzystających z Upstart:
status crona usługi
Jeśli Twoja dystrybucja korzysta z “stary” Podejście inicjujące System V, wymień wszystkie usługi z:
lista initctl
i zobacz czy cron jest na liście.
Czy w ogóle możesz mieć plik crontab?
Sprawdź swój /itp
folder dla nazwanych plików cron.allow
i cron.deny
. Na Ubuntu żadna z nich nie powinna istnieć, co oznacza, że wszyscy użytkownicy mogą zarządzać zadaniami cron. Jeśli jednak istnieje cron.allow
plik, musi zawierać twoją nazwę użytkownika. I odwrotnie, jeśli cron.deny
plik istnieje, nazwa użytkownika nie powinna się w nim znajdować. Opuszczając cron.deny
pusty plik oznacza, że tylko root i użytkownicy wymienieni w cron.allow
może mieć pliki crontab.
Czy twoje zmienne są ustawione poprawnie??
Crontab automatycznie ustawia zmienną SHELL na / bin / sh
. Jeśli jednak twoją powłoką jest ryba 7 powodów, dla których powinieneś zainstalować Fish Shell 7 powodów, dla których powinieneś zainstalować Fish Shell Nie podoba ci się, jak działa twój terminal Linux? Dlaczego nie zainstalować nowej powłoki? Jedną z takich skorup jest ryba, która wprowadza funkcje, które powinny stać się powszechne, ale tak się nie stało. Spójrzmy. lub bash, powinieneś zmienić zmienną SHELL. Podobnie zmienna PATH domyślnie zawiera tylko kilka katalogów. W tym miejscu crontab szuka poleceń Linuksa. Jeśli Twoje zadanie cron nie działa, przyczyną może być to, że crontab nie “widzieć” polecenie, którego użyłeś. Aby tego uniknąć, dodaj katalogi zawierające polecenia do zmiennej PATH, oddzielone dwukropkami:
ŚCIEŻKA = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Jeśli nie chcesz edytować tego w swoim crontabie, możesz zdefiniować te zmienne w skrypcie, który chcesz uruchomić jako zadanie crona.
Czy twoje formatowanie crontab jest w punkcie?
Składnia Crontab nie jest dokładnie płynna. Nawet jeśli zweryfikujesz to za pomocą wspomnianych wcześniej narzędzi online, drobny błąd nadal może uniemożliwić cronowi wykonanie twoich zadań. Uważaj, aby:
- dodaj pusty wiersz na końcu pliku crontab
- ucieknij znak% odwrotnym ukośnikiem, jeśli twoje polecenie go zawiera
- napisz komentarze jako osobne linie zaczynające się od #. Nie pisz komentarzy w tym samym wierszu co zmienne środowiskowe lub obok poleceń zadania cron.
Czy naprawdę musisz korzystać z terminala??
Absolutnie nie. Użytkownicy KDE mogą planować zadania cron za pomocą KCron, który jest dostępny z Ustawienia systemowe> Harmonogram zadań moduł. Dzięki prostemu interfejsowi, który pozwala wybierać i dostosowywać wszystko za pomocą kilku kliknięć myszką, korzystanie z KCron jest przyjemnością.
Jeśli wolisz GNOME, to GNOME Schedule jest dla Ciebie. Podejście jest podobne, choć interfejs jest nieco inny. Oferuje zaawansowany tryb precyzyjnych modyfikacji i jest wyposażony w aplet panelu, z którego można bezpośrednio zarządzać zadaniami.
Powinieneś być świadomy innych rozwiązań, takich jak Crontab-UI i Minicron. Są bardziej odpowiednie dla użytkowników, którzy zarządzają wieloma maszynami i zadaniami cron, a jedną z ich najfajniejszych funkcji jest interfejs internetowy.
Czy są jakieś alternatywy dla Crona?
Chociaż cron jest w zasadzie standardowym harmonogramem zadań do planowania i automatyzacji zadań w systemie Linux w systemie Linux z programem Gnome Schedule Planowanie i automatyzacja zadań w systemie Linux z programem Gnome Schedule, z pewnością nie jest jedynym. Polecenie at jest idealne do szybkich, jednorazowych zadań, które można zaplanować bezpośrednio z wiersza poleceń, bez specjalnych plików konfiguracyjnych. Jeśli potrzebujesz więcej, jest GNUbatch, który wprowadza pojęcie zależności. Za pomocą GNUbatch możesz ustawić określone warunki dla każdego zadania lub uzależnić zaplanowane zadanie od poprzedniego. Coś podobnego można osiągnąć za pomocą systemowych timerów. Mimo że jest to mniej praktyczne w konfiguracji niż cron, systematyczne liczniki czasu mogą pamiętać, czy zadanie nie dotrzymało harmonogramu, gdy komputer był wyłączony, i uruchamiać go przy następnym włączeniu.
Jest to coś, czego cron nie może zrobić sam. Jako taki, jest odpowiedni dla serwerów i komputerów, które są ciągle uruchomione, ale nie wykona zadania zaplanowanego, gdy komputer był wyłączony. Tutaj wchodzi anacron. To technicznie nie jest “alternatywny” lub zamiennik crona. Zamiast tego anacron uzupełnia crona i powinien być używany razem z nim, co ma miejsce w wielu dystrybucjach Linuksa, w tym w Ubuntu i produktach opartych na Ubuntu. Anacron rejestruje datę ostatniego wykonania zadania i sprawdza, czy nie wystąpiły jakieś pominięte instancje podczas wyłączania systemu. Uruchomi je po ponownym włączeniu komputera, ale każde zadanie można wykonać tylko raz dziennie.
Niektóre wersje crona, takie jak fcron, domyślnie oferują funkcje anacrona. Zaawansowani użytkownicy mogą chcieć spojrzeć na Hcron lub SuperCron, które wprowadzają wiele ulepszeń do podstawowych funkcji cron, ale są również nieco trudne do zarządzania.
Co z Tobą? Jak organizujesz swoje cyfrowe zadania? Jakie zadania planujesz w systemie Linux? W komentarzach podziel się swoimi historiami i wskazówkami dotyczącymi używania crona.
Źródło zdjęcia: plan zajęć autorstwa Gonzalo Aragon za pośrednictwem Shutterstock