Uruchamiaj zadanie Crona co minutę

Run Cron Job Every Minute



Jeśli chcesz uruchomić program lub skrypt w tle w systemie Linux, bardzo ważne jest zadanie cron. Za pomocą zadań cron możesz wykonać program lub skrypt w tle po określonym czasie.

Rzućmy okiem na niektóre z rzeczywistych przykładów pracy crona.







  • Załóżmy, że jesteś właścicielem witryny i chcesz codziennie wysyłać e-maile do wszystkich użytkowników Twojej witryny. Wszystko, co musisz zrobić, to napisać skrypt do wysyłania wiadomości e-mail i skonfigurować zadanie cron, aby codziennie uruchamiać ten skrypt.
  • Załóżmy, że jesteś właścicielem agencji reklamowej i chcesz przypomnieć wszystkim reklamodawcom, których saldo jest poniżej 5 USD, aby doładować. Wystarczy napisać skrypt, który sprawdza saldo wszystkich reklamodawców i gdy będzie poniżej 5$, wyśle ​​powiadomienie na numer telefonu komórkowego lub e-mail reklamodawcy. Następnie skonfiguruj zadanie cron, aby uruchamiało skrypt co 5 do 10 minut lub co godzinę.

Istnieje wiele innych zastosowań zadań cron w Linuksie.



W tym artykule pokażę, jak uruchamiać zadania cron co minutę w systemie Linux. Do demonstracji użyję Debian 9 Stretch. Ale możesz użyć dowolnej nowoczesnej dystrybucji Linuksa. Zacznijmy.



W Linuksie nie musisz być źródło w celu uruchomienia zadań cron. Możesz uruchamiać zadania cron jako dowolny użytkownik. Każdy użytkownik Linuksa może używać crontab plik do uruchomienia własnego zestawu zadań cron.





Domyślnie użytkownik nie ma crontab plik w systemie Linux. Możesz stworzyć crontab plik za pomocą następującego polecenia:

$crontab-I



Jeśli uruchamiasz to polecenie po raz pierwszy, powinieneś zostać poproszony o wybranie edytora tekstu z listy. wybiorę nano , domyślny. Możesz wybrać ten, który Ci się podoba. Gdy skończysz, naciśnij .

ten crontab plik należy utworzyć (jeśli nie jest jeszcze dostępny) i otworzyć w ulubionym edytorze tekstu. Teraz możesz dodać własne zadania cron na końcu tego pliku, a gdy będziesz zadowolony, po prostu go zapisz i wyjdź z edytora tekstu.

Składnia wykonywania polecenia co minutę:

Składnia crontab plik wygląda następująco:

minuta godzina dzień miesiąca miesiąc dzień tygodnia polecenieToRun

Tutaj,

  • minuta może być 0 do 59 .
  • godzina może też być 0 do 59 .
  • dzień miesiąca może być 1 do 31 .
  • miesiąc może być 1 do 12 .
  • dzień tygodnia może być 0 do 7 . 0 oraz 7 oznacza niedzielę, 1 oznacza poniedziałek, 2 oznacza wtorek i tak dalej.

Aby uruchomić polecenie do uruchomienia komendę co minutę, należy ją wpisać w crontab plik w następujący sposób:

* * * * *polecenie do uruchomienia

Prowadzenie robactwa co minutę:

Teraz, gdy znamy teorie, dodajmy prosty skrypt timer.sh do crontab plik i zobacz, jak nim zarządzać.

w timer.sh skrypt, mam tylko następujące wiersze kodów. Wszystko, co robi, to tworzenie nowego pliku /home/shovon/bin/timer.log (jeśli jeszcze nie istnieje) i dołącza do niego dane wyjściowe polecenia date.

Teraz dodajmy skrypt do naszego crontab i pozwól mu działać co minutę z następującym wierszem:

* * * * * /Dom/shovon/jestem/timer.sh

Po zapisaniu crontab pliku i wyjdź z edytora tekstu, nowy crontab plik powinien być zainstalowany.

Po upływie minuty nowy plik jest timer.log jest tworzony w żądanym katalogu, jak widać w zaznaczonej sekcji zrzutu ekranu poniżej.

Od timer.log logu, oczywiste jest, że skrypt timer.sh biegnie co minutę.

Wyłapywanie błędów z zadań Cron:

Aby wyłapać błędy z zadania cron, możesz wysłać je do error.log plik i normalne wyjścia do dostęp.log plik na przykład. Oczywiście możesz nazwać pliki, co chcesz.

Aby to zademonstrować, zmodyfikowałem swój skrypt timer.sh troszkę. Teraz błędy są wysyłane do error.log plik w / home / shovon / bin katalogu, a dane wyjściowe są wysyłane do dostęp.log w / home / shovon / bin informator.

Na początku /tmp/i_musi_być_tutaj plik nie istnieje, więc pojawia się błąd w error.log plik jak widać.

ten dostęp.log plik jest w tej chwili pusty.

Teraz mam zamiar utworzyć plik /tmp/i_musi_być_tutaj

Jak widać, wyjście jest w dostęp.log plik teraz.

Jeśli chcesz, możesz przekierować dane wyjściowe i błędy w tym samym pliku w następujący sposób:

Jak widać, wyjścia STDIN i STDERR są wysyłane do wyj.log plik.

Upewnij się, że ostatnie zadanie zostało uruchomione przed ponownym uruchomieniem zadania:

Aby to zadziałało, możesz utworzyć plik tymczasowy zaraz po uruchomieniu zadania i usunąć go tuż przed jego zakończeniem. Następnie możesz sprawdzić, czy plik tymczasowy istnieje przed uruchomieniem zadania. Jeśli tak, możesz wyjść z zadania i uruchomić je tylko wtedy, gdy plik tymczasowy jest niedostępny.

Ten prosty skrypt właśnie to robi.

Jak widać, timer.pid tworzony jest plik.

Czytanie dostęp.log Plik udowadnia, że ​​zadanie cron nie zostanie uruchomione przed zakończeniem działania poprzedniego zadania cron. Jak widać, uruchomił się o 01:32:01, a następnym razem powinien uruchomić się o 01:33:01, ale tak się nie stało. Zamiast tego uruchomił się o 01:35:01, około 3 minuty później.

Organizowanie danych wyjściowych zadań Cron w celu łatwego debugowania:

Możesz ładnie sformatować dane wyjściowe, aby ułatwić debugowanie zadania cron.

Przykład tego, jak można to zrobić, znajduje się w poniższym skrypcie.

Jak widać, wyniki, błędy i komunikaty o powodzeniu są ładnie drukowane w pliku dziennika.

Możesz robić niesamowite rzeczy z zadaniami cron i skryptami powłoki. Zademonstrowałem tutaj niektóre pomysły. Ale niebo jest twoją granicą. Zapraszam do eksperymentowania z dowolnymi pomysłami. Dziękuję za przeczytanie tego artykułu.