RHCSA serija: Upravljanje procesima u RHEL 7: Dizanje, isključivanje i sve između - 5. dio


Ovaj ćemo članak započeti ukupnom i kratkom revizijom onoga što se događa od trenutka kada pritisnete tipku za uključivanje/isključivanje da biste uključili svoj RHEL 7 poslužitelj dok vam se u sučelju naredbenog retka ne prikaže zaslon za prijavu.

Imajte na umu da:

1. isti osnovni principi primjenjuju se, s možda manjim izmjenama, i na druge Linux distribucije, i
2. Sljedeći opis nije namijenjen iscrpnom objašnjenju postupka pokretanja, već samo osnovama.

Postupak pokretanja Linuxa

1. POST (samoispitivanje pri uključivanju) pokreće i izvršava provjere hardvera.

2. Kad se POST završi, kontrola sustava prosljeđuje se u prvi stupanj učitavača, koji je pohranjen ili u sektor za pokretanje jednog od tvrdih diskova (za starije sustave koji koriste BIOS i MBR), ili u namjenski (U) EFI pregrada.

3. Utovarivač prve faze učitava učitavač u drugoj fazi, najčešće GRUB (GRand Unified Boot Loader), koji se nalazi unutar/boot-a, koji zauzvrat učitava jezgru i početni sustav datoteka zasnovan na RAM-u (poznat i kao initramfs , koji sadrži programe i binarne datoteke koje izvode potrebne radnje potrebne za konačno montiranje stvarnog korijenskog datotečnog sustava).

4. Predstavljamo vam početni zaslon koji nam omogućuje odabir operativnog sustava i jezgre za pokretanje:

5. Kernel postavlja hardver priključen na sustav i nakon što se korijenski datotečni sustav montira, pokreće proces s PID 1, koji će zauzvrat inicijalizirati druge procese i predstaviti nam upit za prijavu.

Napomena: Ako to želimo učiniti kasnije, možemo ispitati specifičnosti ovog postupka pomoću naredbe dmesg i filtrirati njegov izlaz pomoću alata koji smo objasnili u prethodnim člancima ove serije.

U gornjem primjeru koristili smo dobro poznatu ps naredbu za prikaz popisa trenutnih procesa čiji je nadređeni proces (ili drugim riječima postupak koji ih je pokrenuo) systemd (upravitelj sustava i usluga koji je većina modernih distribucija Linuxa promijenila do) tijekom pokretanja sustava:

# ps -o ppid,pid,uname,comm --ppid=1

Imajte na umu da vam zastavica -o (skraćenica od –format) omogućuje prikazivanje rezultata ps-a u prilagođenom formatu koji odgovara vašim potrebama pomoću ključnih riječi navedenih u odjeljku SPANDIFIKATORI STANDARDNOG OBLIKA u man ps.

Još jedan slučaj u kojem ćete htjeti definirati izlaz ps-a umjesto da idete sa zadanim, kada trebate pronaći procese koji uzrokuju značajno opterećenje CPU-a i/ili memorije te ih prema tome sortirati:

# ps aux --sort=+pcpu              # Sort by %CPU (ascending)
# ps aux --sort=-pcpu              # Sort by %CPU (descending)
# ps aux --sort=+pmem              # Sort by %MEM (ascending)
# ps aux --sort=-pmem              # Sort by %MEM (descending)
# ps aux --sort=+pcpu,-pmem        # Combine sort by %CPU (ascending) and %MEM (descending)

Uvod u SystemD

Malo je odluka u svijetu Linuxa izazvalo više kontroverzi nego usvajanje systemda od strane glavnih Linux distribucija. Zagovornici Systemda kao glavne prednosti imenuju sljedeće činjenice:

Pročitajte također: Priča iza "init" i "systemd"

1. Systemd omogućuje paralelno obavljanje više obrada tijekom pokretanja sustava (za razliku od starijeg SysVinita, koji uvijek teži sporije jer pokreće procese jedan po jedan, provjerava ovisi li jedan o drugom, a zatim čeka da se demoni tako pokrenu) može započeti više usluga) i

2. Djeluje kao dinamičko upravljanje resursima u pokrenutom sustavu. Stoga se usluge pokreću po potrebi (kako bi se izbjeglo trošenje resursa sustava ako se ne koriste), umjesto da se pokrenu bez valjanog razloga tijekom pokretanja.

3. Povratna kompatibilnost sa SysVinit skriptama.

Systemd kontrolira uslužni program systemctl. Ako potječete iz porijekla SysVinita, velika je vjerojatnost da će vam biti poznato:

  1. uslužni alat koji se - u onim starijim sustavima - koristio za upravljanje SysVinit skriptama i
  2. uslužni program chkconfig, koji je služio u svrhu ažuriranja i postavljanja upita o informacijama o razini pokretanja za sistemske usluge.
  3. isključivanje, koje ste morali koristiti nekoliko puta za ponovno pokretanje ili zaustavljanje pokrenutog sustava.

Sljedeća tablica prikazuje sličnosti između upotrebe ovih naslijeđenih alata i systemctl:

Systemd je također predstavio koncepte jedinica (koje mogu biti ili usluga, točka montiranja, uređaj ili mrežna utičnica) i ciljeva (na taj način Systemd uspijeva pokrenuti nekoliko povezanih procesa u isto vrijeme i može se smatrati - iako nije jednak - kao ekvivalent razine pokretanja u sustavima temeljenim na SysVinit-u.

Sumirati

Ostali zadaci povezani s upravljanjem procesima uključuju, ali ne moraju biti ograničeni na, sposobnost:

To se postiže pomoću uslužnog programa renice, koji mijenja prioritet zakazivanja jednog ili više pokrenutih procesa. Jednostavno rečeno, prioritet zakazivanja je značajka koja omogućava kernelu (prisutan u verzijama => 2.6) da dodijeli sistemske resurse prema dodijeljenom prioritetu izvršenja (aka simpatičnosti, u rasponu od -20 do 19) datog procesa.

Osnovna sintaksa renice je sljedeća:

# renice [-n] priority [-gpu] identifier

U gornjoj generičkoj naredbi prvi je argument vrijednost prioriteta koja se koristi, dok se drugi argument može protumačiti kao ID procesa (što je zadana postavka), ID procesne grupe, ID korisnika ili korisnička imena. Normalan korisnik (osim root-a) može samo izmijeniti prioritet zakazivanja procesa koji je u njegovom vlasništvu i samo povećati razinu prijaznosti (što znači da zauzima manje sistemskih resursa).

Preciznije rečeno, ubijanje postupka omogućuje mu slanje signala da ili izvrši svoje izvršavanje elegantno (SIGTERM = 15) ili odmah (SIGKILL = 9) kroz naredbe kill ili pkill.

Razlika između ova dva alata je u tome što se prvi koristi za završavanje određenog procesa ili grupe procesa, dok drugi omogućuje da to učinite na temelju imena i drugih atributa.

Uz to, pkill dolazi u paketu s pgrep-om, koji vam pokazuje PID-ove na koje će to utjecati ako se pkill koristi. Na primjer, prije pokretanja:

# pkill -u gacanepa

Moglo bi biti korisno na brzinu pogledati koji su PID-ovi u vlasništvu gacanepe:

# pgrep -l -u gacanepa

Prema zadanim postavkama i kill i pkill procesu šalju SIGTERM signal. Kao što smo gore spomenuli, ovaj se signal može zanemariti (dok postupak završava sa svojim izvršavanjem ili zauvijek), pa kada ozbiljno trebate zaustaviti pokrenut postupak s valjanim razlogom, morat ćete navesti signal SIGKILL na naredbenom retku:

# kill -9 identifier               # Kill a process or a process group
# kill -s SIGNAL identifier        # Idem
# pkill -s SIGNAL identifier       # Kill a process by name or other attributes 

Zaključak

U ovom smo članku objasnili osnove procesa pokretanja u RHEL 7 sustavu i analizirali neke alate koji su vam na raspolaganju za pomoć u upravljanju procesima pomoću uobičajenih uslužnih programa i naredbi specifičnih za systemd.

Imajte na umu da ovaj popis nije namijenjen za pokrivanje svih zvukova ove teme, stoga slobodno dodajte svoje vlastite preferirane alate i naredbe u ovaj članak pomoću obrasca za komentar u nastavku. Pitanja i drugi komentari su također dobrodošli.