Weboldal keresés

Hogyan öljük meg a Linux folyamatot a Kill, Pkill és Killall használatával


Linuxban a folyamat leállítása egy futó program végrehajtásának leállítását vagy leállítását jelenti. Minden futó folyamathoz egyedi azonosítószám tartozik, amely a Folyamatazonosító (PID) néven ismert, amely segít a rendszernek nyomon követni az éppen aktív folyamatokat.

Ebben a cikkben megtudjuk a Linux leállítási folyamatát, valamint azt, hogy hogyan lehet egy folyamatot megtalálni és leállítani különböző eszközök és parancsok segítségével a Linuxban.

Mi a Linux folyamat

Egyszerűen fogalmazva, egy folyamat olyan, mint egy program, amely jelenleg fut a rendszeren, és minden folyamatnak megvan a saját speciális azonosítója (PID). Néha azonban egy futó program vagy folyamat hibásan működhet, leállhat, vagy túl sok rendszererőforrást használ fel.

Amikor ez megtörténik, le kell állítanunk vagy „meg kell ölnünk” a folyamatot, és itt jön jól a kill parancs.

Mi az a Kill Command

A „kill” parancs kulcsfontosságú segédprogram, amely lehetővé teszi a felhasználók számára, hogy jelzéseket küldjenek (leállítás vagy leállítás) a jelenleg futó folyamatoknak, utasítva őket, hogy kecsesen lépjenek ki vagy kényszerítettek le.

A kill parancs akkor hasznos, ha különböző programok tevékenységeit kell kezelnie és vezérelnie a Linux rendszeren, például:

  • Minden automatizált folyamat leállításához.
  • Egy véletlenül elindított folyamat megállítására.
  • Túl sok memóriát használó folyamat leállítása.
  • Bármilyen futó folyamat erőszakos leállítása Linux alatt.
  • A háttérben futó folyamat leállítása.

A /usr/bin fájlból származó kill parancs használatával néhány extra szolgáltatást biztosít a folyamatok leállításához a folyamat neve alapján a pkill használatával, amely azonosítja a folyamatokat a nevük.

Folyamatazonosító vagy folyamatnév keresése

A futó folyamat leállítása előtt feltétlenül azonosítani kell annak folyamatazonosítóját (PID) vagy nevét a következő ps paranccsal, amely információkat jelenít meg a rendszeren futó összes folyamatról a PID-vel (folyamatazonosítóval) és egyéb információkkal együtt.

ps -ef

Ha meg szeretne találni egy adott folyamatnevet PID, használhat egy grep parancsot, amely felsorolja a rendszeren futó összes folyamatot, és kiszűri az eredményeket, hogy csak a „mariadb< kifejezést tartalmazók jelenjenek meg.“.

ps -ef | grep mariadb

Alternatív megoldásként a folyamat PID-jét név szerint közvetlenül is megkeresheti a pgrep paranccsal, az ábrán látható módon.

pgrep mariadb

Hogyan lehet megölni egy folyamatot Linuxban

Mielőtt megöl, leállít vagy leállít egy folyamatot, gondolja át az engedélyeket. Ha Ön root felhasználó, bármilyen folyamatot leállíthat, de ha Ön normál felhasználó, akkor a parancs előtt hozzá kell adnia egy „sudo”-t, vagy át kell váltania root felhasználóra a „ su” a befejező parancs használatához.

A kill parancs általános szintaxisa a következő:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

Egy kill parancsnál a jel neve lehet:

A fenti viselkedésből egyértelműen kiderül:

  • A SIGTERM a folyamat leállításának alapértelmezett és legbiztonságosabb módja.
  • A SIGHUP a folyamat leállításának kevésbé biztonságos módja, mint a SIGTERM.
  • A SIGKILL a fenti három közül a legbiztonságosabb módja egy folyamat leállításának, amely mentés nélkül fejezi be a folyamatot.

Linuxban különféle jelek használhatók a folyamatok leállítására, befejezésére vagy szüneteltetésére. A következő paranccsal listázhatja az összes elérhető ölőjelet a nevükkel és a megfelelő számokkal együtt

kill -l

Bár több jel is elérhető, de a legtöbb esetben csak a SIGKILL (9) és a SIGTERM (15) jeleket használjuk.

Egy folyamat leállításához ismernünk kell egy folyamat folyamatazonosítóját. A Folyamat egy program példánya. Minden alkalommal, amikor egy program elindul, automatikusan egy egyedi PID generálódik az adott folyamathoz.

A Linuxban minden folyamathoz tartozik pid. Az első folyamat, amely a Linux rendszer indításakor indul, a – init process, ezért a legtöbb esetben „1” értéket kap.

Az Init a főfolyamat, és így nem lehet leállítani, ami biztosítja, hogy a főfolyamat véletlenül se öljön meg. Az Init dönt, és hagyja magát megölni, ahol a kill csupán egy leállítási kérés.

Mielőtt előrébb lépnénk és végrehajtanánk egy kill parancsot, néhány fontos pontot meg kell jegyeznünk:

  • Egy felhasználó megölheti az összes folyamatát.
  • Egy felhasználó nem tudja megölni egy másik felhasználó folyamatát.
  • A felhasználó nem tudja megölni a rendszer által használt folyamatokat.
  • A root felhasználó megölheti a rendszerszintű folyamatot és bármely felhasználó folyamatát.

A mariadb folyamat PID leállításához használja a kill parancsot az ábrán látható módon.

kill -9 3383

A fenti parancs leállítja a pid=3383 jelzésű folyamatot, ahol a PID a folyamat numerikus értéke.

Ugyanennek a funkciónak egy másik módja is átírható a.

kill -SIGTERM 3383

Hasonlóképpen a „kill -9 PID” hasonló a „kill -SIGKILL PID” kifejezéshez, és fordítva.

A folyamat leállásának megerősítéséhez ismét használhatja a ps parancsot.

ps -ef | grep mariadb

Hogyan lehet több folyamatot megölni Linuxban

Ha több folyamatot le szeretne zárni a Linuxban a folyamatazonosítóik (PID) használatával, használhatja a kill parancsot a megfelelő PID számokkal kombinálva.

Először a ps vagy a pgrep paranccsal azonosítsa a leállítani kívánt folyamatok PID-jét.

ps aux | grep apache2
OR
pgrep apache2

Ha megvan a PID-k, használja a kill parancsot a leállításukhoz.

kill -9 PID1 PID2 PID3

Hogyan lehet megölni egy folyamatot Linuxban a folyamatnév használatával

Egy folyamat folyamatnévvel történő leállításához a pkill parancsot használjuk, amely a kill parancs egyik változata, amely lehetővé teszi a folyamat nevének vagy mintának megemlítését keressen meg egy folyamatot.

Mielőtt megölné, tisztában kell lennie a folyamat nevével, és rossz folyamatnév beírása becsaphatja.

pkill mysqld

Mi a teendő, ha egy folyamatnak túl sok példánya és több gyermekfolyamata van, akkor van egy „killall” parancsunk, amely a folyamat nevét veszi argumentumként a folyamatszám helyett.

Folyamat leállítása Linuxban a Killall paranccsal

A killall és kill közötti fő különbség az, hogy a killall a nevével fejezheti be a folyamatot, míg a kill parancs a folyamatazonosítóra (pid) támaszkodik.

Az összes mysql-példány és a gyermekfolyamatok leállításához használja a következő parancsot.

killall mysqld
OR
pkill mysqld

Az alábbi parancsok bármelyikével bármikor ellenőrizheti a folyamat állapotát, hogy fut-e vagy sem.

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

A Linux grafikus rendszerek olyan megfigyelő eszközök, mint a htop vagy a gnome-system-monitor felhasználóbarát felületet biztosítanak a folyamatok megtalálásához és leállításához.

Következtetés

Tőlem egyelőre ennyi. Hamarosan visszatérek egy másik érdekes és informatív témával. Addig is maradjon velünk, csatlakozzon a Tecminthoz, és vigyázzon egészségére. Ne felejtse el megosztani értékes visszajelzéseit a megjegyzések részben.