Tento článok začneme celkovou a krátkou revíziou toho, čo sa deje od okamihu, keď stlačíte Moc tlačidlo na zapnutie vášho RHEL 7 server, kým sa vám nezobrazí prihlasovacia obrazovka v rozhraní príkazového riadka.
Vezmite prosím na vedomie, že:
1. rovnaké základné princípy platia, možno s malými úpravami, aj pre iné distribúcie Linuxu a
2. nasledujúci popis nemá predstavovať vyčerpávajúce vysvetlenie procesu zavádzania, ale iba základy.
1. The POST (Power On Self Test) inicializuje a vykonáva kontroly hardvéru.
2. Keď POST Po dokončení sa riadenie systému odovzdá zavádzaciemu programu prvého stupňa, ktorý je uložený na zariadení boot sektor jedného z pevných diskov (pre staršie systémy používajúce BIOS a MBR) alebo vyhradeného (U) EFI priečka.
3. Zavádzač prvého stupňa potom obvykle načíta zavádzací program druhého stupňa GRUB (GRand Unified Boot Loader), ktorý sídli vo vnútri /boot, čo následne načíta jadro a pôvodný súborový systém založený na RAM (známy aj ako
initramfs, ktorý obsahuje programy a binárne súbory, ktoré vykonávajú potrebné akcie potrebné na konečné pripojenie skutočného koreňového súborového systému).4. Zobrazí sa úvodná obrazovka, ktorá nám umožní vybrať operačný systém a jadro, ktoré sa má zaviesť:
5. Jadro nastaví hardvér pripojený k systému a po pripojení koreňového súborového systému spustí proces pomocou PID 1, čo následne inicializuje ďalšie procesy a zobrazí nám výzvu na prihlásenie.
Poznámka: Že ak to chceme urobiť neskôr, môžeme preskúmať špecifiká tohto procesu pomocou príkaz dmesg a filtrovanie jeho výstupu pomocou nástrojov, ktoré sme vysvetlili v predchádzajúcich článkoch tejto série.
Vo vyššie uvedenom príklade sme použili známe ps príkaz zobraziť zoznam aktuálnych procesov, ktorých nadradený proces (alebo inými slovami proces, ktorý ich spustil) je systemd (správca systému a služieb, na ktorý prešla väčšina moderných distribúcií Linuxu) počas spustenia systému:
# ps -o ppid, pid, uname, comm --ppid = 1.
Pamätajte si, že -o vlajka (skratka pre –Formát) vám umožňuje prezentovať výstup z ps vo formáte prispôsobenom na mieru vašim potrebám pomocou kľúčových slov uvedených v ŠTANDARDNÉ FORMÁTOVÉ ŠPECIFIKÁTORY časť v muž ps.
Ďalší prípad, v ktorom budete chcieť definovať výstup ps namiesto predvoleného nastavenia je potrebné nájsť procesy, ktoré spôsobujú značné zaťaženie procesora a / alebo pamäte, a podľa toho ich zoradiť:
# ps aux --sort =+pcpu # Zoradiť podľa %CPU (vzostupne) # ps aux --sort = -pcpu # Zoradiť podľa %CPU (zostupne) # ps aux --sort =+pmem # Zoradiť podľa %MEM (vzostupne) # ps aux --sort = -pmem # Zoradiť podľa %MEM (zostupne) # ps aux --sort =+pcpu, -pmem # Skombinujte zoradenie podľa %CPU (vzostupne) a %MEM (zostupne)
Len málo rozhodnutí vo svete Linuxu spôsobilo viac kontroverzií ako prijatie systemd prostredníctvom veľkých distribúcií Linuxu. Obhajcovia spoločnosti Systemd označujú za svoje hlavné výhody nasledujúce skutočnosti:
Prečítajte si tiež:Príbeh za „init“ a „systemd“
1. Systemd umožňuje, aby sa počas spustenia systému vykonalo viac spracovaní súbežne (na rozdiel od starších SysVinit, ktorý býva vždy pomalší, pretože spúšťa procesy jeden po druhom, kontroluje, či jeden na druhom závisí, a potom čaká, kým sa spustí démoni, aby sa mohli spustiť ďalšie služby), a
2. Funguje ako dynamická správa zdrojov v spustenom systéme. Služby sa teda spúšťajú v prípade potreby (aby sa predišlo spotrebe systémových zdrojov, ak sa nepoužívajú) namiesto toho, aby sa spúšťali bez platného dôvodu počas zavádzania.
3. Spätná kompatibilita s SysVinit skripty.
Systemd je ovládaný systemctl užitočnosť. Ak pochádzate z a SysVinit pozadia, je pravdepodobné, že poznáte:
Nasledujúca tabuľka ukazuje podobnosti medzi používaním týchto starších nástrojov a systemctl:
Starý nástroj | Systémový ekvivalent | Popis |
spustenie názvu služby | počiatočné meno systemctl | Počiatočné meno (kde názov je služba) |
zastávka názvu služby | názov systémovej zastávky | Zastav meno |
názov služby condrestart | názov systemtl try-restart | Reštartuje názov (ak je už spustený) |
reštart názvu služby | názov restartu systemctl | Reštartuje meno |
znova načítať názov služby | názov načítania systemctl | Znovu načíta konfiguráciu pre názov |
stav názvu služby | názov systémového stavu | Zobrazuje aktuálny stav mena |
služba-stav-všetko | systemctl | Zobrazuje stav všetkých aktuálnych služieb |
názov chkconfig je zapnutý | systemctl povoliť názov | Povoľte názov, ktorý sa má spustiť pri spustení, ako je uvedené v jednotkovom súbore (súbor, na ktorý odkazuje symbolický odkaz). Proces povolenia alebo zakázania automatického spustenia služby pri štarte spočíva v pridaní alebo odstránení symbolických odkazov do adresára/etc/systemd/system. |
názov chkconfig je vypnutý | systemctl zakázať meno | Zakáže spustenie názvu pri štarte, ako je uvedené v jednotkovom súbore (súbor, na ktorý ukazuje symbolický odkaz) |
chkconfig - názov zoznamu | systemctl je povolený názov | Overte, či je názov (konkrétna služba) aktuálne povolený |
chkconfig - zoznam | systemctl –type = služba | Zobrazí všetky služby a povie, či sú povolené alebo zakázané |
vypnutie -h teraz | systémové vypnutie | Vypnite stroj (zastavte) |
vypnutie -r teraz | systemctl reboot | Reštartujte systém |
Systemd predstavil aj koncepty jednotiek (ktorými môžu byť buď služba, bod pripojenia, zariadenie alebo sieťová zásuvka) a cieľov (čo je ako sa Systemd podarí spustiť niekoľko súvisiacich procesov súčasne a ktoré možno považovať - aj keď nie za rovnaké - za ekvivalent úrovní behu v Na báze SysVinit systémy.
Medzi ďalšie úlohy súvisiace s riadením procesov patrí, okrem iného, schopnosť:
To sa dosahuje prostredníctvom renice nástroj, ktorý mení prioritu plánovania jedného alebo viacerých spustených procesov. Jednoducho povedané, priorita plánovania je funkcia, ktorá umožňuje jadru (prítomné vo verziách => 2.6) alokovať systémové prostriedky podľa priradenej priority spustenia (alias jemnosť, v rozsahu od -20 cez 19) daného procesu.
Základná syntax súboru renice je nasledujúci:
# renice [-n] prioritný [-gpu] identifikátor.
Vo vyššie uvedenom generickom príkaze je prvým argumentom hodnota priority, ktorá sa má použiť, zatiaľ čo druhý argument možno interpretovať ako procesný ID (čo je predvolené nastavenie), ID skupín procesov, ID užívateľov alebo mená užívateľov. Normálny používateľ (iný ako root) môže iba zmeniť prioritu plánovania procesu, ktorý vlastní, a iba zvýšiť úroveň prehľadnosti (čo znamená, že zaberá menej systémových zdrojov).
Presnejšie povedané, zabitie procesu ho oprávňuje poslať signál na dokončenie jeho vykonania elegantne (SIGTERM = 15) alebo ihneď (SIGKILL = 9) cez príkazmi kill alebo pkill.
Rozdiel medzi týmito dvoma nástrojmi je v tom, že prvý z nich sa používa na ukončenie konkrétneho procesu alebo a skupinu procesov úplne, pričom tá druhá vám umožňuje urobiť to isté na základe mena a ďalších atribúty.
Navyše, pkill je súčasťou balenia pgrep, ktorý vám ukazuje PID, ktoré budú ovplyvnené v prípade použitia pkill. Napríklad pred spustením:
# pkill -u gacanepa.
Môže byť užitočné pozrieť sa na prvý pohľad, ktoré sú PID vo vlastníctve gacanepa:
# pgrep -l -u gacanepa.
Štandardne oboje zabiť a pkill poslať SIGTERM signál procesu. Ako sme už uviedli, tento signál je možné ignorovať (kým sa proces dokončí alebo alebo dobré), takže keď skutočne potrebujete zastaviť bežiaci proces z platného dôvodu, budete to musieť urobiť špecifikujte SIGKILL signál na príkazovom riadku:
# kill -9 identifier # Zabite proces alebo skupinu procesov. # kill -s Identifikátor SIGNÁLU # Idem. # pkill -s SIGNAL identifikátor # Zabite proces menom alebo inými atribútmi
V tomto článku sme vysvetlili základy bootovací proces v RHEL 7 systému a analyzoval niektoré z nástrojov, ktoré sú k dispozícii, aby vám pomohli s riadením procesov pomocou bežných pomocných programov a príkazov špecifických pre systemd.
Všimnite si toho, že tento zoznam nie je určený na to, aby pokryl všetky zvony a píšťalky tejto témy, takže neváhajte pridať svoje obľúbené nástroje a príkazy do tohto článku pomocou nižšie uvedeného formulára komentárov. Otázky a ďalšie pripomienky sú tiež vítané.