Изпълнявайте Cron Job всяка минута

Run Cron Job Every Minute



Ако искате да стартирате програма или скрипт във фонов режим на Linux, тогава работата на cron е много важна. С помощта на задания на cron можете да изпълните програма или скрипт във фонов режим след определен интервал от време.

Нека да разгледаме някои от примерите от реалния живот на cron работни места.







  • Да приемем, че притежавате уебсайт и искате да изпращате имейли на всички потребители на вашия уебсайт всеки ден. Всичко, което трябва да направите, е да напишете скрипт за изпращане на имейл и да настроите cron работа, която да изпълнява този скрипт всеки ден.
  • Да приемем, че притежавате рекламна агенция и искате да напомните на всички рекламодатели, чието салдо е под 5 $, да презареждат. Всичко, което трябва да направите, е да напишете скрипт, който проверява баланса на всички рекламодатели и когато той е под 5 $, той ще изпрати известие на мобилния номер или имейл на рекламодателя. След това настройте cron работа да изпълнява скрипта на всеки 5 до 10 минути или на всеки час.

Има много други употреби на cron работни места в Linux.



В тази статия ще ви покажа как да стартирате cron задачи всяка минута в Linux. Ще използвам Debian 9 Stretch за демонстрацията. Но можете да използвате всяка модерна Linux дистрибуция по ваш избор. Да започваме.



В Linux не е нужно да сте корен за да стартирате cron работни места. Можете да стартирате задания на cron като всеки потребител. Всеки потребител в Linux може да използва crontab файл, за да стартират свой собствен набор от задачи за cron.





По подразбиране потребителят няма crontab файл на Linux. Можете да създадете a crontab файл със следната команда:

$crontab



Ако изпълнявате тази команда за първи път, тогава трябва да бъдете помолени да изберете текстов редактор от списъка. Ще избера нано , по подразбиране. Можете да изберете този, който ви харесва. След като приключите, натиснете .

The crontab файлът трябва да бъде създаден (ако вече не е наличен) и да се отвори с любимия ви текстов редактор. Сега можете да добавите свои собствени задачи за cron в края на този файл и след като сте доволни, просто го запазете и излезте от текстовия редактор.

Синтаксис на изпълнение на команда на всяка минута:

Синтаксисът на crontab файлът е следният:

минута час dayOfMonth месец dayOfWeek командаToRun

Тук,

  • минута може да бъде 0 да се 59 .
  • час също може да бъде 0 да се 59 .
  • dayOfMonth може да бъде 1 да се 31 .
  • месец може да бъде 1 да се 12 .
  • ден на седмицата може да бъде 0 да се 7 . 0 и 7 означава неделя, 1 означава понеделник, 2 означава вторник и така нататък.

За да стартирате a commandToRun команда всяка минута, трябва да го напишете в crontab файл, както следва:

* * * * *commandToRun

Изпълнение на Crob Job всяка минута:

Сега, когато знаем теориите, нека добавим прост скрипт timer.sh към crontab файл и вижте как да го управлявате.

В timer.sh скрипт, имам само следните редове кодове. Всичко, което прави, е да създаде нов файл /home/shovon/bin/timer.log (ако вече не съществува) и добавя към него изхода на командата date.

Сега нека добавим скрипта към нашия crontab и го оставете да работи всяка минута със следния ред:

* * * * * /У дома/шовон/съм/timer.sh

След като запазите crontab файл и излезте от текстовия редактор, новият crontab файлът трябва да бъде инсталиран.

След минута нов файл е timer.log е създаден в желаната директория, както можете да видите в маркирания раздел на екрана по -долу.

От timer.log log файл, очевидно е, че скриптът timer.sh тича всяка минута.

Улов на грешки от Cron Jobs:

За да уловите грешки от задание на cron, можете да изпратите грешките до a error.log файл и нормални изходи към access.log файл например. Разбира се, можете да дадете име на файловете каквото искате.

За да демонстрирам това, промених скрипта си timer.sh малко. Сега грешките се изпращат на error.log файл в / home / shovon / bin директория и изходите се изпращат до access.log в / home / shovon / bin директория.

Първоначално /tmp/i_must_be_тук файлът не съществува, така че получавам грешката в error.log файл, както можете да видите.

The access.log файлът е празен в момента.

Сега ще създам файла /tmp/i_must_be_тук

И както можете да видите, изходът е в access.log файл сега.

Ако искате, можете да пренасочите изхода и грешките в същия файл, както следва:

Както можете да видите, изходите STDIN и STDERR се изпращат към out.log файл.

Уверете се, че последната работа е завършена, преди да я изпълните отново:

За да работи това, можете да създадете временен файл веднага след стартирането на задачата и да го премахнете точно преди да приключи. След това можете да проверите дали временният файл съществува, преди да започнете заданието. Ако това стане, можете да излезете от заданието и да го изпълните само когато временният файл е недостъпен.

Този прост скрипт прави точно това.

Както можете да видите, timer.pid файлът е създаден.

Четенето на access.log file доказва, че задачата cron не се изпълнява преди предишната задача cron да приключи. Както можете да видите, той работи в 01:32:01 и следващия път трябваше да работи в 01:33:01, но не стана. Вместо това, той излезе в 01:35:01, около 3 минути по -късно.

Организиране на Cron Job изходи за лесно отстраняване на грешки:

Можете да форматирате изходите добре, за да улесните отстраняването на грешки в работата на cron.

Пример за това как може да се направи е даден в следния скрипт.

Както можете да видите, резултатите, грешките и съобщенията за успех са добре отпечатани в лог файла.

Можете да правите невероятни неща с cron job и shell скриптове. Демонстрирах някои от идеите тук. Но небето е вашата граница. Не се колебайте да експериментирате с всякакви идеи, които имате. Благодаря, че прочетохте тази статия.