Как да използвате Cron в Linux Unix

Какво е cron?


Cron е името на програмата, която позволява на потребителите на Linux / Unix автоматично да изпълняват команди или скриптове (групи от команди) в определен час или дата. Обикновено се използва за команди на административни задачи, като например архивиране, но може да се използва за стартиране на всичко. Както е определено в страниците на cron man; това е демон, който изпълнява планирани програми.
Практически във всички дистрибуции на Linux версията Vixie Cron се използва от човека, който я е разработил, който е Пол Викси, един от големите гурута на Unix, също създател, наред с други системи, на BIND, който е един от най -популярните DNS сървъри в света.

Стартирайте cron


Cron е демон (услуга), което означава, че трябва да се стартира само веднъж, обикновено със същото зареждане на системата. Услугата cron се нарича crond. В повечето дистрибуции услугата се инсталира автоматично и се стартира от зареждането на системата, тя може да бъде проверена по няколко начина:
 1) etc / rc.d / init.d / crond status 2) /etc/init.d/crond status crond (pid 507) работи … 
В случай, че имате инсталирана командата за обслужване:
 състояние на услугата crond
 crond (pid 507) работи … 
може да се прегледа и чрез командата ps:
 ps -ef | grep crond
ако по някаква причина cron не работи, можем да го започнем с:
 /etc/rc.d/init.d/crond старт Стартиране на crond: [OK]
[color = rgb (0,0,0)] Ако услугата не е конфигурирана да стартира отначало, би било достатъчно да я добавите с командата chkconfig: [/ color]
 chkconfig -ниво 35 крони на 
С това бихте го добавили, за да стартирате ниво 3 и 5, така че да стартира по време на зареждане на системата.

Използване на cron


Има поне два различни начина за използване на cron:
Първият е в директорията / etc, където най -вероятно ще намерите следните директории:
  • cron.часово
  • cron.daily
  • cron.седмично
  • cron.месечно
Ако скриптов файл е поставен в някоя от тези директории, тогава скриптът ще се изпълнява на всеки час, всеки ден, всяка седмица или всеки месец, в зависимост от директорията.
За да бъде изпълнен скриптът, той трябва да е нещо подобно на следното:
 #! / bin / sh #script, който генерира резервно копие на cd / usr / documents tar czf * архивиране на cp архив / other_directory /
Трябва да поправим, че първият ред започва с #!, Което показва, че това е скрипт на bash shell, другите редове са командите, които искаме скриптът да изпълни. Този скрипт може да бъде кръстен например backup.sh и ние също трябва да променим съответните разрешения, така че да може да бъде изпълнен, например:
 chmod 700 backup.sh ls -l backup.sh -rwx ------ 1 root root 0 20 юли 09:30 backup.sh
"X" в разрешителната група на собственика (-rwx) показва, че може да се изпълни.
Ако оставим този скрипт в cron.hourly, тогава той ще се изпълнява на всеки час с една минута всеки ден, по -късно ще обясня защо.
Вторият начин за стартиране или използване на cron е чрез директно манипулиране на файла / etc / crontab. При инсталирането по подразбиране на различни дистрибуции на Linux този файл ще изглежда по следния начин:
 cat / etc / crontab SHELL = / bin / bash PATH = / sbin: / bin: / usr / sbin: / usr / bin MAILTO = root HOME = / # run-parts 01 * * * * root run-parts / etc / cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
Първите четири реда са променливи, които показват следното:
ШЕЛТова е „черупката“, под която работи cron. Ако не е посочено, този, посочен в реда / etc / passwd, съответстващ на потребителя, който изпълнява cron, ще бъде взет по подразбиране.
ПЪТСъдържа или посочва пътя към директориите, в които cron ще търси командата за изпълнение. Този път е различен от глобалния път на системата или на потребителя.
ПОЩАТА ДОНа него се изпраща изходът на командата (ако има изход). Cron ще изпрати имейл до всеки, който е посочен в тази променлива, тоест трябва да е валиден потребител на системата или на някоя друга система. Ако не е посочено, тогава cron ще изпрати пощата до потребителя, който притежава изпълняваната команда.
У ДОМАТова е основната или главната директория на командата cron, ако тогава не е посочена, коренът ще бъде този, посочен във / etc / passwd файла, съответстващ на потребителя, който изпълнява cron.
The коментарите са обозначени с # в началото на реда.
След горното идват редовете, които изпълняват правилно планираните задачи. Няма ограничения за това колко задачи могат да бъдат, по една на ред. Полета (Те са 7) които формират тези редове се оформят по следния начин:
 Потребителска команда Minute Hour DayOfMonth Mesec DayOf Week
  • Поле: Описание
  • Минута: Той контролира минутата от часа, в който ще бъде изпълнена командата, тази стойност трябва да бъде между 0 и 59.
  • Време: Той контролира времето, когато командата ще бъде изпълнена, посочено е в 24 -часов формат, стойностите трябва да са между 0 и 23, 0 е полунощ.
  • Ден от месеца: Ден от месеца, в който искате да изпълните командата. Например 20 биха били посочени, за да се изпълни командата на 20 -то число на месеца.
  • Месец: Месецът, в който ще бъде изпълнена командата, може да бъде посочен числово (1-12), или от името на месеца на английски, само първите три букви.
  • Делничен ден: Ден в седмицата командата ще бъде изпълнена, тя може да бъде цифрова (0-7) или по името на деня на английски, само първите три букви. (0 и 7 = неделя)
  • Потребител: Потребител, който изпълнява командата.
  • Команда: Команда, скрипт или програма, която искате да изпълните. Това поле може да съдържа няколко думи и интервали.
Звездичка * като стойност в първите пет полета, ще показва началото-края на полето, тоест всичко. Знак * в полето за минути показва всички минути.
За да разбера по -добре това от първите 5 полета и звездичката, ще използвам по -добре няколко примера:
Пример:
 Описание 01 * * * * Изпълнява се по 1 минута на всеки час всеки ден 158 * * * В 8:15 сутринта всеки ден 15 20 * * * В 20:15 ч. на всеки ден 00 5 * * 0 В 5 часа сутринта всяка неделя * 5 * * Слънце Всяка минута от 5:00 сутринта в 5:59 ч. всяка неделя 45 19 1 * * В 19:45 часа 1 -во на всеки месец 01 * 20 7 * В 1 минута на всеки час на 20 юли 10 1 * 12 1 В 1:10 сутринта Всеки понеделник през декември 00 12 16 * сряда На обяд на 16 -то число на всеки месец и това е сряда 30 9 20 7 4 В 9:30 ч. на 20 юли и това е четвъртък 30 9 20 7 * В 9:30 ч. от 20 юли независимо от деня от седмицата 20 * * * 6 До 20 -ата минута на всеки час в събота 20 * * 1 6 До 20 -ата минута на всеки час в събота през януари 
Възможно е също да посочите списъци в полетата. Списъците могат да бъдат под формата на 1,2,3,4 или под формата на 1-4, които биха били същите. Cron по същия начин поддържа увеличаване на списъците, които са посочени, както следва:
 Стойност или списък / увеличение
Отново списъците и увеличенията са по -лесни за разбиране с примери:
Пример:
 Описание 59 11 * 1-3 1,2,3,4,5 В 11:59 ч. От понеделник до петък, януари до март 45 * 10-25 * 6-7 В 45 минути на всички часове от 10 до 25 от всички месеци и че денят е събота или неделя 10,30,50 * * * 1,3,5 В 10, 30 и 50 минути от всички часове в понеделник, сряда и петък * / 15 10-14 * * * На всеки петнадесет минути от 10:00 ч. в 14:00 ч. * 12 1-10 / 2 2,8 * Всички минути от 12 часа, в дните 1,3,5,7 и 9 на февруари и август. (Прирастването в третото поле е 2 и започва от 1) 0 * / 5 1-10,15,20-23 * 3 На всеки 5 часа от ден 1 до 10, ден 15 и от ден 20 до 23 на всеки месец и че денят е сряда 3/3 2/4 2 2 2 На всеки 3 минути, започвайки от минута 3 (3,6,9 и т.н.) от часове 2,6,10 и т.н. (на всеки 4 часа, започвайки от час 2) на 2 февруари и това е вторник
Както може да се види в последния пример, задачата cron, която е възложена на този ред с тези данни, ще бъде изпълнена само ако 5 полета (AND) са изпълнени. Тоест, за да бъде изпълнена задачата, тя трябва да бъде във вторник, 2 февруари в 02:03. Винаги е булева И, която връща истината само ако всички 5 полета са верни в конкретната минута.
[color = rgb (0,0,0)] Предишният случай ясно показва, че: [/ color]
Програмата cron се извиква всяка минута и изпълнява задачите, които нейните полета са изпълнени в тази точна минута.
Включително полето на потребителя и командата, редовете на crontab могат да бъдат както следва:
 0 22 * ​​* * root /usr /daily backup.sh 0 23 * * 5 root /usr /седмично backup.sh 0 8.20 * * * jcarrillo mail -s "система работи" [email protected]
Първите два реда се изпълняват от root потребителя, а първият се изпълнява всеки ден в 22:00 часа скрипта, който генерира ежедневно архивиране. Вторият изпълнява в 23 часа всеки петък скрипт, който генерира седмично архивиране. Третият ред се изпълнява от потребителя sergio и ще се изпълнява в 8 сутринта и 8 през нощта всеки ден и командата е да се изпрати имейл до акаунта [email protected] с темата "системата работи", начин администраторът да знае, че отдалечена система е активна в определените часове, но ако не получи имейл в тези моменти, нещо не е наред.
Да бъдеш корен, тогава е възможно, директно променяте crontab:
 vim / etc / crontab 
Това се променя директно.

Стартиране на Cron с множество потребители, команда crontab


Linux е многопотребителска система и cron е едно от приложенията, които поддържат работа с няколко потребители едновременно. Всеки потребител може да има свой собствен файл crontab, всъщност / etc / crontab се приема за crontab файл на основния потребител, въпреки че няма проблем с включването на други потребители, а оттам и шестото поле, което показва кой точно е потребителят. който изпълнява задачата и се изисква в:
 / etc / crontab

Но когато нормалните потребители (и дори root) искат да генерират свой собствен crontab файл, тогава ще използваме команда crontab.
В директорията / var / spool / cron (може да варира в зависимост от разпространението), cron файл се генерира за всеки потребител, въпреки че този файл е текст, той не трябва да се редактира директно.
След това има две ситуации, директно генериращи файла crontab с командата:
 crontab -е
С което редакторът по подразбиране ще се отвори (обикновено vi) с файла, наречен празен crontab и където потребителят ще въведе таблицата със задачи и той ще бъде автоматично записан като / var / spool / cron / user.
Другият случай е, че потребителят редактира нормален текстов файл със записите на задачите и като пример го нарича „my_cron“, след което командата $> crontab my_cron ще отговаря за установяването му като потребителски cron файл в / var / spool / cron / user:
 vi my_cron # изтрива файлове от споделена папка 0 20 * * * rm -f / home / sergio / shared / * # изпълнява скрипт, който извършва архивиране на папката с документи на първия ден на всеки месец 0 22 1 * * / home / sergio / месечна поддръжка.sh # на всеки 5 часа от понеделник до петък, той се уверява, че разрешенията са правилни в моя дом 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / *: wq ( файл)> ls my_cron> crontab my_cron (зададено на / var / spool / cron / user)
Обобщавайки горното и обмисляйки други възможности за crontab:
 crontab file.cron (ще зададе file.cron като crontab на потребителя) crontab -e (ще отвори предварително зададения редактор, където файлът crontab може да бъде създаден или редактиран) crontab -l (изброява текущия crontab на потребителя, техните cron задачи) crontab -r (премахва текущия crontab на потребителя)
При някои дистрибуции при редактиране на обикновени потребителски crontabs е необходимо да рестартирате услугата, така че crontab файловете в / var / spool / cron да могат да се препрочитат.
 рестартиране на услугата crond 
За да разберете по -добре как да стартирате / спрете / рестартирате услуги, в тази статия ще намерите повече информация.

Контролиране на достъпа до cron


Cron ви позволява да контролирате кои потребители могат или не могат да използват услугите на cron. Това се постига по много прост начин чрез следните файлове:
  • /etc/cron.allow
  • /etc/cron.deny
За да попречите на потребителя да използва cron или по -скоро командата crontab, достатъчно е да добавите потребителското си име към файла /etc/cron.deny, за да разрешите използването му, тогава би било да добавите потребителското си име към /etc/cron.allow, ако по някаква причина искате да откажете използването на cron на всички потребители, тогава можете да напишете думата ALL в началото на cron.deny и това би било достатъчно.
 echo ALL >> / etc / cron.deny или да добавите друг потребител към cron.allow echo juan >> / etc / cron.allow
Ако не съществува нито файлът cron.allow, нито файлът cron.deny, на теория използването на cron е без ограничения за потребителя. Добавянето на потребителски имена в cron.allow, без да се създава файл cron.deny, ще има същия ефект като създаването му с думата ALL. Това означава, че след като cron.allow е създаден с един потребител, другите потребители, които искат да използват cron, винаги ще трябва да бъдат посочени в този файл.
ИзводиГоворихме за неговата работа, надявам се, че сте разбрали, някои дистрибуции като Red Hat включват вариант като anacron, който може да компенсира някои недостатъци на cron, дори и така, на всяко ниво от най -основното до най -напредналото, cron се използва , препоръчително е да разберете неговата работа. Ако намерите въпроси или имате предложение, не се колебайте да ги поставите в коментарите.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave