Անցնել պարունակությանը

Ծառայությունների կառավարումը systemd-ում

Այս հոդվածում

systemd-ն ժամանակակից Linux-ի մեծամասնության ստանդարտ init համակարգն ու ծառայությունների կառավարիչն է.

  • Ubuntu 16.04+ (ուժեղ խորհուրդ է տրվում Ubuntu 20.04/22.04/24.04)
  • Debian 8+ (Debian 11/12 – ընթացիկ LTS թողարկումներ)
  • RHEL/CentOS 7+ (RHEL 9 / AlmaLinux/Rocky Linux 9 – CentOS-ի ժամանակակից փոխարինողներ)
  • Fedora, openSUSE, Arch և այլն

Միջուկի (kernel) բեռնվելուց հետո այն վերահսկողությունը հանձնում է systemd-ին (PID 1), որը պատասխանատու է.

  • ծառայությունների միացնելու և անջատելու համար,
  • ֆայլային համակարգերի մոնտաժման համար,
  • ցանցի և միջավայրի կոնֆիգուրացիայի համար,
  • բաղադրիչների միջև կախվածությունների կառավարման համար։

systemd-ի հետ փոխազդելու հիմնական ինտերֆեյսը systemctl օգնականն է։

Հիմնական սինտաքսիս

systemctl [options] command [service]

Note

Շատ դեպքերում systemctl-ի օգտագործումը պահանջում է սուպերօգտատերերի լիազորություններ՝ օգտագործեք sudo։

Ծառայության կարգավիճակի դիտում

Խնդիր Կոմանդա
active միավորների ցանկ (ծառայություններ, սոկետներ, թայմերներ և այլն) systemctl list-units
Միայն running ծառայություններ systemctl list-units --type=service
Բոլոր ծառայություններ (ներառյալ կանգնած և անգործուն) systemctl list-units --type=service --all
running ծառայությունների ցանկ systemctl list-units --type=service --state=running
Որոշակի ծառայության որոնում (օրինակ՝ nginx) systemctl list-units '*nginx*'
Ծառայության մասին մանրամասն տեղեկատվություն systemctl status nginx (օրագրերով, PID-ով, կախվածություններով)

Note

Ավելացրեք --no-pager, որպեսզի ելքը չբաժանվի էջերի (օրինակ՝ systemctl status nginx --no-pager

Ծառայության աշխատանքի կառավարում

Մենք կօգտագործենք nginx-ն որպես օրինակ, սակայն կոմանդաները կիրառելի են ցանկացած ծառայության համար՝ sshd, postgresql, clamav-daemon, docker և այլն։

Գործողություն Կոմանդա Նշում
Կարգավիճակի ստուգում sudo systemctl status nginx Ցույց է տալիս, թե արդյոք այն աշխատում է, դրա PID-ն, վերջին օրագրերը և սխալները
Միացում sudo systemctl start nginx Միացնում է ծառայությունը մինչև հաջորդ վերագործարկումը
Անջատում sudo systemctl stop nginx
Վերագործարկում sudo systemctl restart nginx Լրիվ անջատում > միացում (եթե չի աշխատում, այն կմիանա)
Կոնֆիգուրացիայի վերաբեռնում առանց անջատման sudo systemctl reload nginx Աշխատում է, եթե ծառայությունը աջակցում է SIGHUP-ին (nginx, Apache, Postfix և այլն)
Վերաբեռնում կամ վերագործարկում sudo systemctl reload-or-restart nginx Վերադառնում է restart-ի, եթե reload-ը չի աջակցվում
Փորձել վերագործարկել (միայն եթե աշխատում է) sudo systemctl try-restart nginx Անվտանգ սկրիպտերի համար
Ստուգել, թե արդյոք ծառայությունը ակտիվ է systemctl is-active nginx Ելք՝ active / inactive / unknown
Ստուգել, թե արդյոք ծառայությունը ձախողվել է systemctl is-failed nginx Ելք՝ failed, եթե ծառայությունը դուրս է եկել սխալով

Note

start/restart-ից հետո ծառայությունը չի ավտոմատ միանա վերագործարկումից հետո՝ ավտոմատ միացումը պահանջում է առանձին կոնֆիգուրացիա։

Ավտոմատ միացման կառավարում

Գործողություն Կոմանդա Ի՞նչ է տեղի ունենում
Ակտիվացնել ավտոմատ միացումը sudo systemctl enable nginx Ստեղծում է սիմվոլիկ հղում /usr/lib/systemd/system/nginx.service-ից դեպի /etc/systemd/system/multi-user.target.wants/
Չեկտիվացնել ավտոմատ միացումը sudo systemctl disable nginx Հեռացնում է սիմվոլիկ հղումը, բայց չի անջատում աշխատող գործընթացը
Ստուգել ավտոմատ միացման կարգավիճակը systemctl is-enabled nginx Հնարավոր արժեքներ՝ enabled, disabled, static, masked
Վերականգնել կարգավորումները > վերականգնել sudo systemctl reenable nginx Մաքրում է նախկին փոփոխությունները և վերականգնում է ծառայությունը
Վերականգնել լռելյայն sudo systemctl preset nginx Վերականգնում է ցանկացած անհատական կարգավորումները դիստրիբյուտիվ լռելյայն կարգավորումներին (հազվադեպ է օգտագործվում)

Առաջադեմ հնարավորություններ

1. systemd կոնֆիգուրացիայի վերաբեռնման ստիպում

Եթե խմբագրել եք .service ֆայլը.

sudo systemctl daemon-reload
sudo systemctl restart nginx

2. Կախվածությունների դիտում

systemctl list-dependencies nginx

3. Ծառայության օրագիր (միջոցով journalctl)

journalctl -u nginx

4. Ծառայության մասկավորում (լիակատար անջատում, նույնիսկ ձեռքով)

sudo systemctl mask nginx
sudo systemctl unmask nginx

Օգտակար կոմանդաներ ամենօրյա օգտագործման համար

# Արագ ստուգել, թե արդյոք ծառայությունը ակտիվացված և աշխատում է
systemctl is-active --quiet nginx && echo "OK" || echo "STOPPED"


# Միացնել և ակտիվացնել ավտոմատ միացումը մեկ կոմանդայով
sudo systemctl start nginx && sudo systemctl enable nginx


# Չեկտիվացնել և անջատել ծառայությունը
sudo systemctl stop nginx && sudo systemctl disable nginx

Note

--now դրոշակը (հասանելի է systemd v220+, 2015 թվականից) կատարում է enable + start կամ disable + stop միաժամանակ։

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×