Weboldal keresés

Minden, amit a Linux folyamatairól tudni kell [Átfogó útmutató]


Ebben a cikkben a folyamatok alapvető megértését mutatjuk be, és röviden áttekintjük, hogyan lehet folyamatokat kezelni Linuxban bizonyos parancsok használatával.

A folyamat egy futó programra utal; ez egy program futó példánya. Ez a program utasításaiból, fájlokból, más programokból vagy a rendszerfelhasználótól származó bemeneti adatokból áll.

A folyamatok típusai

A Linuxban alapvetően kétféle folyamat létezik:

  • Előtérbeli folyamatok (interaktív folyamatoknak is nevezik) – ezek inicializálása és vezérlése terminálmunkameneten keresztül történik. Más szóval, az ilyen folyamatok elindításához egy felhasználónak kell csatlakoznia a rendszerhez; nem indultak el automatikusan a rendszerfunkciók/szolgáltatások részeként.
  • Háttérfolyamatok (más néven nem interaktív/automatikus folyamatok) – olyan folyamatok, amelyek nem csatlakoznak terminálhoz; nem várnak el semmilyen felhasználói beavatkozást.

Mi az a Daemons

Ezek a háttérfolyamatok speciális típusai, amelyek a rendszer indításakor indulnak el, és szolgáltatásként folyamatosan futnak; nem halnak meg. Rendszerfeladatokként indulnak el (szolgáltatásként futnak), spontán módon. Ezeket azonban a felhasználó vezérelheti az init folyamaton keresztül.

Folyamat létrehozása Linuxban

Egy új folyamat általában akkor jön létre, amikor egy meglévő folyamat pontos másolatot készít magáról a memóriában. Az utódfolyamat környezete megegyezik a szülővel, de csak a folyamat azonosító száma különbözik.

Két hagyományos módszer létezik egy új folyamat létrehozására Linuxban:

  • A System() függvény használata – ez a módszer viszonylag egyszerű, azonban nem hatékony, és jelentős biztonsági kockázatokkal jár.
  • A fork() és az exec() függvény használata – ez a technika kissé fejlett, de nagyobb rugalmasságot, sebességet és biztonságot kínál.

Hogyan azonosítja a Linux a folyamatokat?

Mivel a Linux egy többfelhasználós rendszer, ami azt jelenti, hogy különböző felhasználók különböző programokat futtathatnak a rendszeren, a program minden futó példányát egyedileg kell azonosítania a kernelnek.

A programot a folyamatazonosítója (PID), valamint a szülőfolyamatok azonosítója (PPID) azonosítja, ezért a folyamatok további kategóriákba sorolhatók:

  • Szülőfolyamatok – ezek olyan folyamatok, amelyek futás közben más folyamatokat hoznak létre.
  • Alárendelt folyamatok – ezeket a folyamatokat más folyamatok hozzák létre futás közben.

Az Init folyamat

Az Init folyamat a rendszer összes folyamatának anyja (szülője), ez az első program, amely a Linux rendszer indításakor fut le; ez kezeli a rendszer összes többi folyamatát. Maga a kernel indítja el, így elvileg nincs szülőfolyamata.

Az init folyamat folyamatazonosítója mindig 1. Örökbefogadóként működik minden árva folyamatnál.

A pidof paranccsal megkeresheti egy folyamat azonosítóját:

pidof systemd
pidof top
pidof httpd

Az aktuális shell folyamatazonosítójának és szülőfolyamat-azonosítójának megkereséséhez futtassa:

echo $$
echo $PPID

Folyamat indítása Linuxban

Miután futtatott egy parancsot vagy programot (például a cloudcmd – CloudCommander), az elindít egy folyamatot a rendszerben. Egy előtérben lévő (interaktív) folyamatot a következőképpen indíthat el, az csatlakozik a terminálhoz, és a felhasználó elküldheti a bemenetet:

cloudcmd

Linux háttérmunkák

Egy folyamat háttérben történő indításához (nem interaktív) használja a & szimbólumot, itt a folyamat nem olvassa be a felhasználó bemenetét, amíg az előtérbe nem kerül.

cloudcmd &
jobs

A folyamatot a háttérbe is küldheti a [Ctrl + Z] használatával felfüggesztve, ez a SIGSTOP jelet küldi a folyamatnak, így leállítja annak működését; tétlenné válik:

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

Ha továbbra is futni szeretné a fent felfüggesztett parancsot a háttérben, használja a bg parancsot:

bg

Ha háttérfolyamatot szeretne az előtérbe küldeni, használja az fg parancsot a feladatazonosítóval együtt, így:

jobs
fg %1

A következőket is kedvelheti: Hogyan indítsa el a Linux parancsot a háttérben és a folyamat leválasztását a terminálban

Egy folyamat állapotai Linuxban

A végrehajtás során egy folyamat egyik állapotból a másikba változik a környezetétől/körülményeitől függően. Linuxban egy folyamatnak a következő lehetséges állapotai vannak:

  • Futás – itt vagy fut (ez az aktuális folyamat a rendszerben), vagy készen áll a futtatásra (az egyik CPU-hoz való hozzárendelésre vár).
  • Várakozás – ebben az állapotban egy folyamat esemény bekövetkezésére vagy rendszererőforrásra vár. Ezenkívül a kernel kétféle várakozási folyamat között is különbséget tesz; a megszakítható várakozási folyamatok – megszakíthatók jelzésekkel és megszakíthatatlan várakozási folyamatok – közvetlenül hardveres feltételek mellett várakoznak, és semmilyen esemény/jel nem szakíthatja meg.
  • Leállítva – ebben az állapotban egy folyamat leállt, általában jel vételével. Például egy folyamat, amely hibakeresés alatt áll.
  • Zombi – itt egy folyamat halott, leállították, de még mindig van bejegyzése a folyamattáblázatban.

Az aktív folyamatok megtekintése Linuxban

Számos Linux-eszköz létezik a rendszeren futó folyamatok megtekintéséhez/listázásához, a két hagyományos és jól ismert a ps és a top parancs:

1. ps Parancs

Információkat jelenít meg a rendszer aktív folyamatairól, az alábbiak szerint:

ps 
ps -e | head 

2. lap tetejére – Rendszerfigyelő eszköz

A top egy hatékony eszköz, amely dinamikus, valós idejű nézetet kínál a futó rendszerről, ahogy az alábbi képernyőképen is látható:

top 

Olvassa el ezt a további legnépszerűbb használati példákért: 12 TOP parancspélda Linuxban

3. pillantások – Rendszerfigyelő eszköz

A glances egy viszonylag új rendszerfigyelő eszköz fejlett funkciókkal:

glances

Átfogó használati útmutatóért olvassa el a következőt: Glances – Advanced Real Time System Monitoring Tool for Linux

Számos más hasznos Linux rendszerfigyelő eszköz is használható az aktív folyamatok listázására. Nyissa meg az alábbi linket, ha többet szeretne megtudni róluk:

  1. 20 parancssori eszköz a Linux teljesítményének figyelésére
  2. 13 További hasznos Linux megfigyelő eszközök

A folyamatok vezérlése Linux alatt

A Linuxnak is van néhány parancsa a folyamatok vezérlésére, például kill, pkill, pgrep és killall, az alábbiakban néhány alapvető példa ezek használatára:

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

A parancsok alapos használatának, az aktív folyamatok leállításának/leállításának a Linuxban való megismeréséhez nyissa meg az alábbi hivatkozásokat:

  1. Útmutató a Kill, Pkill és Killall parancsokhoz a Linux folyamatok leállításához
  2. Futó folyamatok keresése és leállítása Linuxban

Ne feledje, hogy ezek segítségével megsemmisítheti a nem reagáló Linux alkalmazásokat, amikor a rendszer lefagy.

Jelek küldése a folyamatokba

A folyamatok irányításának alapvető módja a Linuxban az, hogy jeleket küldünk nekik. Számos jelet küldhet egy folyamatnak, hogy megtekinthesse az összes futott jelet:

kill -l

Ha jelet szeretne küldeni egy folyamatnak, használja a kill, pkill vagy pgrep parancsokat, amelyeket korábban említettünk. De a programok csak akkor tudnak reagálni a jelekre, ha úgy vannak programozva, hogy felismerjék ezeket a jeleket.

És a legtöbb jel a rendszer belső használatra szolgál, vagy a programozóknak, amikor kódot írnak. A rendszerfelhasználó számára hasznos jelzések a következők:

  • SIGHUP 1 – elküldi egy folyamatnak, amikor a vezérlő terminál zárva van.
  • SIGINT 2 – a vezérlő terminál elküldi a folyamatnak, amikor a felhasználó megszakítja a folyamatot a [Ctrl+C] billentyűkombinációval.
  • SIGQUIT 3 – elküldi egy folyamatnak, ha a felhasználó kilépési jelet küld [Ctrl+D].
  • SIGKILL 9 – ez a jel azonnal leállítja (leállítja) a folyamatot, és a folyamat nem hajt végre semmilyen tisztítási műveletet.
  • SIGTERM 15 – ez egy programlezáró jel (a kill alapértelmezés szerint ezt küldi).
  • SIGTSTP 20 – a vezérlő terminál elküldi egy folyamatnak, hogy leállítást kérjen (terminálleállás); a felhasználó által kezdeményezett [Ctrl+Z] lenyomásával.

Az alábbiakban példák a kill parancsokra, amelyek leállítják a Firefox alkalmazást a PID használatával, miután lefagy:

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

Ha egy alkalmazást a nevével szeretne megölni, használja a pkill vagy killall parancsot, például:

pkill firefox
killall firefox 

A Linux folyamatprioritás módosítása

A Linux rendszeren minden aktív folyamatnak van prioritása és bizonyos szép értéke. A magasabb prioritású folyamatok általában több CPU-időt kapnak, mint az alacsonyabb prioritású folyamatok.

A root jogosultságokkal rendelkező rendszerfelhasználó azonban befolyásolhatja ezt a nice és a renice parancsokkal.

A top parancs kimenetéből az NI a folyamat szép értékét mutatja:

top  

A nice paranccsal állítson be szép értéket egy folyamathoz. Ne feledje, hogy a normál felhasználók nullától 20-ig szép értéket rendelhetnek a tulajdonukban lévő folyamatokhoz.
Csak a root felhasználó használhat negatív szép értékeket.

Egy folyamat prioritásának renicezéséhez használja a renice parancsot az alábbiak szerint:

renice +8  2687
renice +8  2103

Tekintse meg néhány hasznos cikkünket a Linux-folyamatok kezeléséről és vezérléséről.

  1. Linux-folyamatkezelés: rendszerindítás, leállítás és minden ami között van
  2. Keresse meg a 15 legnépszerűbb folyamatot memóriahasználat szerint a „top” funkcióval kötegelt módban
  3. Keresse meg a legjobban futó folyamatokat a Linux legnagyobb memória- és processzorhasználata alapján
  4. Folyamatnév megkeresése PID-szám használatával Linuxban

Ez minden most! Ha bármilyen kérdése vagy további ötlete van, ossza meg velünk az alábbi visszajelzési űrlapon keresztül.