Како да аутоматски покренете услуге при покретању система у РХЕЛ / ЦентОС 7?

Питате се како управљати услугама у позадини или при покретању?


Измењен је механизам за управљање и покретање процеса на покретању. До РХЕЛ / ЦентОС 6.к, направили бисте скрипту у /етц/инит.д/ и омогућили је уз помоћ цхкцонфиг, али ствари су другачије на РХЕЛ 7.

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

Шта је системски?

Пошто је сваки процес у Линуку прегледно видљив, хајде да видимо где вреба системд. На свом систему добијам следеће:

~ $ пс -еф | греп системд
роот 1 0 0 Нов11? 00:01:02 / либ / системд / системд – систем – десериализе 22
порука + 768 1 0 Нов11? 00:05:46 / уср / бин / дбус-даемон – систем – адреса = системд: –нофорк –нопидфиле – активација система – само сислог
роот 805 1 0 нов11? 00:10:22 / либ / системд / системд-логинд
анкусх 1132 1 0 Нов11? 00:00:00 / либ / системд / системд – користи
анкусх 1176 1132 0 Нов11? 00:04:50 / уср / бин / дбус-даемон – сесија – адреса = системд: –нофорк –нопидфиле – активација система – само сислог
анкусх 9772 20029 0 21:11 бодова / 6 00:00:00 греп –цолор = ауто системд
системд + 17298 1 0 нов19? 00:00:12 / либ / системд / системд
системд + 17303 1 0 нов19? 00:00:00 / либ / системд / системд-тимесинцд
роот 17307 1 0 нов19? 00:00:02 / либ / системд / системд-јоурналд
роот 18182 1 0 нов19? 00:00:00 / либ / системд / системд-удевд

Кладим се да сте то одмах приметили. први поступак у листи је покренут као кориснички роот и има пид 1.

Свакако, ово је био први поступак који је систем покренуо приликом покретања. Поздрав системд. ��

Дакле, врло једноставно, системд је „матични“ процес који покреће, управља и укида друге процесе у систему, осим што пружа информације о њиховој евиденцији, статусима датотека, итд..

Напомена о имену. Име је заиста систематски, а не систем Д или било шта друго. “Д” значи даемон, стандардни Линук процес који ради (вреба?) У позадини и није прикључен на ниједну терминалну сесију.

Зашто се РХЕЛ пребацио на системд?

Као што смо већ расправљали, системд је систем и менаџер процеса, а у РХЕЛ 7 замјењује добро познати програм Упстарт. Зашто је РХЕЛ (Орацле?) Донео ову одлуку? Па, постоје врло добри разлози за то, па погледајмо брзо.

Иницијализација паралелне услуге

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

Динамично (вруће) управљање услугама

Ако сте приметили да УСБ дискови морају бити изричито монтирани на ранијим Федора системима док би се они аутоматски отворили на Убунтуу и сличним дистрибуцијама, разлог је систематски. У стању је да открије промене уживо у хардверу и по потреби прекине / покрене услуге. Неки могу тврдити да је непотребно, али многима је све што смањује когнитивни терет добродошло.

Одложено покретање услуге

системд скраћује вријеме покретања јер може одложити покретање услуге до потребе када је то заправо потребно. Једноставан пример су услуге повезане са мрежним датотечним системима. Ако нема мрежног диска, нема смисла да се услуга покреће и ради.

Бржа комуникација процеса

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

Аутоматско поновно покретање

Ако неки сервис падне, системд то може открити и покушати поново покренути. Већину пута је једноставно поновно покретање све што је потребно да би апликација поново почела функционирати, осим ако нема фундаменталних проблема.

У сваком случају, системд овде олакшава живот сисадмин-у.

системд у РХЕЛ7 – Шта се мења за Сисадминс?

Ако имате нагонски осећај да системд неће бити сва звона и звиждуци, у праву сте. Постоји неколико значајних некомпатибилности које могу изненадити РХЕЛ сисадмин. Погледајмо брзо.

Ограничена подршка за вожњу

системд има прилично мутно препознавање и подршку за нивое вожње. Нису подржане све разине покретања, а за неке циљеве можда их и нема. У таквим случајевима, системд враћа „Н“ као одговор на наредбе рунлевел-а, што означава да нема одговарајући ниво вожње овом циљу. Све у свему, Ред Хат нас саветује да не користимо (!) Наредбе за трчање.

Нема прилагођених команди

Ово ће повредити. Велики плус са СисВ-ом била је могућност дефинисања прилагођених команди ради боље функционалности за управљање процесима. С системом не постоји таква опција и заглавили сте са стартом, стопом, статусом, рестартом итд.

Само за породицу и не-интерактивно

системд (наравно) прати процесе које је покренуо и чува њихове ПИД-ове. Изазов је, међутим, што се системд не може бавити процесима које није покренуо. Надаље, није могуће да корисник комуницира са процесом који је покренуо системд. Сав излаз иде у / дев / нулл, ефективно заустављајући све наде да бисте могли да снимите излаз.

Нема контекста

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

Ако вас овај списак ограничења опет заплаче, нисте сами. системд је поларизирајућа сила у Линук свијету, а Гооглинг о „системском сису“ открит ће обиље материјала за читање. ��

Како аутоматски покренути услугу када се заустави?

Ево прилично уобичајеног примене примене у имплементацијама. Морамо да демонизујемо програм на језику који нема дуготрајне процесе: ПХП! Претпоставимо да пишем ПХП скрипту за обраду долазних веза са веб мрежом (на крају смо изградили апликацију за ћаскање!), А скрипта се смешта на /хоме/анкусх/цхат_сервер/индек.пхп.

Будући да везе са веб соцкетом могу у било којем тренутку погодити сервер, овај процес мора бити у сваком тренутку и надгледати долазне везе. Овде не можемо имати традиционални ПХП животни циклус јер су ВебСоцкетс изванредне везе, а ако скрипта умре, веза је листа. Свеједно, довољно на веб соцкетсима; да видимо како ћемо ићи око демонизације ове скрипте путем система.

Све системске услуге бораве у / етц / системд / систем, па направимо датотеку да опишемо нашу скрипту сервера вебсоцкет. Под претпоставком да сте пријављени као роот корисник.

# ви /етц/системд/систем/цхат_сервер.сервице

а онда је потребно следеће.

[Јединица]
Опис = Услуга сервера ћаскања
Афтер = нетворк.таргет

[Услуга]
Тип = једноставан
Корисник = анкусх
ЕкецСтарт = пхп /хоме/анкусх/цхат_сервер/индек.пхп
Рестарт = прекидај

[Инсталирај]
ВантедБи = мулти -усер.таргет

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

# системцтл поновно учитавање демона

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

# системцтл покрени цхат_сервер

Ако не видите грешке, то је било то!

Погледајмо и шта значе различите директиве у датотеци:

  • Део [Унит] дефинише нову сервисну јединицу за системд. У системском језику, све услуге су познате као сервисне јединице.
  • Директива Афтер (предвидљиво) каже системд-у да покрене овај сервис тек након покретања мрежних сервиса (у супротном, ко ће радити на нижим нивоима соцкет веза ?!).
  • Тип = једноставан говори системд да се ова услуга не треба форкирати. Другим речима, само једна инстанца ће се покренути било када.
  • Корисник = анкусх значи да ће се ова услуга изводити као корисник „анкусх“. То бисмо могли променити у „корен“, али то је из безбедносне перспективе то крајње не препоручује.
  • Као што можете рећи, ЕкецСтарт је стварна наредба коју треба покренути.
  • Рестарт = он-аборт значи да би требало поново покренути услугу када прекине. У ПХП-у дуготрајни процеси пропуштају меморију и на крају експлодирају, па је ово потребно.
  • Директива ВантедБи = каже системд у који циљ (мислите на групе) овај сервис је део. То резултира тиме да се унутар тог циља стварају симболичке везе које упућују на услугу.

Уопштено, ово је довољно за покретање позадинских процеса користећи системд у РХЕЛ 7.

Још опција за поновно покретање логике

У горњем примјеру конфигурирао сам Рестарт = он-аборт, али то није једина опција. Има их више и бирате на основу захтева.

  • на неуспех – поново ће се покренути када нечисти излазни код или сигнал
  • увек – поново покрените када је пронађен доњи, чисти или нечисти сигнал
  • ненормално – нечисти сигнал, чувар или истек времена
  • на успеху – само када га је зауставио чисти сигнал или излазни код

Конфигурирање услуге за почетак при покретању

Једном када сте задовољни скрипту и осигурате да она ради, слиједеће је желите конфигурирати тако да се покрене приликом покретања и покрене.

Идите на / етц / системд / систем и извршите наредбу за омогућавање (не заборавите да промените .сервице назив датотеке са оним који имате)

# системцтл омогућују цхат_сервер.сервице

Видећете потврду да је створила везу.

Направљено је повезаност од /етц/системд/систем/мулти-усер.таргет.вантс/цхат_сервер.сервице до /етц/системд/систем/цхат_сервер.сервице.

Поново покрените сервер и требали бисте видети да се услуга покреће при покретању система.

То је лако! Зар не??

Помоћ! Много улажем у Упстарт. ��

Разумем да ми верујете, ваш случај је норма, а не изузетак. РХЕЛ користи Упстарт толико дуго да се прекидач готово осећа као издаја. Али хеј, системи се стално мењају и не би требало да се свађамо око ситница. Ред Хат препознаје да су многи људи заглавили старије верзије и створили су водич за миграцију на које би дефинитивно требало да се позивате.

Једна милост уштеде у свему томе је да је системд компатибилан са СисВ инит скриптама, тако да ћете већином требати да преместите датотеке и покренете исте услуге.

Заинтересовани сте да сазнате више о администрацији и решавању проблема са Линуком? Погледајте ово онлине курс.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map