Android

Hogyan lehet megölni egy folyamatot a linuxban?

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Tartalomjegyzék:

Anonim

Találkozott már valaha azzal a helyzettel, amikor elindított egy alkalmazást, és az alkalmazás használata közben hirtelen nem reagál és váratlanul összeomlik? Megpróbálja újraindítani az alkalmazást, de semmi sem történik, mert az eredeti alkalmazási folyamat soha nem áll le teljesen.

Nos, egy időben mindannyian megtörtént, nem igaz? A megoldás az alkalmazás befejezése vagy megsemmisítése. De hogyan?

Szerencsére a Linuxban számos segédprogram található, amelyek lehetővé teszik a hibás folyamatok megsemmisítését., megmutatjuk, hogyan lehet a kill , killall és pkill parancsokat felhasználni egy folyamat pkill Linuxon.

A legfontosabb különbség ezen eszközök között az, hogy a kill a folyamatokat az azonosítószám alapján (PID) killall , míg a killall és a pkill parancsok a futó folyamatokat a nevük és egyéb attribútumok alapján pkill .

A rendszeres felhasználók megsemmisíthetik saját folyamataikat, de nem a többi felhasználóhoz tartozókat, míg a gyökér felhasználó megölheti az összes folyamatot.

A rendszer elpusztító jelei

kill , killall és pkill egy adott jelet küld a megadott folyamatoknak vagy folyamatcsoportoknak. Ha nincs megadva jel, az egyes szerszámok 15 TERM ( TERM ).

A leggyakrabban használt jelek:

  • 1 (-HUP): a folyamat újratöltése. 9 (-KILL): egy folyamat megölése. 15 (-TERM): a folyamat kecses leállítása.

A jeleket háromféleképpen lehet meghatározni:

  • szám (pl. -1) használata a „SIG” előtaggal (pl. -SIGHUP) a „SIG” előtag nélkül (pl. –HUP).

A -l opcióval listázhatja az összes rendelkezésre álló jelet:

kill -l # or killall -l

Az alábbiakban ismertetett lépések az összes Linux disztribúción működni fognak.

A folyamatok leállítása a kill paranccsal

A folyamatnak a kill paranccsal történő kill először meg kell találnia a folyamat PID-jét. Különféle parancsokkal, például top , ps , pidof és pgrep parancsokkal teheti meg.

Tegyük fel, hogy a Firefox böngésző nem reagál, és meg kell ölnie a Firefox folyamatát. A folyamat azonosítójának megkereséséhez használja a pidof parancsot:

pidof firefox

A parancs kinyomtatja az összes Firefox folyamatot:

2551 2514 1963 1856 1771

Amint megtudja, hogy a Firefox feldolgozza a PID-ket, hogy megszüntesse mindet, a TERM jelet küldi:

kill -9 2551 2514 1963 1856 1771

A folyamatok killall a killall parancs segítségével

A killall parancs leállítja az összes olyan programot, amely egy megadott névnek felel meg.

Ugyanazzal a forgatókönyvvel, mint korábban, megölheti a Firefox folyamatot a következő gépeléssel:

killall -9 firefox

killall számos lehetőséget elfogad, például jelek küldését az adott felhasználó tulajdonában lévő folyamatokhoz, a folyamatok nevének illesztését a reguláris kifejezésekhez és a létrehozási időt. Az összes opció listáját a killall (érvelés nélküli) gépelésével kaphatja meg a terminálon.

Például az összes „sara” felhasználóként futó folyamat leállításához futtassa a következő parancsot:

sudo killall -u sara

A folyamatok pkill a pkill parancs segítségével

pkill leállítja azokat a folyamatokat, amelyek megfelelnek a parancssorban megadott mintának:

pkill -9 firefox

A folyamat nevének nem kell egyeznie.

A pkill segítségével jelet küldhet az adott felhasználó tulajdonában lévő folyamatoknak is. Csak a „sara” felhasználó tulajdonában lévő Firefox folyamatok megöléséhez írja be:

pkill -9 -u sara firefox

Következtetés

A nem reagáló programok killall a kill , killall és pkill parancsokkal egyszerű feladat. Csak a folyamat nevét vagy PID-t kell tudnia.

öld meg a terminált