системд

датотека системд јединице која креира услугу

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

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

Где су Системд Сервицес

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

Тачна локација зависи од тога зашто и како је услуга инсталирана. Ако услугу инсталира менаџер пакета, она ће углавном бити у / уср / либ / системд / систем. За софтвер који развијете или онај који сам по себи не подржава системд, датотеку услуге ставите у / уср / лоцал / либ / системд / систем. Имајте на уму да неке дистрибуције не подржавају ову фасциклу у / уср / лоцал. Коначно, ако желите да конфигуришете постојећу системд услугу, / етц / системд / систем је прави пут.

Унутар ових директоријума можете пронаћи вишеструке наставке датотека као што је *.соцкет, *.мета или *.услуга. Очигледно ћемо се фокусирати на последње. системд користи име датотеке као име услуге приликом покретања или заустављања итд. Дакле, имена датотека у услузи обично садрже само алфанумеричке знакове заједно са цртицама и доњим цртама. Током развоја препоручујем да га направите у својим документима, а затим по завршетку копирате на системску локацију, што би избегло проблеме ако сачувате усред уређивања.

У реду, зато вас молимо да направите датотеку услуге у својим документима. Сада смо спремни да прегледамо како да напишемо ову датотеку.
[Напомена: Погледајте извештај о потенцијалној грешци у одељку за коментаре овог поста на блогу]

[Јединица]
Опис = ХТТП сервер Пенгуинс Веб Апплицатион (покренут на порту 8080)
ВантедБи = вишекориснички.мета
 
[Услуга]
Тип = једноставно
ЕкецСтарт = / уср / бин / питхон3 / уср / лоцал / бин / пенгуин-веб-апп / маин.пи
Рестарт = увек

Формат датотеке је заправо близак ини. Знам да је можда чудно јер се ини датотеке често налазе у оперативном систему Виндовс, али тако то функционише. Датотека услуге прво је подељена у 2 одељка: [Јединица] и [Услуга]. Сваки одељак конфигурише одређени аспект системд: [Унит] садржи елементе које деле све датотеке системд јединице док је [Сервице] само за конфигурацију специфичну за подешавање нове услуге.

Тада је одељак конфигурисан са својствима као што су Опис = или ЕкецСтарт =. Вредност је од имена својства одвојена знаком једнакости = без размака.

Вратимо се на датотеку приказану горе. Описује услугу дизајнирану за покретање веб апликације написане на Питхону о пингвинима. системд ће га поново покренути кад год процес изађе и покреће сервер приликом покретања сервера ако га омогућите наредбом системцтл енабле. Цоол ех?

Али ви сте можда ваша следећа веб апликација која није о пингвинима - и то је срамота - а није написано на Питхону. У овом случају ћете желети да сазнате више о могућим конфигурацијама.

Својства Системд услуга

Прво се фокусирајмо на својства у [Јединици]:

Опис = је само давање јасног описа онога што услуга ради. Приказује се на списку услуга, у дневницима услуга, тако да желите да буде описан, али треба да остане у једном реду и једној реченици.

ВантедБи = дозвољава да каже системд-у: када се ова ствар покрене, покреће и мене. Генерално ћете ставити име мете. Примери уобичајених циљева:

  1. вишекориснички.Циљ: када је сервер у реду и спреман је за покретање апликација командне линије
  2. графички.циљ: када су ГНОМЕ или КДЕ спремни
  3. умрежавање.циљ: када је сервер правилно повезан на мрежу

У реду за почетак су ова својства [Унит] довољна. Погледајмо сада [Сервице].

Типе = помаже системд-у да зна да ли је услуга покренута. Ево типичних типова:

  1. Једноставно се вероватно најчешће користи: системд сматра процес који покрећете као онај који врши услугу. Ако се процес заустави, сматра да је и услуга заустављена итд.
  2. форкинг је пожељнији за апликације које су написане као сервер, али без помоћи система за управљање услугама. У основи очекује да се покренути процес рачва и та вилица се сматра завршним поступком услуге. Да бисте били тачнији, можете такође да помогнете систематизовању са ПИД датотеком, где ПИД процеса који треба пратити записује покренута апликација.

ЕкецСтарт = је вероватно најважнији за услугу: прецизира коју апликацију треба покренути приликом покретања услуге. Као што видите у услузи Пенгуин, одмах сам користио / уср / бин / питхон3, а не питхон3. То је зато што системска документација изричито препоручује употребу апсолутних путања како би се избегла изненађења.

Али то је и из другог разлога. Систем управљања осталим услугама обично се заснива на Схелл скриптама. Међутим, системд из разлога перформанси подразумевано не покреће љуску. Дакле, не можете директно обезбедити команду љуске у ЕкецСтарт =. Међутим, и даље можете користити скрипту љуске чинећи:

ЕкецСтарт = / уср / бин / басх / уср / лоцал / бин / лаунцх-пингвин-сервер.сх

Није тако тешко у праву? Имајте на уму да ако требате покренути неки процес како бисте сигнализирали да се ваша услуга чисто зауставља, ЕкецСтоп = постоји, као и ЕкецРелоад = за поновно учитавање услуга.

Рестарт = омогућава вам да експлицитно кажете када услугу треба поново покренути. Ово је једна од важних карактеристика системд-а: обезбеђује да ваша услуга остаје онолико дуго колико желите, зато обратите пажњу на ову опцију.

Рестарт = Значење
увек системд ће наставити да га поново покреће кад год се заврши или се сруши. Па, док не зауставите системцтл не зауставите име-услуге.услуга.

Савршен је за сервере и мрежне услуге јер више волите мало бескорисних поновних покретања него ручно поновно покретање услуге без икаквог разлога.

на-ненормалан Када се процес услуге сруши, поново покрените услугу. Међутим, ако апликација излази чисто, немојте је поново покретати.

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

на-неуспех Слично као он-абнормално, али такође поново покреће услугу када апликација изађе чисто, али са излазним кодом који није нула. Излазни код који није нула обично значи да се догодила грешка.
не системд неће аутоматски поново покренути услугу.

Генерално корисно за приступ другим системским функцијама, као што је евидентирање без функције поновног покретања.

ВоркингДирецтори = може применити радни директоријум приликом покретања ваше апликације. Вредност мора бити апсолутна путања директоријума. Радни директоријум се користи када користите релативне путање у коду апликације. За нашу службу пингвина то може бити:

ВоркингДирецтори = / срв / пенгуин-веб-апп /

Тада је безбедност важна, па генерално желите да не покрећете своју услугу са роот привилегијама. Усер = и Гроуп = вам омогућава да подесите име корисника или групе или УИД / ГИД под којим ће се ваша апликација покретати. На пример:

Корисник = пингвин-веб
Група = пингвин-мрежа

ЕнвиронментФиле = је моћна опција. Апликацијама које раде као услуге често је потребна конфигурација, а датотеке окружења омогућавају подешавање те конфигурације на два начина:

  1. Апликација може директно читати променљиву окружења.
  2. Али такође можете својој апликацији поставити различите аргументе командне линије без промене сервисне датотеке.

Синтакса ове датотеке је једноставна: укуцате име променљиве окружења, знак једнакости =, а затим његову вредност. Затим ставите апсолутни пут датотеке ваше околине у својство ЕнвиронментФиле.

Пример:

ЕнвиронментФиле = / етц / пенгуин-веб-апп / енвиронмент

А датотека / етц / пенгуин-веб-апп / енвиронмент садржи:

ЛИСТЕН_ПОРТ = 8080

Тада ће наша апликација за пингвине имати приступ променљивој окружења ЛИСТЕН_ПОРТ и преслушати очекивани порт.

Сачувајте и покрените новостворену услугу Системд

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

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

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

У реду, сада је системд свестан ваше нове услуге, под претпоставком да датотека не садржи синтаксну грешку. На крају, то је ваша прва датотека, па ћете вероватно погрешити. Морате да покренете ову наредбу изнад при сваком ажурирању у датотеци услуге.

Сада је време да започнете услугу:

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

Ако не успе са грешком јединице није пронађена, попут ове:

$ судо системцтл покрени пингвин-веб-апликацију.услуга
Покретање апликације пингвин-веб није успело.услуга: Јединица није пронађена.

То значи да ваша дистрибуција не подржава директоријум или да нисте правилно именовали датотеку услуге. Обавезно погледајте.

Ако своју услугу подесите помоћу ВантедБи = и желите да се ваша услуга аутоматски покреће, морате је омогућити овом командом:

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

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

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

Закључак

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

Преглед бежичног миша Мицрософт Сцулпт Тоуцх
Недавно сам читао о Мицрософт Сцулпт Тоуцх бежични миш и одлучио да га купи. Након што сам га неко време користио, одлучио сам да са њим поделим своје...
Екран Трацкпад и показивач миша АппиМоусе за Виндовс таблете
Корисницима таблета често недостаје показивач миша, посебно када су уобичајени за коришћење преносних рачунара. Паметни телефони и таблети на додир ос...
Средњи тастер миша не ради у оперативном систему Виндовс 10
Тхе средње дугме миша помаже вам да се крећете кроз дугачке веб странице и екране са пуно података. Ако се то заустави, на крају ћете користити тастат...