системд

Нект Генератион Црон Витх системд Стварање тајмера

Нект Генератион Црон Витх системд Стварање тајмера
Да ли треба да закажете неки задатак у будућности на рачунару? Ово може изгледати једноставно - на крају крајева, машина за прање посуђа може сачекати пре покретања помоћу дугмета - али понекад рачунари обављају тако једноставне задатке тако тешко.Али ако имате неке позадине, вероватно сте чули за то црон, овај део софтвера у потпуности посвећен покретању правог задатка у право време. Али овај алат је заиста дизајниран с лакоћом на уму и на крају ћете можда имати лоша изненађења.Ако сте икада успели да закажете задатак на оперативном систему Виндовс, користили сте Виндовс планер задатака. Подразумевано има ГУИ, али га такође не чини тако једноставним за употребу: ова два система само покрећу процес у одређено време и датум.

Да бих разумео колико вам системд може бити од помоћи тамо, узећу пример.

Какве замке ће вас системски тајмери ​​избећи?

Ако икада поседујете машину са подацима до којих вам је стало, пожелећете копију података на другом, вероватно сигурнијем месту. Ако управљате сервером, обавезно је: на крају крајева, како ћете се опоравити ако вам тврди диск не успије и спречити да опоравите све податке?

Дакле, као одговорна особа резервне копије постављате сваке недеље или сваког дана. Можете да га подесите помоћу црон-а, заказујете га у 04:24, али овде започиње проблем: шта ако је ваш сервер искључен из 04:10 до 04:30 из било ког разлога?

Па вероватно је да ће црон само прескочити ту резервну копију. Ово би могло бити критично ако се то дешава често и нечујно или ако се ваш код ослања на чињеницу да се покреће и можда не успе у супротном. Генерално се то дешава када подесите задатак чишћења путем црон-а и он се не покрене. Одједном ваш код можда нема довољно простора за наставак и покварит ће се - тужна је, тако тужна ситуација, зар не господине Елтон Јохн.

Међутим, ако пропуштено лансирање може представљати проблем, замислите једну секунду - вау, Јохн Леннон сада? - да је ваш задатак преспор. Ако је ваш задатак подешен да се извршава сваких 10 минута, али му треба 15 минута, црон или Виндовс ће са задовољством покренути још један задатак чак и ако тренутни задатак још увек није нестао - и тако ћете истовремено имати 2 инстанце задатка , који је савршен рецепт за катастрофа. Када се програм истодобно изводи, а није дизајниран за то, заиста ће вјероватно оштетити датотеке, друге програме, базе података - и ваш сервер одједном постаје брод који тоне попут Титаника.

ОК, можда идем предалеко са Титаницом, али схватате. Иако системд није могао много учинити да спаси овај брод, може вам помоћи у свим овим недостацима и осигурати вам дужи божићни одмор захваљујући грешкама које ће вас избећи. Време је да се упознате са подешавањем системских тајмера.

Како заказати аутоматско прављење резервних копија сервера?

Пре свега, системски тајмери ​​покрећу системску услугу, па ћете пре него што закажете задатак, прво морати да постане услуга. Срећом, написао сам водич за стварање системд услуге, на овај начин ће вас упознати са системским начином рада. Требао би га прочитати пре него што наставиш. Осим ако ти баш тако да знате шта радите, ваша системска датотека услуге би требала не садрже било коју поставку ВантедБи =. Ако желите да покренете своју услугу у одређено време, вероватно не желите да је покренете приликом покретања.

Захваљујући системском сервисном систему, немогуће је да се више инстанци вашег задатка изврши грешком: ако се задатак већ изводи, само ће прескочити то покретање и оставити да тренутно извршени задатак заврши свој посао.

Једном када системску услугу закажете, креирајте датотеку са истим именом датотеке као и ваша услуга, осим што би требало да се завршава са .тајмер уместо .услуга. У нашем примеру аутоматизоване резервне копије услуга би била аутоматизована сигурносна копија.услуга и тајмер би били аутоматски аутоматизовани.тајмер. Обе датотеке би требале бити у истом директоријуму. Као што сам вам рекао у чланку услуге системд, препоручујем вам да те датотеке напишете на уобичајеном месту, као што је ваш кућни директоријум, а затим их копирате у директоријум системд након што завршите са уређивањем.

Па, да вам покажем како изгледа наша датотека тајмера:

[Јединица]
Опис = Закажите сигурносне копије за време изван вршних сати
[Тајмер]
ОнЦалендар = * - * - * 03:00:00
РандомизедДелаиСец = 7200
Упорно = тачно
[Инсталирај]
ВантедБи = тајмери.мета

Слично као у системским услугама, постоје 3 одељка. [Унит] или [Инсталл] раде потпуно исто као што је објашњено у мом чланку о системским услугама. Имајте на уму да је ВантедБи = овдје важан јер се тајмери ​​могу покренути или зауставити, па ако не кажете системд-у да покрене тајмер током покретања, он се никада неће активирати. тајмери.таргет је посебан системски циљ за тајмере.

Сада, одељак [Тајмер]. У њему ћете пронаћи сва подешавања везана за то када би тајмер требао да се активира. За нашу аутоматизовану резервну копију рекао сам системд-у да је покреће између 3 и 5 ујутро у временској зони сервера. Тачно време је случајно сваког дана.

ОнЦалендар = поставља тајмер који се односи на време вашег сервера (зидни сат), на пример сваке недеље у 13:00. Ако сте раније користили црон, требали бисте бити заиста упознати са овом синтаксом. Међутим, то има неке додатне предности.

На пример, ако желите да се нешто дешава сваког сата, можете учинити следеће:

ОнЦалендар = сатно

и свакодневно:

ОнЦалендар = дневно

У ствари, подржава све следеће вредности:

  1. минутно
  2. По сату
  3. свакодневно
  4. месечно
  5. недељно
  6. годишње
  7. тромесечно
  8. полугодишње

Међутим, постоји проблем са овим кључним речима: на пример, свакодневни окидачи увек поноћ, што је често врхунац у рачунарским системима. Због тога се препоручује употреба РандомизедДелаиСец = (његова употреба је наведена у наставку). У сваком случају за резервне копије то није добра опција: поноћ није ван вршних сати, већ је обрнуто. Зато морамо тачније да поставимо када желимо да тај задатак буде покренут.

Ако желите већу контролу, можете да напишете датум попут 2018-12-06 12:49:37. Па ако сте толико прецизни, само ћете једном покренути тајмер. Да би се понављао, било који од ових елемената заменићете звездицом.

ОнЦалендар = * - * - * 03:00:00

Као што видите горе, у нашем резервном примеру сав датумски део је * - * - *, што значи да би се требао јављати сваког дана у месецу сваке године. Сада ако то учините:

ОнЦалендар = * - 12-25 03:00:00

Затим ради сваког 25. децембра у 3 ујутро. Савршен системски тајмер за Деда Мраза - чак и ако сумњам да ће му икад затребати! Дакле, звездица додаје понављање тамо где сте је ставили. Ако га ставите у поље година, то значи „сваке године“ итд.

Коначно, можете додати УТЦ на крају реда да бисте користили УТЦ време уместо локалне временске зоне. На пример, неке услуге ресетују своје АПИ квоте у поноћ, али да би избегле било какву пристрасност временске зоне која користи УТЦ. Дакле, за такве задатке бисте урадили:

ОнЦалендар = дневно УТЦ

Хајде сада да решимо још један проблем: шпице. системд такође има поставку за борбу против тога.

РандомизедДелаиСец = омогућава одлагање задатка случајним временским периодом. Вредност је максималан број секунди које ће тајмер одложити. То је посебно намењено за такве случајеве. Сјећате се да се у системд свакодневно увијек покреће у поноћ? Па, недељник се увек покреће у понедељак у поноћ, а годишњи у 1. јануара у поноћ, један од најгорих врхова у години са свуда прекидима мреже. Сигурно не желите да се то догоди.

Додавањем одлагања уклањате тај проблем: аутоматски ће одложити ваш задатак у непознато време. Случајност овде је важна јер је много већа вероватноћа да ће бити чак и када је случајна, а равномерно оптерећење омогућава бољу оптимизацију задатака.

Рецимо да требате извршавати задатке ујутро око 7 сати ујутро, али ако желите да омогућите мало кашњење од највише 15 минута, урадили бисте ово:

РандомизедДелаиСец = 900

То би требало бити довољно за кашњења. Понекад су чак и кашњења у милисекундама довољна да спрече нежељене скокове.

Перзистентно = брине о пропуштеним тајмерима. Шта ако је ваш сервер искључен током ноћи? Па, резервна копија се никада не би активирала. Ако га поставите на тачно, системски систем га може покренути при следећем покретању система у таквим случајевима. На овај начин знате на један или други начин, извршиће се задатак тајмера. Његова употреба је једноставна, ви само радите следеће:

Упорно = тачно

Ово, међутим, има један недостатак који је ионако заиста тешко избећи: када се пропусти више задатака из различитих тајмера, сви ће се покренути приликом покретања и успорити то покретање. По мом мишљењу то је много боље него ако се никад не покрене и након свега што је нормално, најприкладнији тренутак за покретање тајмера је када је заказан, а после ће вероватно бити неприкладан.

ОнБоотСец = је последња опција коју ћу вам показати (али не најмање важна). То је ако желите да покренете тајмер неко време након покретања, уместо на основу календара. На пример, ако требате приликом покретања да проверите да ли се сервер правилно покреће и ради ли како је предвиђено, можете да напишете услугу провере и користите то подешавање тајмера да бисте је покренули након што је систем имао довољно времена за покретање.

Рецимо да је систему потребно 3 минута за покретање, а ви бисте могли:

ОнБоотСец = 180

И упркос имену, такође можете:

ОнБоотСец = 3 минута

Ако прецизно одредите и ОнБоотСец = и ОнЦалендар =, услуга ће се покренути кад год се деси било који од ова два догађаја.

Добро, сада је време да сачувате датотеку, копирајте је у системску фасциклу ако сте се придржавали мојих горе наведених савета и тестирајте да ли тајмер ради исправно.

Омогућите нови тајмер и надзор

Да бисте тестирали свој нови тајмер, морате рећи системд-у да сте додали нови тајмер, па морате откуцати ову наредбу:

$ судо системцтл даемон-релоад

Сада ће системд узети у обзир ваш нови тајмер и пажљиво погледати када треба покренути ваш задатак. Како је системд увек покренут, то је ипак један од најбољих кандидата за управљање и извођење ваших заказаних задатака.

Ипак, једна ствар коју бисте могли сматрати контраинтуитивном: тајмер је подразумевано онемогућен. Да бисте је омогућили, потребно је да извршите ову наредбу:

$ судо системцтл енабле - нов аутоматед-бацкуп.тајмер

Тада ћете вероватно желети да видите да ли тајмер делује онако како се очекивало. Добре вести: системд је чак љубазан да вам команда каже када је последњи пут покренут и када је заказано следеће покретање (осим ако је тајмер подешен да се покреће само при покретању, јер системд очигледно не зна када ће се систем поново покренути). Ево те наредбе:

$ системцтл статус аутоматед-бацкуп.тајмер

Коначно, када вам више не треба тајмер, можете га и онемогућити:

$ судо системцтл дисабле --нов аутоматед-бацкуп.тајмер

Закључак

Користећи системске тајмере, ваше управљање планираним задацима прелази на следећи ниво: искрено, лично сматрам да би планирани задаци требали бити такви већ годинама.

Ох, једно мало изненађење за вас: сви системски тајмери ​​пријављени су у добро структурирани систем са филтрирањем, ротацијом дневника и слично. Стога вас позивам да видите како можете да видите дневнике о планираним задацима!

Како променити поставке миша и додирне табле помоћу Ксинпут-а у Линук-у
Већина Линук дистрибуција подразумевано испоручује библиотеку „либинпут“ за обраду улазних догађаја на систему. Може да обрађује улазне догађаје и на ...
Замените тастере миша другачије за различити софтвер помоћу Кс-Моусе Буттон Цонтрол
Можда вам је потребан алат који би могао да промени контролу миша са сваком апликацијом коју користите. Ако је то случај, можете испробати апликацију ...
Преглед бежичног миша Мицрософт Сцулпт Тоуцх
Недавно сам читао о Мицрософт Сцулпт Тоуцх бежични миш и одлучио да га купи. Након што сам га неко време користио, одлучио сам да са њим поделим своје...