Alles wat Dir Wësse musst iwwer Prozesser am Linux [Comprehensive Guide]


An dësem Artikel wäerte mir duerch e Basisverständnis vu Prozesser goen a kucke kucke wéi Dir Prozesser am Linux verwalten mat bestëmmte Kommandoen.

E Prozess bezitt sech op e Programm an der Ausféierung; et ass eng Lafen Instanz vun engem Programm. Et besteet aus der Programminstruktioun, Daten aus Dateien gelies, aner Programmer oder Input vun engem System Benotzer.

Et gi grondsätzlech zwou Aarte vu Prozesser am Linux:

  • Virgrond Prozesser (och als interaktiv Prozesser bezeechent) - dës ginn initialiséiert a kontrolléiert duerch eng Terminal Sessioun. An anere Wierder, et muss e Benotzer mam System verbonne sinn fir sou Prozesser ze starten; si sinn net automatesch als Deel vun de Systemfunktiounen/Servicer gestart.
  • Hannergrondprozesser (och als net-interaktiven/automatesch Prozesser bezeechent) - si Prozesser déi net mat engem Terminal verbonne sinn; si erwaarden kee Benotzerinput.

Dëst sinn speziell Aarte vun Hannergrondprozesser, déi beim Systemstart starten a fir ëmmer als Service lafen; si stierwen net. Si ginn als Systemaufgaben gestart (als Servicer lafen), spontan. Wéi och ëmmer, si kënne vun engem Benotzer iwwer den Initprozess kontrolléiert ginn.

Kreatioun vun engem Prozesser am Linux

En neie Prozess gëtt normalerweis erstallt wann en existente Prozess eng exakt Kopie vu sech selwer an der Erënnerung mécht. D'Kandprozess wäert datselwecht Ëmfeld wéi säin Elterendeel hunn, awer nëmmen d'Prozess ID Zuel ass anescht.

Et ginn zwou konventionell Weeër benotzt fir en neie Prozess am Linux ze kreéieren:

  • D'System() Funktioun ze benotzen - dës Method ass relativ einfach, awer et ass ineffizient an huet wesentlech gewësse Sécherheetsrisiken.
  • Benotz Fork() an exec() Funktioun - dës Technik ass e bësse fortgeschratt awer bitt méi Flexibilitéit, Geschwindegkeet, zesumme mat Sécherheet.

Wéi identifizéiert Linux Prozesser?

Well Linux e Multi-User System ass, dat heescht datt verschidde Benotzer verschidde Programmer um System kënne lafen, muss all Lafen Instanz vun engem Programm eenzegaarteg vum Kernel identifizéiert ginn.

An e Programm gëtt duerch seng Prozess ID (PID) identifizéiert wéi och seng Elterenprozesser ID (PPID), dofir kënne Prozesser weider kategoriséiert ginn an:

  • Eltereprozesser - dëst sinn Prozesser déi aner Prozesser während der Lafzäit erstellen.
  • Kandprozesser - dës Prozesser ginn vun anere Prozesser wärend der Lafzäit erstallt.

Init Prozess ass d'Mamm (Elteren) vun alle Prozesser um System, et ass den éischte Programm deen ausgefouert gëtt wann de Linux System opstart; et geréiert all aner Prozesser op de System. Et gëtt vum Kernel selwer gestart, also am Prinzip huet et keen Elterendeel.

D'Init Prozess huet ëmmer Prozess ID vun 1. Et Funktiounen als Adoptioun Elterendeel fir all verwaist Prozesser.

Dir kënnt de Pidof Kommando benotze fir d'ID vun engem Prozess ze fannen:

# pidof systemd
# pidof top
# pidof httpd

Fir d'Prozess ID an d'Eltere Prozess ID vun der aktueller Shell ze fannen, lafen:

$ echo $$
$ echo $PPID

Wann Dir e Kommando oder Programm leeft (zum Beispill cloudcmd - CloudCommander), fänkt e Prozess am System un. Dir kënnt e Virdergrond (interaktiven) Prozess wéi follegt starten, et gëtt mam Terminal verbonnen an e Benotzer kann den Input schécken:

# cloudcmd

Fir e Prozess am Hannergrond unzefänken (net-interaktiv), benotzt d'& Symbol, hei liest de Prozess den Input vun engem Benotzer net bis en an de Virdergrond geplënnert ass.

# cloudcmd &
# jobs

Dir kënnt och e Prozess op den Hannergrond schécken andeems Dir se mat [Ctrl + Z] suspendéiert, dëst schéckt de SIGSTOP-Signal un de Prozess, an doduerch stoppt seng Operatiounen; et gëtt Idle:

# tar -cf backup.tar /backups/*  #press Ctrl+Z
# jobs

Fir weider den uewe suspendéierte Kommando am Hannergrond ze lafen, benotzt de bg Kommando:

# bg

Fir en Hannergrondprozess op de Virdergrond ze schécken, benotzt de fg Kommando zesumme mat der Job ID sou:

# jobs
# fg %1

Dir kënnt och gär hunn: Wéi starten de Linux Kommando am Hannergrond an Detach Prozess am Terminal

Wärend der Ausféierung ännert e Prozess vun engem Staat an en aneren ofhängeg vu senger Ëmwelt/Ëmstänn. Am Linux huet e Prozess déi folgend méiglech Staaten:

  • Lafen - hei leeft et entweder (et ass den aktuelle Prozess am System) oder et ass prett fir ze lafen (et waart op eng vun den CPUs zougewisen ze ginn).
  • Waarden - an dësem Zoustand waart e Prozess op en Event oder op eng Systemressource. Zousätzlech ënnerscheet de Kärel och tëscht zwou Aarte vu Waardeprozesser; ënnerbrach Waardeprozesser - kënne vu Signaler an onënnerbriechleche Waardeprozesser ënnerbrach ginn - waarden direkt op Hardwarebedéngungen a kënnen net vun all Event/Signal ënnerbrach ginn.
  • Gestoppt - an dësem Zoustand ass e Prozess gestoppt ginn, normalerweis duerch Empfang vun engem Signal. Zum Beispill e Prozess deen debugged gëtt.
  • Zombie - hei ass e Prozess dout, et gouf gestoppt, awer et huet nach ëmmer eng Entrée an der Prozesstabel.

Et gi verschidde Linux Tools fir lafend Prozesser um System ze gesinn/ze notéieren, déi zwee traditionell a bekannt sinn Top Kommandoen:

Et weist Informatioun iwwer eng Auswiel vun den aktive Prozesser um System wéi hei ënnendrënner:

# ps 
# ps -e | head 

dynamesch Echtzäit Vue vun engem lafende System wéi am Screenshot hei ënnen gewisen:

# top 

Liest dëst fir méi Top Benotzungsbeispiller: 12 TOP Kommando Beispiller am Linux

glances ass e relativ neie System Iwwerwachungsinstrument mat fortgeschratt Features:

# glances

Fir e komplette Gebrauchsguide, liest duerch: Bléck - En fortgeschratt Echtzäit System Iwwerwaachungstool fir Linux

Et gi verschidde aner nëtzlech Linux System Iwwerwachungsinstrumenter déi Dir benotze kënnt fir aktiv Prozesser ze lëschten, öffnen de Link hei ënnen fir méi doriwwer ze liesen:

  1. 20 Command Line Tools fir d'Linux Performance ze iwwerwaachen
  2. 13 Méi Nëtzlech Linux Iwwerwaachungstools

Wéi kontrolléiert Prozesser am Linux

Linux huet och e puer Kommandoen fir Prozesser ze kontrolléieren wéi Kill, pkill, pgrep a killall, hei drënner sinn e puer grondleeënd Beispiller vu wéi se se benotzen:

$ pgrep -u tecmint top
$ kill 2308
$ pgrep -u tecmint top
$ pgrep -u tecmint glances
$ pkill glances
$ pgrep -u tecmint glances

Fir ze léieren wéi Dir dës Kommandoen am-Déift benotzt, fir aktiv Prozesser am Linux ëmzebréngen/ofzeschléissen, öffnen d'Links hei ënnen:

  1. E Guide fir Kill, Pkill a Killall Kommandoen fir Linux Prozesser ofzeschléissen
  2. Wéi Lafen Prozesser am Linux fannen an ëmbréngen

Notéiert datt Dir se benotze kënnt fir onreaktiounsfäeg Uwendungen am Linux ëmzebréngen wann Äre System afréiert.

Déi fundamental Manéier fir Prozesser am Linux ze kontrolléieren ass andeems Dir Signaler un hinnen schéckt. Et gi verschidde Signaler déi Dir un e Prozess schécken kënnt, fir all d'Signaler ze gesinn lafen:

$ kill -l

Fir e Signal un e Prozess ze schécken, benotzt d'kill, pkill oder pgrep Kommandoen, déi mir virdru gesot hunn. Awer Programmer kënnen nëmmen op Signaler reagéieren wa se programméiert sinn fir dës Signaler ze erkennen.

An déi meescht Signaler si fir intern Notzung vum System, oder fir Programméierer wann se Code schreiwen. Déi folgend Signaler sinn nëtzlech fir e System Benotzer:

  • SIGHUP 1 - an e Prozess geschéckt wann säi Kontrollterminal zou ass.
  • SIGINT 2 - op e Prozess duerch säi Kontrollterminal geschéckt wann e Benotzer de Prozess ënnerbrach andeems Dir [Ctrl+C] dréckt.
  • SIGQUIT 3 - an e Prozess geschéckt wann de Benotzer e Quit Signal schéckt [Ctrl+D].
  • SIGKILL 9 - dëst Signal schléisst (killt) direkt e Prozess an de Prozess wäert keng Botzoperatioune maachen.
  • SIGTERM 15 - dëst e Programmterminatiounssignal (kill schéckt dëst als Standard).
  • SIGTSTP 20 - op e Prozess vu sengem Kontrollterminal geschéckt fir ze froen fir ze stoppen (Terminalstopp); initiéiert vum Benotzer dréckt [Ctrl+Z].

Déi folgend sinn Kill Kommandoen Beispiller fir d'Firefox Applikatioun ëmzebréngen andeems se seng PID benotzt wann se afréiert:

$ pidof firefox
$ kill 9 2687
OR
$ kill -KILL 2687
OR
$ kill -SIGKILL 2687  

Fir eng Applikatioun ëmzebréngen mat hirem Numm, benotzt pkill oder killall sou:

$ pkill firefox
$ killall firefox 

Am Linux System hunn all aktiv Prozesser eng Prioritéit a bestëmmte flotte Wäert. Prozesser mat méi héijer Prioritéit kréien normalerweis méi CPU Zäit wéi méi niddereg Prioritéit Prozesser.

Wéi och ëmmer, e Systembenotzer mat Root Privilegien kann dëst mat de flotten a renice Kommandoen beaflossen.

Vun der Ausgab vum Top Kommando weist den NI de Prozess schéine Wäert:

$ top  

Benotzt de flotte Kommando fir e flotte Wäert fir e Prozess ze setzen. Denkt drun datt normal Benotzer e flotte Wäert vun Null bis 20 u Prozesser kënnen zouzeschreiwen, déi se besëtzen.
Nëmmen de Root Benotzer kann negativ schéi Wäerter benotzen.

Fir d'Prioritéit vun engem Prozess ze räissen, benotzt de Renice Kommando wéi follegt:

$ renice +8  2687
$ renice +8  2103

Kuckt eis e puer nëtzlech Artikelen iwwer wéi Dir Linux Prozesser verwalten a kontrolléiert.

  1. Linux Prozessmanagement: Boot, Shutdown, an alles dertëscht
  2. Fannt Top 15 Prozesser duerch Erënnerungsverbrauch mat 'Top' am Batch Modus
  3. Fannt Top Lafen Prozesser duerch héchst Gedächtnis an CPU Benotzung am Linux
  4. Wéi fannt Dir e Prozessnumm mat PID Nummer a Linux

Dat ass alles fir elo! Hutt Dir Froen oder zousätzlech Iddien, deelt se mat eis iwwer de Feedbackformular hei ënnen.