Hogyan lehet megölni egy folyamatot Linux alatt

How Kill Process Linux



Minden Linux operációs rendszerhez tartozik a kill parancs. Ennek az eszköznek az egyetlen célja a célfolyamat leállítása. Ez egy erőteljes eszköz, amely meglehetősen sokoldalúvá teszi a Linuxot, különösen azokon a szerver- és vállalati területeken, ahol jelentős változtatás/frissítés léphet életbe a teljes gép újraindítása nélkül. Ebben a cikkben bemutatom, hogyan lehet megölni egy folyamatot megöl , pkill és Öld meg mindet .

Egy folyamat megölése

Egy folyamat megöléséhez maroknyi eszközt fogunk használni: megöl , pkill , és Öld meg mindet . Mindegyik alapvetően ugyanúgy működik.







Ezek az eszközök nem szüntetik meg magát a folyamatot. Ehelyett kijelölt jelet küldenek a célfolyamatnak vagy folyamatcsoportoknak. Ha nem adott meg konkrét jelet, akkor a SIGTERM kerül elküldésre alapértelmezett jelként. Azonban számos támogatott jel létezik, például SIGKILL, SIGHUP stb.



Itt található az alapvető parancsstruktúra megöl , pkill és Öld meg mindet .



$megöl <signal_or_options> <PID(s)>
$ pkill<signal_or_options> <folyamat_neve>
$Öld meg mindet <választási lehetőség> <folyamat_neve>

Amikor csak lehetséges, ajánlott használni megöl .





Megöl , pkill és Öld meg mindet helyszíneken

A Kill az alapértelmezett parancs egy folyamat befejezésére.



$megöl --Segítség

A /usr /bin könyvtárból fut.

$melyik megöl

Előnye, hogy hozzáférést biztosít a pkill -hez, egy másik, a killhez hasonló parancshoz, amely lehetővé teszi a folyamat lezárását a nevük alapján.

$pkill--Segítség

$melyikpkill

Egyes alkalmazások ugyanazon futtatható fájl több folyamatát futtatják. Ha több azonos nevű folyamatot szeretne befejezni, használja a killall eszközt.

$Öld meg mindet --Segítség

$melyik Öld meg mindet

Az összes futó folyamat felsorolása

A legelső feladat a PID (folyamatazonosító szám) és/vagy a befejezni kívánt folyamatnév azonosítása. Ebben a példában a Firefoxot fogom használni a befejezés célfolyamataként. Futtassa a következő parancsot a rendszer összes futó folyamatának felsorolásához.

$ps -NAK NEK

A legtöbb feladathoz ismernünk kell a célfolyamat PID -jét. Bizonyos helyzetekben azonban a folyamatnév használata megfelelőbb.

Ha ismeri a célfolyamat pontos nevét, közvetlenül lekérheti a PID -t pidof .

$pidof <folyamat_neve>

Egy másik érdekes eszköz a célfolyamatra vonatkozó információk begyűjtésére a pgrep. Kifejezetten erre a célra tervezték.

$pgrep<választási lehetőség> <folyamat_neve>

Öld meg a jeleket

Most nézzük meg azokat a jeleket, amelyeket az ölési eszközök támogatnak. Ez egy hatalmas lista. Természetesen nem mindegyikre van szükség minden egyes helyzetben. Valójában a legtöbb helyzet csak néhány jelzést igényel.

Először is, nézzük meg a listát, amely megöli a támogatásokat.

$megöl -az

Kétféleképpen határozhatja meg, hogy melyik jelet kívánja küldeni. Használhatja a teljes jelnevet vagy annak megfelelő értékét.

$megöl-<jel> <PID>

Vagy,

$megöl-<jel_érték> <PID>

A legnépszerűbb jelek a SIGHUP (1), SIGKILL (9) és SIGTERM (15). Általában a SIGTERM az alapértelmezett és legbiztonságosabb módja a célfolyamat leállításának.

A pkill esetében a támogatott jel ugyanaz, mint a kill. A killall esetében azonban a támogatott jelek száma és a jelnevek eltérőek.

$Öld meg mindet -az

Egy folyamat megölése

Egy folyamat megöléséhez szükségünk van a célfolyamat PID -jére. Feltételezve, hogy rendelkezik a PID azonosítóval, futtassa a következő parancsot a megöléséhez.

$megöl <választási lehetőség> <PID>

Itt a kill a SIGTERM alapértelmezett jelet küldi a PID -nek. Ha több folyamatot szeretne befejezni, akkor említse meg az összes PID -t szóközzel elválasztva.

$megöl <választási lehetőség> <PID_1> <PID_2>

Adjuk meg, hogy melyik jelet szeretnénk küldeni a célpontnak.

Csak a nevét használva szeretné befejezni a folyamatot? Használj pkill -t.

$pkill<választási lehetőség> <folyamat_neve>

Bizonyos esetekben előfordulhat, hogy egy adott alkalmazásban túl sok folyamat fut. Mindezen PID-k beírása időigényes és fárasztó. Ilyen esetekben a killall eszközt fogjuk használni. Nagyon hasonló a killhez, de a folyamat nevével működik.

$Öld meg mindet <választási lehetőség> <folyamat_neve>

Például a Firefox futtatásakor egy maroknyi folyamatot indít el. Ha mindet egyszerre akarja megölni, futtassa ezt a parancsot.

$Öld meg mindetfirefox

Meg szeretné szakítani az összes folyamatot, amely egy adott felhasználó alatt fut? Killall képes elvégezni a munkát, nem probléma. Legyen óvatos, amikor ezt futtatja, mivel ez tönkreteheti a rendszert és más problémákat okozhat. Nem fog működni, ha megpróbálja leállítani azokat a folyamatokat, amelyek más jogosultsággal rendelkező másik felhasználó alatt futnak.

$Öld meg mindet -u <felhasználó>

Engedélykonfliktus

A Linux felhasználói hierarchia jellegzetes tulajdonságai akkor is érvényesek, amikor egy alkalmazást le akar állítani. A felhasználó nem fejezheti be a magasabb jogosultsággal futó folyamatokat, csak az azonos/alacsonyabb jogosultságú folyamatokat. Ezenkívül a felhasználó nem tudja manipulálni a különböző felhasználók alatt futó folyamatokat.

Vegyük például az igen parancsot. Ha jelenlegi felhasználónak hívják, akkor könnyen leállítható a kill használatával.

$megöl Igen

Most mi van, ha Igen alatt futott gyökér ? A kill hívása, mint a jelenlegi felhasználó, nem fog működni.

Hasonlóképpen, ha egy folyamat egy másik felhasználó alatt futott, akkor nem szüntetheti meg azt egy másik felhasználói fiókból.

Végső gondolatok

Ebben a cikkben csak a parancsok alapjait és gyakori használatát mutattuk be. Ezek az ölőeszközök ennél többre képesek. Annak érdekében, hogy alapos ismeretekkel rendelkezzen bármely eszköz képességeiről, javaslom, hogy nézze meg a man oldalt.

$Férfi megöl

$Férfipkill

Élvezd!