Ինչպե՞ս ինքնաբերաբար սկսել ծառայությունները BH- ով RHEL / CentOS 7-ում:

Մտածում եք, թե ինչպես կառավարել ծառայությունները հետին պլանում կամ բեռնաթափման մեջ?


Փոխվել է բեռնախցիկում բեռնաթափման գործընթացները կառավարելու և սկսելու մեխանիզմը: Մինչև RHEL / CentOS 6.x, դուք կստեղծեիք սցենար /etc/init.d/ ում և միացնեիք chkconfig- ի օգնությամբ, բայց ամեն ինչ այլ է 7 ՌՀԵԼ 7.

Այն փոխարինվում է համակարգված, և քանի որ այն քիչ թե շատ լռելյայն է Linux- ի հիմնական տարբերակների հիմնական պրոցեսների կառավարիչը, այլ համեմունքներով օժտված համակարգի ադմինիստրատորը կզգացվի հենց տանը: Այս հոդվածում մենք կքննարկենք, թե որն է համակարգված համակարգը, որն է անջատիչի պատճառները և ինչպես օգտագործել համակարգվածը դրա հետ ֆոնային գործընթացները կարգավորելու, գործարկելու և կառավարման համար.

Ինչ է համակարգված?

Քանի որ Linux- ի յուրաքանչյուր գործընթաց թափանցիկ տեսանելի է, տեսեք, թե որտեղ է թաքնված համակարգային համակարգը: Իմ համակարգում ես ստանում եմ հետևյալը.

$ ps -ef | grep systemd
արմատ 1 0 0 Nov11? 00:01:02 / lib / systemd / systemd –system –deserialize 22
հաղորդագրություն + 768 1 0 Nov11? 00:05:46 / usr / bin / dbus-daemon – system –address = systemd: –nofork –nopidfile –systemd-activation –syslog-only
արմատ 805 1 0 Nov11? 00:10:22 / lib / systemd / systemd-logind
ankush 1132 1 0 Nov11? 00:00:00 / lib / systemd / systemd –user
ankush 1176 1132 0 Nov11? 00:04:50 / usr / bin / dbus-daemon –session –address = systemd: –nofork –nopidfile –systemd-activation –syslog-only
ankush 9772 20029 0 21:11 հատ / 6 00:00:00 grep – colour = auto systemd
systemd + 17298 1 0 Nov19? 00:00:12 / լիբ / համակարգված / համակարգված-լուծված
systemd + 17303 1 0 Nov19? 00:00:00 / lib / systemd / systemd-timesyncd
արմատ 17307 1 0 Nov19? 00:00:02 / lib / systemd / systemd-journald
արմատ 18182 1 0 Nov19? 00:00:00 / lib / systemd / systemd-udevd

Ես գրազ եմ, որ դա անմիջապես նկատել եք: ցուցակագրման առաջին գործընթացը գործարկվել է որպես օգտագործողի արմատ և ունի պիդ 1.

Իհարկե, սա առաջին գործընթացն էր, որը համակարգը գործարկվեց բեռնաթափման միջոցով: Բարև ասա համակարգվածին: ��

Այսպիսով, միանգամայն պարզ, համակարգված է «մայր» գործընթացը, որը գործարկում է, ղեկավարում և դադարեցնում է համակարգի այլ գործընթացները, բացի այդ տեղեկատվություն է տրամադրում դրանց մուտքագրման, ֆայլերի համակարգի կարգավիճակի մասին և այլն:.

Անունի վերաբերյալ գրություն. Անունը իսկապես համակարգված է, և ոչ թե System D կամ որևէ այլ բան: «D» – ը հանդես է գալիս որպես Daemon, Linux- ի ստանդարտ գործընթաց, որն աշխատում է (թաքնված է) ֆոնին և չի կցվում տերմինալի որևէ նստաշրջանին.

Ինչու է RHEL- ը անցել համակարգային?

Ինչպես արդեն քննարկեցինք, systemd- ը համակարգի և գործընթացների կառավարիչ է, իսկ RHEL 7-ում փոխարինում է հայտնի Upstart ծրագիրը: Ինչո՞ւ ՌՀԵԼ-ը (Oracle?) Որոշեց այդ որոշումը: Դե, դրա համար կան շատ լավ պատճառներ, այնպես որ եկեք դիտենք արագ.

Զուգահեռ ծառայության նախաստորագրում

Սիրված չէ SysV նախաձեռնության ծրագիրը, systemd- ը ի վիճակի է զուգահեռաբար գործարկել ծառայություններ: Ի տարբերություն նախաձեռնության, դրանք հակառակը, մեկնարկում են դրանք մեկ առ մեկ: Այն դարաշրջանում, երբ նույնիսկ բջջային սարքերը ունեն բազմաբնույթ պրոցեսորներ, զուգահեռ նախնական նախաձեռնելու բացակայությունը մեծ շրջադարձ է.

Դինամիկ (տաք) ծառայության կառավարում

Եթե ​​նկատել եք, որ USB կրիչները պետք է հստակ տեղադրվեն ավելի վաղ Fedora համակարգերում, մինչդեռ դրանք ինքնաբերաբար կբացվեն Ubuntu- ի և նմանատիպ բաշխումների վրա, պատճառը համակարգված է: Այն ի վիճակի է հայտնաբերել ապարատի կենդանի փոփոխությունները և անհրաժեշտության դեպքում դադարեցնել / գործարկել ծառայությունները: Ոմանք կարող են պնդել, որ դա անտեղի է, բայց շատերի համար ամեն ինչ, ինչը նվազեցնում է ճանաչողական բեռը, առավել ողջունելի է.

Հետաձգված ծառայության գործարկում

systemd- ը կարճացնում է boot անգամ, քանի որ այն ի վիճակի է հետաձգել ծառայության մեկնարկը, երբ դա իրականում անհրաժեշտ է: Պարզ օրինակը ցանցային ֆայլերի համակարգի հետ կապված ծառայություններն են: Եթե ​​ցանցային սկավառակ հասանելի չէ, իմաստ չունի ծառայություն կատարելը և գործարկելը.

Ավելի արագ գործընթացի հաղորդակցություն

Համակարգված համակարգի զուգահեռ հնարավորությունները փոխանցվում են միջ-գործընթացային հաղորդակցությանը: systemd- ն ի վիճակի է զուգահեռ մուտք գործել վարդակներ և համակարգային ավտոբուսներ ՝ զգալիորեն նվազեցնելով հաղորդակցության ռեսուրսների սպասման ժամանակը.

Ավտոմատ վերագործարկում

Եթե ​​ծառայությունը խափանում է, համակարգիչը կարող է դա հայտնաբերել և փորձել վերագործարկել այն: Ժամանակ առ ժամանակ, պարզ վերագործարկումը այն ամենն է, ինչ անհրաժեշտ է, որպեսզի դիմումը նորից սկսի գործել, եթե չլինեն ավելի հիմնարար խնդիրներ.

Համենայն դեպս, systemd- ն այստեղ հեշտացնում է sysadmin- ի կյանքը.

systemd in RHEL7 – Ի՞նչ փոխվում է Sysadmins– ի համար?

Եթե ​​ունեք մի զզվելի զգացողություն, որ համակարգվածը չի պատրաստվում լինել բոլոր զանգերն ու սուլիչները, ճիշտ եք: Կան մի քանի նշանակալի անհամատեղելիություններ, որոնք անակնկալ կերպով կարող են բռնել RHEL sysadmin- ին: Եկեք միանգամից նայենք.

Սահմանափակ մակարդակի աջակցություն

systemd- ն ունի բավականին կոպիտ ճանաչում և աջակցություն ռազմանավերի համար: Բոլոր թռիչքուղիները չեն ապահովվում, և որոշ թիրախների համար նույնիսկ կարող է լինել ոչ մեկը: Նման դեպքերում համակարգված «N» – ը վերադառնում է որպես պատասխան մակարդակի հրամանների ՝ նշելով, որ այդ նպատակակետին համապատասխան մակարդակ չունի: Ընդհանուր առմամբ, Red Hat- ը մեզ խորհուրդ է տալիս չօգտագործել (!) Runlevel հրամաններ.

Ոչ մի սովորական հրամաններ

Սա վնասելու է: SysV- ի հետ մեկ մեծ առավելություն `մաքսային հրամաններ սահմանելու ունակությունն էր` գործընթացների կառավարման ավելի լավ գործառույթ ապահովելու համար: Համակարգված համակարգի հետ նման տարբերակ չկա, և դուք խրված եք գործարկման, դադարեցման, կարգավիճակի, վերագործարկման և այլն.

Ընտանեկան միայն և ոչ ինտերակտիվ

systemd- ը (իհարկե) պահպանում է իր մեկնարկած գործընթացները և պահպանում է դրանց PID- ները: Այնուամենայնիվ, մարտահրավերն այն է, որ համակարգված համակարգը չի կարող զբաղվել իր կողմից չսկսված գործընթացներով: Բացի այդ, օգտագործողը հնարավոր չէ փոխգործակցել systemd- ի կողմից սկսված գործընթացի հետ: Ամբողջ ելքը անցնում է / dev / null ՝ արդյունավետորեն դադարեցնելով այն հույսերը, որոնք դուք կարող եք ունենալ արդյունքի գրավման համար.

Ոչ մի ենթատեքստ

Ի տարբերություն նախաձեռնության ծառայությունների, համակարգի կողմից գործարկվողները չեն ժառանգում համակարգի որևէ օգտագործողներից որևէ միջավայր: Այլ կերպ ասած, PATH- ի և համակարգի այլ փոփոխականների նման տեղեկատվությունը մատչելի չէ, և յուրաքանչյուր նոր գործընթաց սկսվում է դատարկ համատեքստում.

Եթե ​​այս սահմանափակման ցուցակը ձեզ ստիպում է լաց լինել, կրկին, դուք մենակ չեք: systemd- ը եղել է բևեռացնող ուժ ՝ Linux- ի աշխարհում, և «համակարգված ծծակների» Googling- ը կբացահայտի շատ ընթերցանության նյութեր: ��

Ինչպես սկսել ծառայությունը ինքնաբերաբար, երբ ներքև է?

Տեղակայքում բավականին տարածված օգտագործման դեպք է: Մենք պետք է որակի հեգնանք ծրագիրը մի լեզվով, որը չունի երկարատև գործընթացներ. PHP! Ենթադրենք, որ ես գրում եմ PHP սցենար `մուտքային վեբկապի կապերը կարգավորելու համար (ի վերջո մենք կառուցեցինք զրուցելու ծրագիր), և սցենարը տեղադրված է /home/ankush/chat_server/index.php.

Քանի որ վեբկապի միացումները կարող են ցանկացած պահի հարվածել սերվերին, այս գործընթացը պետք է միշտ անընդհատ լինի և վերահսկի մուտքային կապերը: Մենք չենք կարող ունենալ այստեղ PHP- ի ավանդական ցիկլը, քանի որ WebSockets- ը պետական ​​կապեր է, և եթե սցենարը մեռնի, կապը ցուցակ է: Համենայն դեպս, բավական է ցանցային ցանցերում; եկեք տեսնենք, թե ինչպես ենք մենք կփորձենք համակարգված միջոցով սցենարիզը սանձազերծելու մասին.

Բոլոր համակարգված ծառայությունները բնակվում են / etc / systemd / system- ում, ուստի եկեք ֆայլ ստեղծենք այնտեղ ՝ մեր վեբկապի սերվերի սցենարը նկարագրելու համար: Ենթադրելով, որ դուք մուտք եք գործել որպես root օգտագործող.

# vi /etc/systemd/system/chat_server.service

և ապա անհրաժեշտ է հետևյալը.

[Միավոր]
Նկարագրություն = Զրուցարան սերվերի ծառայություն
Հետո = network.target

[Ծառայություն]
Տեսակը = պարզ
Օգտագործող = կոճ
ExecStart = php /home/ankush/chat_server/index.php
Վերագործարկել = դադարեցնել

[Տեղադրել]
WantedBy = multi-user.target

Պահպանեք ֆայլը, և հաջորդ քայլը համակարգչային սատանան վերբեռնեք

# systemctl daemon- վերաբեռնումը

և հենց նոր ստեղծած ծառայությունը սկսելու համար.

# systemctl start chat_server

Եթե ​​սխալներ չես տեսնում, դա այն էր!

Եկեք նաև արագ նայենք, թե ինչ են նշանակում ֆայլի տարբեր հրահանգներ.

  • [Միավորի] մասը սահմանում է համակարգի սպասարկման նոր միավոր: Համակարգված խորհրդարանում բոլոր ծառայությունները հայտնի են որպես սպասարկման ստորաբաժանումներ.
  • Հետո հրահանգը (կանխատեսելիորեն) ասում է, որ համակարգիչը սկսի այս ծառայությունը սկսել միայն ցանցային ծառայությունների գործարկումից հետո (այլապես, ով է կատարելու վարդակից միացումների ավելի ցածր մակարդակի բեռնաթափումը:):.
  • Type = պարզ համակարգը համակարգին ասում է, որ այս ծառայությունը չի նախատեսվում ինքնուրույն պատառաքաղել: Այլ կերպ ասած, ցանկացած պահի կաշխատի միայն մեկ դեպք.
  • Օգտագործող = ankush նշանակում է, որ այս ծառայությունը գործելու է որպես օգտվող «ankush»: Մենք դա կարող ենք փոխել «արմատական», բայց դա շատ անհասկանալի է անվտանգության տեսանկյունից.
  • ExecStart- ը, ինչպես կարող եք ասել, գործարկման իրական հրամանն է.
  • Վերագործարկումը = գործի ընդհատումը նշանակում է, որ ծառայությունը պետք է վերագործարկվի, երբ դադարեցվի: PHP- ում երկարատև գործընթացները արտահոսում են հիշողությունը և, ի վերջո, պայթում, ուստի դա անհրաժեշտ է.
  • The WantedBy = դիրեկտիվը պատմում է համակարգին, թե որ թիրախն է (մտածեք խմբերի), որոնց ծառայությունը մաս է կազմում: Սա հանգեցնում է նրան, որ այդ թիրախի ներսում ստեղծվում են խորհրդանշական հղումներ ՝ մատնանշելով ծառայությանը.

Ընդհանրապես, այս ամենը բավարար է RHEL 7-ում համակարգված համակարգով օգտագործվող ֆոնային պրոցեսները վարելու համար.

Վերագործարկման տրամաբանության ավելի շատ տարբերակ

Վերոնշյալ օրինակում ես կազմաձևել եմ «Վերագործարկումը» = դադարեցումը, բայց դա միակ տարբերակը չէ: Կան ավելին և ընտրեք `ելնելով պահանջից.

  • անխափան – վերագործարկվելու է այն ժամանակ, երբ անմաքուր ելքի ծածկագիրը կամ ազդանշանը
  • միշտ – վերագործարկել, երբ հայտնաբերվել է մաքուր կամ անմաքուր ազդանշան
  • աննորմալ – անմաքուր ազդանշան, դիտակետ կամ ժամանակի դադարեցում
  • հաջողություն – միայն այն ժամանակ, երբ այն դադարեցվել է մաքուր ազդանշանի կամ ելքի կոդով

Կազմաձևման ծառայությունը գործարկելու համար

Հենց որ դուք գոհ լինեք սցենարից և ապահովեք, որ այն աշխատում է, հաջորդը կցանկանաք կազմաձևել, որ այն սկսի կոճակը և սկսեք.

Գնացեք / etc / systemd / system և կատարեք ստորև միացնել հրամանը (մի մոռացեք փոխել. Սպասարկման ֆայլի անունը ձեր ունեցածի հետ)

# systemctl միացնել chat_server.service

Դուք կտեսնեք հաստատում այն ​​մասին, որ այն ստեղծեց սինգլ.

Ստեղծվել է սինգլ -ից /etc/systemd/system/multi-user.target.wants/chat_server.service- ից /etc/systemd/system/chat_server.service.

Վերագործարկեք ձեր սերվերը, և դուք պետք է տեսնեք, որ ծառայությունը սկսվում է բեռնախցիկում.

Դա հեշտ էր: Այդպես չէ?

Օգնություն! Ես զանգվածաբար ներդրումներ եմ կատարել Upstart- ում: ��

Ես հասկանում եմ, որ դու ինձ վստահում ես, քո գործը նորմա է, քան բացառություն: RHEL- ը այնքան ժամանակ օգտագործում էր Upstart- ը, որ անջատիչը համարյա դավաճանություն զգա: Բայց հե ,յ, համակարգերը շարունակում են փոխվել, և մենք չպետք է ծեծկռտուք մանրուքների վրա: Red Hat- ը ընդունում է, որ շատ մարդիկ խրված են հին տարբերակներով և ստեղծել են ա գաղթի ուղեցույց որ դուք անպայման պետք է անդրադառնաք.

Այս ամենի փրկիչ շնորհքն այն է, որ համակարգված համակարգը համատեղելի է SysV նախաձեռնության գրերի հետ, այնպես որ, մեծ մասամբ, պարզապես անհրաժեշտ կլինի տեղափոխել ձեր ֆայլերը և նույն ծառայությունները գործարկել.

Հետաքրքրու՞մ եք ավելին իմանալ Linux- ի կառավարման և խնդիրների լուծման վերաբերյալ: Ստուգեք սա առցանց դասընթաց.

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