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ég | Leírás |
-u | lista folyamatazonosító, amely egy adott felhasználó tulajdonában van |
-c | megszámolja a megfelelő folyamatok számát |
-ÉN | csak a folyamatneveket listázza ki |
-a | listá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ók | Leírás |
-f | egyezik a teljes argumentumokkal, beleértve a szóközöket, idézőjeleket és speciális karaktereket |
-u | tájékoztatja a pkill folyamatot, hogy megfeleljen a megadott felhasználó által futtatott folyamatnak |
-1 | újratölti a folyamatot |
-9 | megöli a folyamatot |
-15 | kecsesen 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ó.
Jel | Leí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.