RHCSA Serie: Prozessmanagement am RHEL 7: Boot, Shutdown, an alles tëscht - Deel 5


Mir starten dësen Artikel mat enger allgemenger a kuerzer Revisioun vu wat geschitt zënter dem Moment wou Dir op den Power Button dréckt fir Ären RHEL 7 Server unzeschalten bis Dir de Loginbildschierm an enger Kommandozeil-Interface presentéiert gëtt.

Maacht weg datt:

1. déi selwecht Grondprinzipien gëllen, vläicht mat klengen Ännerungen, och fir aner Linux Verdeelungen, an
2. Déi folgend Beschreiwung ass net geduecht fir eng ustrengend Erklärung vum Bootprozess ze representéieren, awer nëmmen d'Grondlage.

Linux Boot Prozess

1. De POST (Power On Self Test) initialiséiert a mécht Hardwarechecken.

2. Wann de POST fäerdeg ass, gëtt d'Systemsteuerung un den éischte Stuf Bootloader iwwerginn, deen entweder am Bootsektor vun enger vun den Harddisken (fir eeler Systemer mat BIOS an MBR) gespäichert gëtt, oder op eng speziell (U) EFI Partition.

3. Den éischte Stuf Bootloader lued dann den zweete Stuf Bootloader, meeschtens GRUB (GRand Unified Boot Loader), deen an /boot wunnt, deen am Tour de Kernel an den initialen RAM-baséierten Dateiesystem (och bekannt als initramfs) lued , déi Programmer a binär Dateien enthält, déi déi néideg Handlungen ausféieren, déi néideg sinn fir schlussendlech den aktuellen Root Dateiesystem ze montéieren).

4. Mir ginn e Splash-Bildschierm presentéiert, deen eis erlaabt e Betribssystem a Kernel ze wielen fir ze booten:

5. De Kernel setzt d'Hardware op, déi mam System verbonnen ass, a wann de Root-Dateisystem montéiert ass, lancéiert de Prozess mat PID 1, deen am Tour aner Prozesser initialiséieren an eis mat enger Login-Prompt presentéieren.

Bemierkung: Wann mir dat zu enger spéider Zäit wëllen, kënne mir d'Spezifizitéite vun dësem Prozess ënnersichen andeems Dir dmesg Kommando benotzt a seng Ausgab filtert mat den Tools déi mir a fréieren Artikele vun dëser Serie erkläert hunn.

Am Beispill hei uewen hu mir de bekannte ps Kommando benotzt fir eng Lëscht vun aktuellen Prozesser ze weisen, deenen hiren Elterende Prozess (oder an anere Wierder, de Prozess deen se ugefaang huet) systemd ass (de System an de Service Manager deen déi meescht modern Linux Verdeelungen gewiesselt hunn zu) beim Systemstart:

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

Denkt drun datt den -o Fändel (kuerz fir –format) Iech erlaabt d'Ausgab vu ps an engem personaliséierte Format ze presentéieren fir Äre Besoinen ze passen mat de Schlësselwieder, déi an der STANDARD FORMAT SPECIFIERS Sektioun am man ps spezifizéiert sinn.

En anere Fall an deem Dir d'Ausgab vu ps wëllt definéieren anstatt mam Standard ze goen ass wann Dir Prozesser muss fannen déi eng bedeitend CPU an/oder Erënnerungsbelaaschtung verursaachen, an se deementspriechend sortéieren:

# 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)

Eng Aféierung an SystemD

Puer Entscheedungen an der Linux Welt hu méi Kontrovers verursaacht wéi d'Adoptioun vu Systemd vu grousse Linux Verdeelungen. D'Affekote vum Systemd nennen als seng Haaptvirdeeler déi folgend Fakten:

Liest och: D'Geschicht hannert 'init' an 'systemd'

1. Systemd erlaabt méi Veraarbechtung parallel während dem Systemstartup ze maachen (am Géigesaz zum eelere SysVinit, deen ëmmer méi lues tendéiert well et Prozesser een nom aneren ufänkt, kontrolléiert ob een vun engem aneren hänkt, a waart dann op Daemonen fir sou ze starten méi Servicer kënnen ufänken), an

2. Et Wierker als dynamesch Ressource Gestioun an engem Lafen System. Also ginn Servicer gestart wann néideg (fir Systemressourcen ze vermeiden wann se net benotzt ginn) anstatt ouni e gültege Grond beim Boot ze lancéieren.

3. Récksäit Onbedenklechkeet mat SysVinit Scripten.

Systemd gëtt vum Systemctl Utility kontrolléiert. Wann Dir aus engem SysVinit Hannergrond kënnt, sinn d'Chancen datt Dir vertraut sidd mat:

  1. de Service-Tool, deen -an deenen ale Systemer- benotzt gouf fir SysVinit Scripten ze managen, an
  2. den chkconfig Utility, deen den Zweck gedéngt huet fir Runlevel Informatioun fir Systemservicer ze aktualiséieren an ze froen.
  3. Shutdown, deen Dir e puer Mol benotzt hutt fir e Lafen System entweder nei ze starten oder ze stoppen.

Déi folgend Tabell weist d'Ähnlechkeeten tëscht der Notzung vun dësen Legacy Tools a Systemctl:

Systemd huet och d'Konzepter vun Eenheeten agefouert (déi entweder e Service, e Mountpunkt, en Apparat oder e Netzwierk Socket kënne sinn) an Ziler (wat ass wéi Systemd et fäerdeg bréngt e puer verwandte Prozesser zur selwechter Zäit unzefänken, a kënne betruecht ginn - obwuel net gläich- wéi d'Äquivalent vun Runlevels an SysVinit-baséiert Systemer.

Zesummefaassung

Aner Aufgaben am Zesummenhang mat Prozessmanagement enthalen, awer vläicht net limitéiert op, d'Fäegkeet fir:

Dëst gëtt duerch d'Renice-Utility erreecht, wat d'Prioritéit vun engem oder méi lafende Prozesser ännert. An einfache Begrëffer ass d'Fuerplang Prioritéit eng Feature déi de Kernel erlaabt (präsent a Versiounen => 2.6) Systemressourcen ze allokéieren no der zougewisener Ausféierungsprioritéit (alias Niceness, an engem Beräich vun -20 bis 19) vun engem bestëmmte Prozess.

D'Basis Syntax vu Renice ass wéi follegt:

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

Am generesche Kommando uewendriwwer ass dat éischt Argument de Prioritéitswäert fir ze benotzen, wärend dat anert Argument als Prozess IDs (wat d'Standardastellung ass), Prozessgrupp IDen, Benotzer IDen oder Benotzernimm interpretéiert ka ginn. En normale Benotzer (ausser Root) kann nëmmen d'Fuerplang Prioritéit vun engem Prozess änneren, deen hien oder hatt gehéiert, an nëmmen de Niceness Niveau erhéijen (wat heescht manner Systemressourcen opzehuelen).

A méi präzise Begrëffer, ëmbréngen e Prozess berechtegt et e Signal ze schécken fir entweder seng Ausféierung graziéis ofzeschléissen (SIGTERM = 15) oder direkt (SIGKILL = 9) duerch d'kill oder pkill Kommandoen.

Den Ënnerscheed tëscht dësen zwee Tools ass datt de fréiere benotzt gëtt fir e spezifesche Prozess oder eng Prozessgrupp ganz ofzeschléissen, während déi lescht Iech erlaabt datselwecht ze maachen baséiert op Numm an aner Attributer.

Zousätzlech kënnt pkill mat pgrep gebündelt, wat Iech d'PIDs weist, déi betraff sinn, sollten pkill benotzt ginn. Zum Beispill, virum Lafen:

# pkill -u gacanepa

Et kann nëtzlech sinn op ee Bléck ze gesinn déi PIDs sinn am Besëtz vu gacanepa:

# pgrep -l -u gacanepa

Par défaut schécken souwuel Kill wéi och Pkill de SIGTERM Signal un de Prozess. Wéi mir uewen ernimmt hunn, kann dëst Signal ignoréiert ginn (während de Prozess seng Ausféierung fäerdeg mécht oder fir gutt), also wann Dir e Lafprozess mat engem gültege Grond eescht muss stoppen, musst Dir de SIGKILL Signal op der Kommandozeil spezifizéieren:

# 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 

Conclusioun

An dësem Artikel hu mir d'Grondlage vum Stiwwelprozess an engem RHEL 7 System erkläert, an e puer vun den Tools analyséiert déi verfügbar sinn fir Iech mat der Gestioun vu Prozesser mat gemeinsamen Utilities a systemd-spezifesche Kommandoen ze hëllefen.

Bedenkt datt dës Lëscht net geduecht ass fir all d'Klacken a Pfeifen vun dësem Thema ze decken, also fillt Iech gratis Är eege léifste Tools a Kommandoen an dësen Artikel ze addéieren andeems Dir de Kommentarform hei drënner benotzt. Froen an aner Kommentarer sinn och wëllkomm.