Управљање услугама покретања и скриптама на Линуку

У овом чланку ћемо покрити основе управљања стартуп услугама и скриптама у Линук ЦентОС 7/8. Конкретно, анализираћемо основе рада са демоном системд, научите да додајете услуге за покретање и уклоните их одатле, а такође размотрите алтернативне опције за покретање скрипти или демона након покретања система.

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

Садржај:

  • Системд: контрола покретања услуге на Линуку
  • Аутоматско покретање скрипти и услуга помоћу рц.лоцал
  • Креирајте свој властити демон и додајте га у системд
  • Аутоматско покретање кроз црон
  • .басхрц: скрипте за аутоматско покретање при покретању терминала

Системд: контрола покретања услуге на Линуку

У већини популарних, модерних, популарних дистрибуција Линука (ЦентОС 7, РХЕЛ, Дебиан, Федора и Убунту) уместо даемон-а за покретање инит.д користи се системд. Системд - Линук систем и менаџер услуга, који се користи за покретање других демона и управљање њима током рада, користи јединице датотеке из / етц / системд / систем (инит.д коришћене скрипте из /етц/инит.д/ директорија). Системд вам омогућава паралелизацију покретања услуга током процеса покретања и на тај начин убрзавање покретања.

За контролу система користите наредбу системцтл.

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

системцтл списак јединица

Списак јединица датотеке може се добити командом:

системцтл списак-јединица-датотеке

Ова наредба ће приказати све доступне датотеке јединице (без обзира да ли су у њих учитане системд након учитавања ОС-а или не).

Да бисте листали активне сервисе и њихов статус, урадите:

# системцтл листа-јединице -т услуга

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

# системцтл листа-јединице - све

ОПИС НАСТАВЉАЊА АКТИВНОГ ОПИСА ПРЕДМЕТА проц-сис-фс-бинфмт_мисц.аутоматски учитано активно чекање ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ● еким.сервице није пронађен неактиван мртви ексим. сервис фиреваллд.сервице учитава активни покренути фиреваллд - динамички ватрозид даемон гетти@тти1.сервице учитава активно трчање Гетти на тти1 ● ип6таблес.сервице није пронађен неактиван мртав ип6таблес.сервице ● ипсет.сервице није пронађен неактиван мртви ипсет.сервице ● иптаблес. услуга није пронађена неактивна мртва иптаблес.сервице Повезивање / доле умрежавање ● НетворкМанагер-ваит-онлине.сервице није пронађен 

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

Помоћу ове наредбе можете додати друге заставе, на пример:

  • -држава - користи се за одређивање статуса Лоад, Ацтиве, Суб даемон
  • -тип - омогућава вам филтрирање јединица према врсти.

Примери:

системске јединице листе - све - државе = активне - ће навести само активне јединице

системцтл лист-јединице -типе = услуга - приказаће листу јединица које представљају услугу.

Додавање услуге системд-у

За управљање услугама у системд користи се посебна синтакса. Након сервера имена на крају требате да наведете .услуга. На пример:

системцтл енабле нгинк.сервице - наредба ће додати нгинк веб сервер да се аутоматски учита

Ова наредба ће створити симболичку везу до копије датотеке наведене у наредби сервиса у директоријуму покретања системд.

# системцтл омогући нгинк.сервице

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

Да бисте видели ову или ону услугу додану у аутоматско учитавање, можете проверити њен статус:

системцтл статус нгинк.сервице

Приликом излажења морате обратити пажњу на линију:

Оптерећен: учитан (/уср/либ/системд/систем/нгинк.сервице; омогућено; унапред подешена добављач: онемогућено)

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

Уклањање услуге из система

Услугу можете уклонити из покретања тако да се не покрене након покретања Линука (док сам сервис није избрисан са сервера). Да бисте уклонили услугу из покретања, покрените наредбу:

системцтл онеспособити Неед_сервице

На пример, да уклоните нгинк из покретања, урадите:

# системцтл онемогући нгинк.сервице

Уклоњена је симлинк /етц/системд/систем/мулти-усер.таргет.вантс/нгинк.сервице

Када се наредба изврши, веза са сервисном датотеком биће избрисана из директорија системд. Можете проверити да ли се јединица покреће:

ссхд је омогућен # системцтл

Системд: маскирање јединица

У мојој пракси постојали су "штетни" сервиси који су их, након што су их уклонили из покретања, и даље остали и покренули након поновног покретања ОС-а. Да бисте решили овај проблем, можете да маскирате услугу:

системцтл маска нгинк.сервице

Након тога се неће покренути ни ручно, нити након поновног покретања ОС-а:

# системцтл маска нгинк.сервице

Направљено симболично повезивање из /етц/системд/систем/нгинк.сервице у / дев / нулл.

# сервис нгинк рестарт

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

Маску можете уклонити командом:

# системцтл открити маску нгинк.сервице

Уклоњена је симлинк /етц/системд/систем/нгинк.сервице.

Ако након маскирања услуге провјерите датотеке јединица, видјет ћете да је услуга означена као маскирана (маскирано стање):

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

Аутоматско покретање скрипти и услуга помоћу рц.лоцал

Најчешће се користи за покретање различитих скрипти приликом дизања Линука. рц.лоцал.

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

За почетак, датотеку /етц/рц.лоцал мора бити извршљиво:

цхмод + к /етц/рц.лоцал

Рц.лоцал треба додати системском покретању:

системцтл омогућују рц-лоцал

И на примеру истог нгинк, можемо додати рц.лоцал команда за покретање веб сервера:

старт нгинк старт

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

На пример, створио сам скрипту /роот/тест.сх која изводи неке радње и желим да је покренем одмах након покретања система. Додајте линију у рц.лоцал датотеку:

сх /роот/тест.сх

Почевши од ЦентОС-а 7, програмери то истичу рц.лоцал застарјели демон и скрипте за аутоматско покретање или сервисе кроз њега, ово је прошлог века. Али док ради, користим га, јер је врло лако управљати.

Креирајте свој властити демон и додајте га у системд

Можете да створите свој властити демон, којим се може контролисати системд.

На пример, морамо да покренемо исту скрипту /роот/тест.сх након поновног покретања система. Започнимо креирањем датотеке за нашу будућу услугу:

додирните /етц/системд/систем/тест-сцрипт.сервице
цхмод 664 /етц/системд/систем/тест-сцрипт.сервице
нано /етц/системд/систем/тест-сцрипт.сервице

Садржај датотеке биће следећи:

[Јединица] Опис = Услуга подешавања предлошка Након = нетворк.таргет [Сервице] Упишите = онехот Усер = роот ЕкецСтарт = / роот / тест.сх [Инсталирај] ВантедБи = мулти -усер.таргет 

Кључни параметри:

Корисник - корисник под којим ће демон бити лансиран

Типе = онехот - процес ће бити завршен пре покретања нових јединица

Проверите и поново покрените:
# системцтл поновно учитавање демона
# системцтл покрените тест-сцрипт.сервице
# системцтл статус тест-сцрипт.сервице

● тест-сцрипт.сервице - Тест Лоадед: лоад (/етц/системд/систем/тест-сцрипт.сервице; онеспособљено; унапред подешено добављач: онемогућено) Ацтиве: ацтиве (руннинг) 

Ако вам је пријатно како сервис ради, додајте га у аутоматско учитавање:

# системцтл омогући тест-сцрипт.сервице

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

На тај начин можете додати било који свој скрипт за покретање кроз системд.

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

Ако требате да покренете скрипту или наредбу на одређеној фреквенцији, можете да је користите црон-охм:

цронтаб -е - отворите терминал да бисте написали посао црон-а

И додајте задатак који вам је потребан, на пример:

* * * * * /роот/тест.сх - покрените скрипту сваког минута.

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

Да бисте видели све задатке у крунама, морате покренути наредбу:

# цронтаб -л

* * * * * /роот/тест.сх

Важне вредности за време почетка црон послова су по редоследу:

  • Минут од 0 до 59
  • Сати 0 до 59
  • Дан у месецу од 1 до 31
  • Месец 1 до 12
  • Дан у недељи од 0 до 7 (0 или 7 је недеља)

У нашем задатку, скрипта се покреће сваког минута, тако да постоје „*“.

Скрипту која вам је потребна можете поставити и у именике црон:

  • /црон.даили - извршавање скрипта свакодневно
  • /црон.хоурли - извршавање скрипте по сату
  • /црон.монтхли - месечно извршење скрипте
  • /црон.веекли - недељно извршавање скрипти

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

.басхрц: скрипте за аутоматско покретање при покретању терминала

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

Додао сам у датотеку .басхрц Наредба за поновно покретање веб сервиса нгинк:

поновно покретање услуге нгинк

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

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

Или желите да када покренете терминал, одмах дођете до директорија који вам је потребан и покренете мц, адд .басхрц

ЦД / вар /
мц

Надам се да се овај чланак о управљању покретањем услуга и скрипти у ЛИнуку (чланак је написан за ЦентОС) показао корисним за вас. Сигурно онима који само науче основе администрације Линук система, ове информације ће бити корисне.