Upravljanje uslugama operacijskog sustava
Hint
Za dodatne primjere naredbi proučite stranicu systemd na ArchWikiju i Chapter 10. Managing Services with systemd u Red Hat Enterprise Linux 7 System Administrator's Guide.
- moderni operacijski sustavi bazirani na jezgri Linux koriste systemd za upravljane procesima, specifično pokretanje usluga kod podizanje sustava
- relativno novi alat, razvoj započeo Lennart Poettering 2010. godine tekstom Rethinking PID 1
- koristi značajke specifične za Linux jezgru kao što su kontrolne grupe (engl. control groups, cgroups), signalfd, epoll i druge
- radi puno više od običnog sustava za baratanje uslugama: praćenje događaja i stvaranje zapisnika, konfiguracija lokalnih i regionalnih postavki, konfiguracija datuma i vremena, konfiguracija mreže, konfiguracija DNS-a, praćenje zauzueća memorije i drugo
- prema autoru, cilj je spriječiti fragmentaciju (koju autor politički nekorektno naziva "balkanizacijom") Linuxa sučelja, unificirati način rada između različitih distribucija i precizno definirati što Linux jest
- predmet brojnih debata, kritika i inženjerskih šala
- najpopularniji prethodno korišteni sustav te vrste
sysvinit
izlazi iz prakse i vrijedan je samo spomena; postoji šalabahter za prebacivanje između ta dva sustava
Systemd ekosustav
Skup programa koji se naziva systemd zapravo sadrži veći broj međusobno povezanih i donekle neovisnih alata, od kojih su najznačajniji:
systemd
init proces, to je prvi proces koji pokreće jezgra Linux nakon učitavanja i on je zadužen za pokretanje i upravljanje životnim vijekom drugih procesa- systemd usluga, koje su datoteke za definiranje zahtjeva, redoslijeda i instrukcija za pokretanje ostalih procesa potrebnih za rad sustava
- alata
systemctl
, za pregled i upravljanje stanjima definiranih usluga - alata
journalctl
, za pregled sustavskih događaja i događaja vezanih za pojedinu uslugu
Zadatak
Proučite na systemdovim stranicama na freedesktop.org-u dio Spelling koji govori o imenovanju alata, a zatim pokušajte objasniti zašto se osnovni alat za upravljanje systemd
-om naziva systemctl
.
Pokretanje sustava
Pokretanje sustava razlikuje se u situaciji kada se koristi SysVinit od situacije kada se koristi Systemd.
Pokretanje sustava korištenjem SysVinita
- init (naredba
init
) pokreće usluge na operacijskom sustavu- BSD-style vs. SysV-style
- razina pokretanja (engl. runlevel) opisuje stanje računala
- sastoji se od usluga (engl. services)
- razine 0, 1, 2, 3, 4, 5, 6, S/s
- naredba
telinit
postavlja razinu pokretanja na zadanu
- rezervirane razine
- 0 -> isključivanje računala (engl. halt)
- 1 -> jednokorisnički način rada (engl. single-user mode) u kojem se može prijaviti samo
root
korisnik - 6 -> ponovno pokretanje računala (engl. reboot)
- najčešće se koriste razine pokretanja 3 i 5, razina pokretanja 4 se ne koristi
Kada se za init koristi SysVinit vrijedi:
- razina je definirana
:initdefault:
u/etc/inittab
- usluge su u
/etc/init.d/
- ostale naredbe su u
/etc/rc.local
- poveznice na usluge po razinama pokretanja su u
/etc/rc[0123456].d/
Zadatak
- Pokreće li se usluga
apache2
u razinama pokretanja 1, 2 i 3? - Pokreće li se usluga
postgresql
prije ili nakon procesaexim4
u razinama pokretanja 3 i 5?
Systemd jedinka cilja pokretanja
Systemd jedinka (engl. unit) je konfiguracijska datoteka koja se koristi za implementaciju usluga i ciljeva pokretanja:
- usluge koje pokreću procese demone definirane su
*.service
datotekama, - ciljevi pokretanja definirani su
*.target
datotekama.
Alat systemd
podiže sustav u predefinirani cilj koji se sastoji od određenih pokrenutih usluga. Predefinirani ciljevi pokretanja su:
poweroff.target
(pandan SysVrunlevel0'
)reboot.target
(pandan SysVrunlevel6
)multi-user.target
(pandan SysVrunlevel[234]
)graphical.target
(pandan SysVrunlevel5
)rescure.target
(pandan SysVrunlevel1
)emergency.target
U općem slučaju systemd
podiže sustav u stanje default.target
koji tipično pokazuje na graphical.target
. Sustav će se pokrenuti do grafičkog sučelja i omogućiti prijavu preko istog samo ako je na njemu prisutan neki od upravitelja prikaza kao što su Simple Desktop Display Manager (SDDM) i GNOME Display Manager (GDM).
Maredbom systemctl isolate TARGET
moguće je prebaciti sustav u željeni cilj pokretanja.
Zadatak
Provjerite koji je cilj pokretanja trenutno aktivan na sustavu. Prebacite se u cilj pokretanja multi-user.target
, a zatim usporedite popis procesa. Prebacite se u cilj pokretanja reboot.target
da provjerite radi li ono što očekujete.
- sve konfiguracijske datoteke i datoteke koje opisuju usluge se nalaze u direktorijima
/lib/systemd
i/etc/systemd
- systemd prvo traži datoteku u
/lib/systemd
, a onda u/etc/systemd
, što omogućuje nadjačavanje sustavske verzije datoteke u/lib/systemd
s vlastitom, prilagođenom verzijom u/etc/systemd
- specijalno, usluge se nalaze u direktorijima
/lib/systemd/system
i/etc/systemd/system
- systemd prvo traži datoteku u
Hint
Podsjetimo se da već desetak godina većina distribucija Linuxa spaja prvi i drugi nivo hijerarhije datotečnog sustava, odnosno da su direktoriji /bin
, /lib
(/lib64
) i /sbin
samo simboličke poveznice na /usr/bin
, /usr/lib
(/usr/lib64
) i /usr/sbin
. Posljedično, putanje /lib/systemd/system
i /usr/lib/systemd/system
su ekvivalentne.
Zadatak
Instalirajte Apache ga nemate već instaliranog. Apachejeva usluga naziva se http.service
; prvo pronađite tu datoteke na datotečnom sustavu, a zatim je kopirajte na mjesto na kojem ćete je moći uređivati tako da systemd koristi uređenu verziju, a izvorna verzija ostane sačuvana drugdje na datotečnom sustavu.
Upravljanje pojedinom uslugom
Baratanje pojedinom uslugom razlikuje se u situaciji kada se koristi SysVinit od situacije kada se koristi Systemd.
Upravljanje uslugom korištenjem SysVinita
/etc/init.d/usluga start
pokreće uslugu, ekvivalentnoservice usluga start
/etc/init.d/usluga stop
zaustavlja uslugu, ekvivalentnoservice usluga stop
/etc/init.d/usluga status
ispisuje stanje usluge, ekvivalentnoservice usluga status
- naredba
service --status-all
prikazuje status svih usluga
Zadatak
- Provjerite status usluga
ntpd
intpdate
, a zatim ih zaustavite i ponovno pokrenite. - Naredba
netstat -a
daje, između ostalog, popis otvorenih lokalnih portova (konekcije u stanjuLISTEN
). Otkrijte koje su to usluge u našem slučaju. Ima lintpd
u popisu nakon zaustavljanja daemona?
Zadatak
Iskoristite yum
da bi instalirali vsftpd
, a zatim ga pokrenite. Iskoristite ftp
dostupan na računalu na kojem radite da bi se povezali na poslužitelj (sama prijava vam neće raditi; to zasad zanemarite).
Systemd naredba systemctl
- pregled stanja pojedine usluge
USLUGA
možemo izvršiti naredbomsystemctl status USLUGA
- upravljati stanjem usluge
USLUGA
možemo slijedećim naredbama:systemctl start USLUGA
systemctl stop USLUGA
systemctl restart USLUGA
systemctl reload USLUGA
Pregled svih praćenih usluga i njihovih stanja se vrši pokretanjem alata systemctl
.
Zadatak
Pronađite dva poslužiteljska programa (izuzev Apacheja) po želji iz Category:Servers na ArchWikiju. Instalirajte ih i isprobajte mogu li se pokrenuti i zaustaviti.
Upravljanje uslugama pojedinog cilja pokretanja
Baratanje uslugama cilja ili razine pokretanja razlikuje se u situaciji kada se koristi SysVinit od situacije kada se koristi Systemd.
Upravljanje uslugama citalja pokretanja korištenjem SysVinita
- naredba
chkconfig
omogućuje da se uključuje ili isključuje pojedine usluge u pojedinim razinama pokretanja chkconfig --list usluga
ispisuje jesu li usluge uključene ili isključene u pojedinim razinama pokretanjachkconfig usluga on --level 2345
uključuje uslugu za pokretanje u razinama 2, 3, 4 i 5chkconfig usluga off --level 01
isključuje uslugu za pokretanje u razinama 0 i 1
Zadatak
Uključite uslugu vsftpd
u runlevelima 3, 4 i 5.
Upravljanje uslugama citalja pokretanja korištenjem Sytemda
- usluge koji žele biti pokrenute u određenom cilju pokretanja moraju o istome ovisiti
systemctl enable
uključuje pokretanje usluge u nivoima navedenim u dijelu[Install]
podWantedBy=
systemctl disable
isključuje pokretanje usluge
Systemd jedinka usluge
Usluge su implementirane kao service units, npr. acpid.service
, sshd.service
. Detaljnu specifikaciju moguće je pronaći u man stranici systemd.service(5)
.
Zadatak
Uredite Apachejevu systemd uslugu tako da opis umjesto Apache Web Server
bude Apache HTTP Server
i da se pokreće tek nakon što se računalo poveže na internet (uputa: provjerite popis ciljeva i pronađite cilj koji to osigurava).
Author: Luka Vretenar, Vedran Miletić