A folyamat név szerinti leállítása Linuxban

Ezekkel a Linux-parancsokkal kényszerítsd ki a helytelenül működő folyamatokat

A „folyamat” jelentését a legegyszerűbb szavakkal megmagyarázni annyi, hogy a rendszer bármely alkalmazásának vagy programjának futó példánya. Előfordulhat, hogy egyszerre több alkalmazást is futtat, például böngészik, zenét hallgat a terminálján stb. Számos háttérfolyamat kapcsolódik ezekhez az alkalmazásokhoz, amelyeket a felhasználó futtat.

Minden alkalmazás vagy program, amely a rendszeren fut, több folyamatot hoz létre az egyetlen alkalmazáshoz társítva. Néha ez probléma lehet, és az egyetlen lehetőség, hogy megszabaduljon ezektől a folyamatoktól.

Egy folyamat „megölése” az egyik hasznos lehetőség, amelyet a Linux kínál a folyamatban lévő folyamatok leállítására, legyen az előtérbeli vagy háttérfolyamat. Ebben a cikkben áttekintjük a hasonló parancsokat megöl, pkill és Öld meg mindet a rendszer bármely folyamatának kilépésére kényszeríteni.

Miért kell megölni egy folyamatot?

Fontos, hogy megértse a folyamat leállításának fogalmát, mielőtt továbblépne ebben az oktatóanyagban. Az ölés nagyon brutálisnak tűnik a fogalom kifejezésére, de átvitt értelemben azt jelenti, hogy erőszakkal megszakítanak egy folyamatot.

Nos, miért szakítanak meg vagy hagynak fel egy folyamatban lévő folyamatot? Ha több folyamat fut a háttérben, mindegyik vagy néhányuk meghibásodhat, és a rendszer hibás működését okozhatja. Ez késlelteti a folyamatban lévő feladatokat, mivel a hibás működés miatt a rendszer egy időre lefagyhat.

Néha úgy tűnik, hogy az összes hibásan működő folyamat kilépése az egyetlen lehetőség a rendszer normál állapotának visszaállítására. A Linux lehetővé teszi egy folyamat leállítását a pid vagy a folyamat neve.

Használni a pgrep parancs

A legtöbb Linux-felhasználó ismeri a grep parancs. A pgrep parancs használható a. hasonló sorain grep.

pgrep parancs használatakor megjeleníti a pid a futó folyamatról a parancsban meghatározottak szerint. Ez a parancs nagyon hasznosnak bizonyul a pkill parancs.

Általános szintaxis:

pgrep [opciók] [minta]

Fontos opciók állnak rendelkezésre a pgrep parancs

választási lehetőségLeírás
-ulista folyamatazonosító, amely egy adott felhasználó tulajdonában van
-cmegszámolja a megfelelő folyamatok számát
-ÉNcsak a folyamatneveket listázza ki
-alistázza ki a folyamat nevének teljes elérési útját

Mutatjuk a használatát pgrep parancsot egy példa segítségével.

pgrep -u gaurav gnome

Itt szeretnénk látni a pids a process gnome, amely a „gaurav” felhasználó tulajdonában van. választási lehetőség -u lehetővé teszi a listázást pids egy adott felhasználó tulajdonában lévő folyamatokról. Ebben az esetben a gaurav felhasználó.

Kimenet:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Ahogy haladunk előre ezzel az oktatóanyaggal, pgrep parancs segít megerősíteni, hogy a folyamat leállt-e, vagy még mindig fut.

Most térjünk át a pkill parancs és végrehajtása.

Használata pkill parancs

Használhatja a pkill parancsot a Linuxban a folyamat leállításához a folyamatnév használatával. Még ha nem is ismeri a pid bizonyos folyamatokat, akkor is leállíthatja az adott folyamatot a pkill parancs.

A folyamatok a teljes vagy részleges nevükkel adhatók meg a használat során pkill parancs. Még ha megadja a folyamat részleges nevét is, a pkill parancs az összes futó folyamatot a parancsban megadott névvel egyezteti.

Szintaxis:

pkill [opciók][process_name_pattern] 

Példa:

Mutassuk meg az aktuálisan futó folyamatokat a tetejére parancs. Használhatja a ps parancsot a folyamatok felsorolásához.

tetejére
tetejére - 14:24:02 fel 3:12, 1 felhasználó, átlagos terhelés: 0.29, 0.48, 0.58 Feladatok: összesen 221, 1 fut, 172 alszik, 0 leállt, 1 zombi %Cpu(k): 5.6 us, 1.0 sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3928240 összesen, 610456 ingyenes, 2233152 használt, 1084632 buff/cache KiB Swap: 38.28, összesen 3 840, 48 1187268 eredménytelenül Mem PID USER PR NI VIRT RES SHR S% CPU% MEM IDŐ + COMMAND 4077 gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13.23 Web Content 3712 gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28,39 MainThread 2010 gaurav 20 0 4084232 111096 45.024 S 1.7 2.8 3: 14.85 gnome-shell 1197 gyökér 20 0 1039612 33704 22988 S 1,0 0,9 3: 04,42 Xorg 1426 CouchDB 20 0 3772396 16908 2520 S 0,7 0,4 1: 50.83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0,7 0,6 0: 06,84 gnome-terminál- 3915 gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0: 54,42 Web Content 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01.21 Web Content 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59,90 Webtartalom 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Webtartalom 16007 gaurav 20 0 41944 3780 3116 R .0 207: top. 

Használata tetejére parancs több folyamatot jelenít meg a terminálon. Próbáljuk meg egy adott névvel megjeleníteni a folyamatot. Használjuk a grep parancs egy olyan folyamat megjelenítéséhez, amelynek neve megegyezik a „mongo” karakterlánccal.

top | grep -i mongo

Jegyzet: Itt az -i opciót használtam, hogy a keresést érzéketlenné tegyem a kis- és nagybetűk között.

A parancs kimenete megjeleníti a „mongo” névnek megfelelő folyamatokat

 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.22 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.31 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.40 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03.45 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03.48 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,52 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod

Most a pkill parancsot a „mongo” nevű folyamat megölésére.

pkill mongo

Ez a parancs most megöli a mongo folyamatot. Megerősíthetjük, hogy a folyamatot ki kellett-e állítani a következő használatával pgrep parancs, amely megjeleníti a pid a futó folyamatot a felhasználó által meghatározott kritériumok szerint.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Ez a parancs nem ad vissza értéket. Ez megerősíti, hogy a „mongó” folyamatot most megölték a pkill parancs.

Gyakran használt opciók pkill parancs

Használata közben a pkill paranccsal szükségünk lesz az említett opciókra a megfelelő és erőfeszítés nélküli használathoz pkill parancs.

OpciókLeírás
-fegyezik a teljes argumentumokkal, beleértve a szóközöket, idézőjeleket és speciális karaktereket
-utájékoztatja a pkill folyamatot, hogy megfeleljen a megadott felhasználó által futtatott folyamatnak
-1újratölti a folyamatot
-9megöli a folyamatot
-15kecsesen megszakít egy folyamatot

Lássunk még egy példát pkill parancs segítségével -f választási lehetőség.

Jelenleg két parancs fut a terminálon, az alábbiak szerint.

ping bbc.com ping youtube.com

Mindkét folyamatot a ping parancs. Tegyük fel, hogy csak egy „ping youtube.com” folyamatot szeretnénk leállítani, akkor használnunk kell a -f opcióval a pkill parancs, amely megöl egy adott nevű folyamatot, beleértve a szóközöket és a folyamatnév idézőjeleit.

Parancs:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

Eredmény:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bájt adat. 64 bájt a bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 bájt a bom12s08-in-f14.1e100.2006-ból (q1462.2006): = 117 idő = 121 ms 64 bájt a bom12s08-in-f14.1e100.net-től (142.250.67.206): icmp_seq=206 ttl=117 idő=86,5 ms 64 bájt a bom12s08-in-f14.1.674 bájt-in-f14.1.5.602 ): icmp_seq=207 ttl=117 time=105 ms Megszakadt gaurav@ubuntu:~$ 

Itt a „ping youtube.com" folyamat most leállt és a "ping bbc.com” még mindig fut a terminálon.

Abban az esetben, ha használtuk volna a pkill ping parancsot, megölte volna mind a ping folyamatokat, ami nem kívánatos.

-val használt jelek pkill parancs

pkill kilépésre kényszerít egy folyamatot azáltal, hogy meghatározott jelet küld a folyamatnak. Három lehetséges jel van, amely pkill parancsot küldhet a folyamatnak a felhasználó által adott parancstól függően.

Az alábbiakban az elérhető jelek listája található.

JelLeírás
1(HUP)újratölti a megadott folyamatot
9 (MEGÖL)megöli a megadott folyamatot
15 (TERM)finoman leállítja vagy megszakítja a megadott folyamatot

Ebben az oktatóanyagban nagymértékben támaszkodunk a MEGÖL jel. Nézzünk meg néhány példát, hogy jobban megértsük.

Használni a pgrep parancsot kap a pid illeszkedik az apache névhez.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill - Öld meg az apache-t

VAGY használhatja a parancsot számokkal is (pl. 1, 9, 15)

pkill -9 apache

A fent bemutatott mindkét parancs megöli az apache folyamatot. Megerősítés a pgrep parancsoljon újra.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Ahogy a pgrep parancs nem ad vissza kimenetet, bizonyítja, hogy a process apache megölték.

Következtetés

Ebben az oktatóanyagban megtudtuk a pkill parancsot, és hogyan használják a folyamat leállítására közvetlenül a folyamatnév használatával. Megtudtuk továbbá a pgrep parancs, amely egy adott felhasználó által futtatott folyamat folyamatazonosítójának lekérésére szolgál. A pgrep parancs lehetővé teszi számunkra, hogy keresztellenőrizzük, hogy a folyamat megszakadt-e.