Ukazi A-Z

Kako ubiti ali končati proces Linuxa Končni vodnik

Kako ubiti ali končati proces Linuxa Končni vodnik

Večprocesorski operacijski sistemi, kot sta Linux in BSD, uporabljajo več načinov za povečanje izkoriščenosti CPU. Proces je preprosto program v izvedbi. Ker se bo v določenem času izvajalo več procesov Linuxa, je upravljanje procesov v Linuksu izredno ključnega pomena. Uporabniki se pri izvajanju preveč programov pogosto srečujejo s težavami, kot je krčenje virov CPU. Takšne situacije se pojavijo, ko CPU ne zmore vse večjega števila procesov. Čeprav to ni povsem odvisno od moči vašega procesorja, je lahko obvladovanje obešenih ali zombi procesov precej moteče. Da bi vam olajšali takšne dogodke, opisujemo nekaj običajnih načinov ubijanja teh procesov.

Obvladajte upravljanje neodzivnega procesa v Linuxu


Izvedeli boste več načinov za zaustavitev procesa Linux, ki se sploh ne odziva. Če prihajate iz sistema Windows, ste morda seznanjeni s kombinacijo tipk Ctrl + Alt + Delete. Uporabniki Maca imajo podobno metodo Command + Option + Escape za ubijanje zamrznjenih procesov. Linux je veliko bolj vsestranski kot njegovi kolegi in ponuja več načinov za reševanje mrtvih / neodzivnih procesov.

Različne metode ubijanja mrtvih procesov Linuxa


Opisali bomo predvsem dve metodi za ubijanje zombi procesov. Za prvo metodo bomo uporabili terminal Linux. Za to bomo najprej morali identificirati ID procesa. Po uspešnem pridobivanju lahko s tem PID ubijemo program tako, da mu pošljemo posebne signale.

Izvedeli boste tudi, kako izvajati takšna opravila za ubijanje v Linuxu, iz grafičnega uporabniškega vmesnika ali okna X. Izkoristili bomo 'Sistemski monitor' za to na voljo v Ubuntuju. Čeprav gre za aplikacijo GNOME, so podobna orodja na voljo tudi za druga namizna okolja Linux.

Iz ukazne vrstice zaključite neodziven postopek


Obstaja več orodij za ukinitev neodzivnega ali obešenega procesa iz ukazne vrstice, vključno z ubiti, pkill, in killall. Ti ukazi delujejo tako, da tem neodzivnim procesom pošiljajo določene signale. Potrebovali boste ID procesa oz PID informacije, tako da jim lahko pošljete zahtevani zaključni signal.

PID ali ID procesa je enolična številka, ki identificira postopek. Te ustvari jedro Linuxa med izvajanjem, načrtovalnik procesov pa nadzoruje njihove CPU aktivnosti. Torej, kadar koli prikličete aplikacijo, bo jedro najprej ustvarilo potrebne procese in jim dodelilo te edinstvene vrednosti PID. S postopkom je lahko povezanih več PID-jev. Poleg tega ima vsak postopek en sam nadrejeni postopek z edinstvenim PPID (ID nadrejenega procesa).

Torej, če lahko odkrijete ta PPID, boste lahko poslali signal za ubijanje s programi, zasnovanimi v ta namen. Spodaj boste izvedeli, kako preveriti tekoče procese v Linuxu in prepoznati njihov PPID iz terminala.

Poiščite informacije o PPID


PPID procesa lahko ugotovite z uporabo več ukazov za upravljanje procesov v Linuxu, kot je pidof, pstree, in pgrep. Poglejmo si jih enega za drugim in poglejmo, kako pridobiti PID procesa Linux.

1. način: Uporaba ukaza ps


Ukaz ps v Linuxu prikaže vse tekoče procese skupaj z drugimi informacijami, povezanimi s postopki, kot je PID v terminalu. Ta ukaz lahko uporabimo za seznam vseh procesov in nato z uporabo ukazov grep za Linux filtriramo določen postopek. Prikazati nam mora informacije o postopku, ki nas zanimajo.

$ nano> / dev / null &
$ ps pomožno | grep "nano"

Najprej smo v ozadju poklicali urejevalnik besedil za Linux. Nato smo z ukazom ps skupaj z ukazom grep ugotovili tudi PPID tega urejevalnika. Izhod lahko vsebuje več ID-jev procesa, vendar nas zanima samo prvi, saj je to naš PPID. Za iskanje teh informacij lahko uporabimo tudi ukaz Linux awk, kot je prikazano spodaj.

$ ps pomožno | awk '/ nano / print $ 2'

Ta ukaz je bolj prilagodljiv, saj zatira vse nepomembne informacije. Prikazali bodo samo informacije o PPID, ki jih iščemo.

2. način: Uporaba ukaza pstree


Ukaz pstree nam daje drevesni pogled na vse tekoče procese. Ponuja grafični pogled seznama opravil Linuxa v terminalskem oknu. S tem ukazom si lahko ogledate PPID in vse informacije o PID procesa. Oglejte si spodnje primere, če želite izvedeti, kako izkoristiti pstree za iskanje PPID določenega postopka.

$ nano> / dev / null &
$ pstree -p | grep 'nano' $ pstree -p | awk '/ nano / print $ NF'

Najprej smo ustvarili postopek v ozadju z uporabo prvega ukaza. Drugi ukaz nato pridobi PPID tega procesa z uporabo ukaza grep v Linuxu. Na koncu nam tretji ukaz pokaže, kako pridobiti to vrednost z ukazom awk.

3. način: Uporaba ukaza pgrep


Ukaz pgrep je eden najlažjih ukazov za upravljanje procesov v Linuxu. Preveri seznam vseh delujočih procesov in v našem primeru natisne PPID določenega procesa v standardnem izhodu ali terminalu. Deluje tako, da izvaja ujemanje regularnih izrazov in je izjemno primeren za pisanje skriptov lupine Linuxa.

$ nano> / dev / null &
$ pgrep 'nano'

Nano proces smo ustvarili podobno kot v prejšnjih primerih. Nato smo z ukazom pgrep dobili njegov PPID. Ko dobimo to vrednost, lahko zelo enostavno izvedemo nalogo ubijanja v Linuxu.

4. metoda: Uporaba ukaza pidof


Ukaz pidof je še en preprost, a uporaben način določanja PPID procesa Linux. Prikaže PPID in vse druge PID, povezane s postopkom. Oglejte si spodnji pregled, da vidite, kako to uporabiti v praksi.

$ nano> / dev / null &
$ pidof nano $ pidof -s nano

Ko z ukazom pidof preverjate tekoče procese v Linuxu, boste pogosto videli več PID-jev. Običajno je v takih primerih prva ali zadnja številka PPID, odvisno od tega, ali so v naraščajočem vrstnem redu ali v padajočem vrstnem redu. Lahko uporabite -s možnost pidof, da to ublaži. Prikazala bo samo vrednost PPID.

5. metoda: Uporaba zgornjega ukaza


Ukaz top v realnem času omogoča ogled vseh tekočih procesov v Unixu podobnih operacijskih sistemih. To lahko uporabite za prikaz seznama opravil Linuxa v terminalu in iskanje informacij o PID določenega postopka.

$ vrh

Z naslednjimi ukazi pridobite PPID določenega procesa iz izhoda zgornjega ukaza.

$ nano> / dev / null &
$ top -n1 -b | grep 'nano' $ top -n1 -b | awk '/ nano / print $ 1'

Ker top zagotavlja izhod v realnem času, namesto da bi na terminal odnašal statične podatke, smo uporabili -n1 in -b možnost tiskanja statičnega izhoda. Nato lahko informacije PPID pridobite z ukazom grep ali awk v Linuxu.

Ubijte neodziven proces Linuxa


Za pridobivanje PPID neodzivnega postopka lahko uporabite katero koli od zgornjih metod. Ko to enkrat pridobite, je čas, da postopek popolnoma ubijete. Obstaja več ukazov, ki nam to omogočajo, na primer ubiti, pkill, in killall. V naslednjih razdelkih bomo videli, kako delujejo posamezno.

1. metoda: Uporaba ukaza kill


Ukaz kill pogosto uporabljajo skrbniki Linuxa zaradi enostavnosti in robustnih ukrepov. Potrebuje PID procesa in signal. Jedro ubije / ustavi izvajanje postopka na podlagi tega signala. Z naslednjim ukazom si lahko ogledate vse razpoložljive signale za ukaz kill.

$ kill -l

Kot lahko vidite, kill ponuja 64 različnih signalov. Vendar bomo v tem priročniku razpravljali le o dveh. To sta signal 9 (SIGKILL) in signal 15 (SIGTERM). SIGTERM ali signal 15 je varna metoda za ubijanje neodzivnega procesa. SIGKILL ali signal 9 pa sila ubije proces Linuxa.

$ kill -9 8631 $ kill -KILL 8631

Zgornji ukazi so enakovredni in bodo prisilno ubili postopek, ki ima PID 8631. To je PPID procesa "nano" v mojem sistemu. Zamenjajte to s PID neodzivnega procesa v vašem sistemu.

$ kill -15 8631 $ kill -TERM 8631

Zgornji ukazi so prav tako enakovredni in bodo postopek elegantno ubili. Zato lahko traja nekaj časa, preden postopek ubijemo. Poleg tega boste morda morali priložiti sudo pred ukazom kill, če je postopek v lasti drugega uporabnika.

2. metoda: Uporaba ukaza pkill


Ukaz pkill je eden najbolj vsestranskih ukazov za upravljanje procesov v Linuxu. Omogoča nam, da ubijemo neodziven postopek na podlagi njegovega imena, PID-a, lastnika in drugih atributov izvajalnega okolja. Je popolno orodje za zagon uporabnikov ali ljudi, ki ne poznajo številnih standardnih ukazov terminala.

$ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano

Za ubijanje procesa zombija / neodzivnosti v Linuxu lahko uporabite katerega koli od zgornjih ukazov pkill. Uporabi -e možnost, če želite potrditev opravila Linux kill. Ukaz pkill uporabnikom omogoča tudi pošiljanje določenih zaključnih signalov.

3. način: Uporaba ukaza killall


Ukaz killall uporabnikom omogoča, da na podlagi njihovih imen ubijejo neodzivne procese. Je enostavnejši za uporabo, vendar lahko predstavlja težave, če niste previdni. Ker killall zaključi procese na podlagi imen, vedno obstaja verjetnost, da postopek naključno ubijete. Če so na primer v vašem sistemu na voljo različne različice nano, jih bo prvi primer ubil.

$ killall nano $ killall --verbose nano $ killall --interactive nano $ killall --signal KILL nano

Prvi primer prikazuje osnovno uporabo ukaza killall v Linuxu. Drugi ukaz bo sporočil, ali je opravilo ubijanja uspešno ali ne, tretji ukaz pa bo zahteval potrditev uporabnika, preden bo ubil postopek. Privzeto killall za procese ubijanja uporablja signal SIGTERM. Vendar lahko signal določite ročno, kot je prikazano v zadnjem primeru.

4. metoda: Uporaba priročnih enojnih oblog


Prava lepota Linuxa je v tem, da uporabnikom omogoča, da ustvarijo prefinjene kombinacije ukazov glede na njihove potrebe. Da bi to dokazali, smo v tem poglavju opisali nekaj enojnih linij.

$ nano> / dev / null &
$ kill -9 $ (pgrep nano) $ ps pomožno | grep -e 'nano' | awk 'print $ 2' | xargs ubiti -9

V prvem primeru smo uporabili interpolacijo lupine za posredovanje PID procesa 'nano' ukazu Linux kill. Drugi primer uporablja več vsakdanjih ukazov terminala in preusmeritev V / I, da ubije postopek. Ko se počutite udobno s terminalom Linux, lahko pripravite svoje čudovite enoprostorce.

5. metoda: Ubijte več procesov z uporabo skriptov lupine Linuxa


Včasih bodo uporabniki morda želeli zaključiti več kot en sam postopek. Takšna opravila lahko enostavno avtomatiziramo s pisanjem preprostih skriptov lupine. Če vas ta tema zanima, si oglejte naš prejšnji vodnik o skriptih lupine Linuxa. Naslednji skript bo pridobil PPID procesov, ki jih želite ubiti, in jih nato zaključil s pomočjo signalov za ubijanje.

$ nano proc-killer.sh
#!/ usr / bin / env bash za pro v "$ @" do pid = $ (pgrep $ pro | head -1) echo $ pid comm = "kill -9 $ pid" eval $ comm done

Zdaj shranite to datoteko in dodajte dovoljenje za izvajanje z izdajo spodnjega ukaza.

$ chmod + x proc-killer.sh

Zdaj lahko temu skriptu posredujete ime procesov, ki jih želite zaključiti.

$ ./ proc-morilec.sh nano gedit vlc

Preprosto zamenjajte argumente z imeni neodzivnih procesov Linuxa v vašem sistemu.

Končajte neodziven postopek iz grafičnega uporabniškega vmesnika


Neodziven postopek lahko zaključite tudi iz grafičnega uporabniškega vmesnika ali okna X. V naslednjem poglavju obravnavamo dve metodi za to.

1. način: Uporaba aplikacije xkill


Sodobne distribucije Linuxa uporabljajo grafično okno X, ki uporabnikom zagotavlja elegantno grafično izkušnjo. Obstaja preprosto orodje, imenovano xkill, ki uporabnikom omogoča, da zaprejo neodzivno okno GUI. Možno je, ker je v Linuxu naslovno okno aplikacije ločeno od same aplikacije.

Preprosto pojdite na svoj terminalski emulator za Linux in vnesite xkill. Kazalec miške bo pretvoril v gumb X, ki ga lahko uporabite za ubijanje katerega koli okna GUI.

$ xkill

Vse, kar morate storiti, je samo klikniti okensko vrstico aplikacije, ki se ne odziva, in takoj bo uničena in takoj izginila.

2. način: Uporaba aplikacije System Monitor v Ubuntuju


Večina običajnih distribucij Linuxa ima nekakšna orodja za nadzor GUI, ki uporabnikom omogočajo grafično zaključitev obešenega procesa Linux. Na primer, aplikacija System Monitor v Ubuntuju nam bo omogočila intuitiven zaključek neodzivnega procesa. Preprost postopek lahko preprosto izberete s seznama procesov in ga ubijete tako, da z desno miškino tipko kliknete postopek in izberete možnost ubijanja.

Obstaja veliko več možnosti za to aplikacijo in prepričani smo, da jo boste zlahka našli za svojo distribucijsko ali namizno okolje.

Konec misli


Ker je upravljanje procesov v Linuxu zelo vsestransko, se uporabniki pogosto soočajo z nezadostnimi procesi. Zato so naši uredniki v tem priročniku opisali vse možne načine za zaustavitev mrtvega procesa Linux. Ko to preberete, bi lahko ubili vse neodzivne procese bodisi iz ukazne vrstice bodisi iz grafičnega uporabniškega vmesnika. Za spopadanje s takimi nadlogami v najkrajšem možnem času lahko uporabite tudi katerega koli našega enoprostorskega ukaza. Poleg tega lahko celo ubijete več kot en sam postopek z uporabo našega preprostega skripta lupine. Upajmo, da ste informacije, ki ste jih iskali, dobili od našega vodnika.

Kako razviti igro na Linuxu
Pred desetletjem le malo uporabnikov Linuxa napoveduje, da bo njihov najljubši operacijski sistem nekoč priljubljena igralna platforma za komercialne ...
Odprtokodna vrata komercialnih igralnih sistemov
Brezplačne, odprtokodne in medplatformacijske igre, ki jih lahko uporabite za igranje starih, pa tudi nekaterih dokaj nedavnih naslovov iger. V tem čl...
Najboljše igre ukazne vrstice za Linux
Ukazna vrstica ni le vaš največji zaveznik pri uporabi Linuxa - lahko je tudi vir zabave, saj jo lahko uporabljate za igranje številnih zabavnih iger,...