Ծառայությունների կառավարումը 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 օգնականն է։
Հիմնական սինտաքսիս¶
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 ֆայլը.
2. Կախվածությունների դիտում¶
3. Ծառայության օրագիր (միջոցով journalctl)¶
4. Ծառայության մասկավորում (լիակատար անջատում, նույնիսկ ձեռքով)¶
Օգտակար կոմանդաներ ամենօրյա օգտագործման համար¶
# Արագ ստուգել, թե արդյոք ծառայությունը ակտիվացված և աշխատում է
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 միաժամանակ։