A-Z naredbe

Kako ubiti ili prekinuti Linux proces Ultimate Guide

Kako ubiti ili prekinuti Linux proces Ultimate Guide

Višeprocesorski operativni sustavi poput Linuxa i BSD-a koriste nekoliko metoda za maksimalno iskorištavanje CPU-a. Proces je jednostavno program u izvršenju. Budući da će se u određenom trenutku izvoditi više od jednog Linux procesa, upravljanje procesima u Linuxu izuzetno je važno. Korisnici se često suočavaju s problemima poput smanjenja CPU resursa kada pokreću previše programa. Situacije poput ove pojavljuju se kada CPU ne uspijeva podnijeti sve veći broj procesa. Iako to ne ovisi u potpunosti o snazi ​​vašeg procesora, bavljenje obješenim ili zombi procesima može biti prilično frustrirajuće. Da bismo vam pomogli ublažiti takve pojave, iznijeli smo neke standardne načine ubijanja tih procesa.

Ovladajte upravljanjem neodgovornim procesima u Linuxu


Naučit ćete nekoliko načina da prekinete Linux proces koji uopće ne reagira. Ako dolazite iz sustava Windows, možda su vam poznati Ctrl + Alt + Delete. Slično tome, korisnici Maca imaju Command + Option + Escape metodu ubijanja zamrznutih procesa. Linux je mnogo svestraniji od svojih kolega i nudi više od jedne metode za rješavanje mrtvih / neodgovarajućih procesa.

Različite metode ubijanja mrtvog Linux procesa


Uglavnom ćemo iznijeti dvije metode za ubijanje zombi procesa. Za prvu ćemo metodu upotrijebiti Linux terminal. Za to ćemo prvo morati identificirati ID procesa. Jednom uspješno dobiveni, možemo pomoću ovog PID-a ubiti program slanjem specifičnih signala na taj PID.

Također ćete naučiti kako izvoditi takve zadatke ubijanja Linuxa iz grafičkog korisničkog sučelja ili X prozora. Mi ćemo iskoristiti 'Nadzor sustava' aplikacija dostupna u Ubuntuu za to. Iako je ovo GNOME aplikacija, slični alati dostupni su i za druga Linuxova radna okruženja.

Prekinite neodgovarajući postupak iz naredbenog retka


Postoji nekoliko alata za završavanje neodgovarajućeg ili obješenog procesa iz naredbenog retka, uključujući ubiti, pkill, i killall. Te naredbe rade slanjem specifičnih signala tim neodgovarajućim procesima. Trebat će vam ID procesa ili PID informacije kako biste im mogli poslati traženi završni signal.

PID ili ID procesa jedinstveni je broj koji identificira proces. Njih stvara Linux kernel za vrijeme izvođenja, a planeri procesa kontroliraju njihove CPU aktivnosti. Dakle, kad god pozovete aplikaciju, kernel će prvo iznjedriti potrebne procese i dodijeliti im ove jedinstvene PID vrijednosti. S procesom može biti povezano više PID-ova. Štoviše, svaki proces ima jedan nadređeni proces s jedinstvenim PPID-om (ID nadređenog procesa).

Dakle, ako uspijete saznati ovaj PPID, tada ćete moći poslati signal za ubojstvo pomoću programa dizajniranih u tu svrhu. Ispod ćete naučiti kako provjeriti pokrenute procese u Linuxu i prepoznati njihov PPID s terminala.

Saznajte podatke o PPID-u


PPID procesa možete saznati pomoću nekoliko naredbi za upravljanje procesima u Linuxu, kao što je pidof, pstree, i pgrep. Ispitajmo ih jednog po jednog i vidjet ćemo kako dobiti PID Linux procesa.

Metoda 1: Korištenje ps naredbe


Naredba ps u Linuxu prikazuje sve pokrenute procese zajedno s ostalim informacijama vezanim uz procese, poput PID-a u terminalu. Ovu naredbu možemo koristiti za popis svih procesa, a zatim filtrirati određeni postupak pomoću Linux grep naredbi. Trebao bi nam pokazati informacije o procesu koje nas zanimaju.

$ nano> / dev / null &
$ ps pomoćni | grep "nano"

Prvo, u pozadini smo pozvali Linuxov uređivač teksta. Zatim smo upotrijebili ps naredbu uz naredbu grep da bismo pronašli PPID ovog uređivača. Izlaz može sadržavati nekoliko ID-ova procesa, ali nas zanima samo prvi budući da je to naš PPID. Također možemo koristiti Linux awk naredbu kako bismo saznali ove podatke, kao što je prikazano u nastavku.

$ ps pomoćni | awk '/ nano / print $ 2'

Ova je naredba fleksibilnija jer potiskuje sve nebitne informacije. Prikazat će samo podatke o PPID-u koje tražimo.

2. metoda: Korištenje naredbe pstree


Naredba pstree pruža nam prikaz svih pokrenutih procesa nalik stablu. Pruža grafički prikaz popisa zadataka Linuxa iz prozora terminala. Pomoću ove naredbe možete vidjeti PPID, kao i sve PID informacije procesa. Pogledajte primjere u nastavku kako biste naučili kako iskoristiti pstree za pronalaženje PPID-a određenog postupka.

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

Prvo, stvorili smo proces u pozadini pomoću prve naredbe. Druga naredba zatim dohvaća PPID ovog procesa pomoću naredbe grep u Linuxu. Konačno, treća naredba pokazuje nam kako dohvatiti ovu vrijednost pomoću naredbe awk.

3. metoda: Korištenje naredbe pgrep


Naredba pgrep jedna je od najlakših naredbi za upravljanje procesima u Linuxu. Provjerava popis svih pokrenutih procesa i ispisuje PPID određenog procesa u standardnom izlazu ili terminalu u našem slučaju. Djeluje izvodeći podudaranje regularnih izraza i izuzetno je pogodan za pisanje Linux shell skripti.

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

Pokrenuli smo nano postupak slično kao u ranijim primjerima. Tada smo dobili njegov PPID pomoću naredbe pgrep. Jednom kad dobijemo ovu vrijednost, možemo vrlo jednostavno izvršiti Linux kill posao.

4. metoda: Korištenje naredbe pidof


Naredba pidof je još jedan jednostavan, ali koristan način određivanja PPID-a Linux procesa. Prikazuje i PPID i sve ostale PID-ove povezane s procesom. Pogledajte dolje ispitivanje da biste vidjeli kako to koristiti u praksi.

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

Kada koristite naredbu pidof za provjeru pokrenutih procesa u Linuxu, često ćete vidjeti više PID-ova. Obično je u takvim slučajevima prvi ili posljednji broj PPID, ovisno o tome jesu li uzlaznim redoslijedom ili silaznim redoslijedom. Možete koristiti -s mogućnost pidof-a da to ublaži. Prikazat će samo vrijednost PPID.

5. metoda: Korištenje gornje naredbe


Naredba top pruža u stvarnom vremenu prikaz svih izvršenih procesa u operacijskim sustavima sličnim Unixu. To možete koristiti za prikaz popisa zadataka Linuxa na vašem terminalu i saznavanje PID podataka određenog postupka.

$ vrh

Upotrijebite sljedeće naredbe za dohvaćanje PPID-a određenog procesa iz izlaza gornje naredbe.

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

Budući da top nudi izlaz u stvarnom vremenu, umjesto da na terminal izbacuje statičke podatke, koristili smo -n1 i -b mogućnost ispisa statičkog izlaza. Tada možete doći do podataka o PPID-u pomoću naredbe grep ili naredbe awk u Linuxu.

Ubijte neodgovarajući Linux proces


Možete koristiti bilo koju od gore navedenih metoda za dohvaćanje PPID-a neodgovarajućeg postupka. Jednom kada to nabavite, vrijeme je da postupak potpuno ubijete. Postoji nekoliko naredbi koje nam to omogućuju, kao što je ubiti, pkill, i killall. Kako će raditi jedan po jedan, vidjet ćemo u sljedećim odjeljcima.

Metoda 1: Korištenje naredbe kill


Naredbu kill široko koriste Linux administratori zbog svoje jednostavnosti i robusnih radnji. Potreban je PID postupka i signal. Jezgra ubija / zaustavlja izvršavanje postupka na temelju ovog signala. Sljedeću naredbu možete koristiti za prikaz svih dostupnih signala naredbi kill.

$ ubiti -l

Kao što vidite, kill nudi 64 različita signala. Međutim, u ovom ćemo priručniku razgovarati samo o dvoje od njih. To su signal 9 (SIGKILL) i signal 15 (SIGTERM). SIGTERM ili signal 15 sigurna je metoda ubijanja procesa koji ne reagira. SIGKILL ili signal 9, s druge strane, sila ubija Linux proces.

$ ubiti -9 8631 $ ubiti -UBITI 8631

Gornje naredbe su ekvivalentne i prisilit će ubiti proces koji ima PID 8631. To je PPID procesa 'nano' u mom sustavu. Zamijenite ovo s PID-om procesa koji ne reagira u vašem sustavu.

$ ubiti -15 8631 $ ubiti -TERM 8631

Navedene naredbe su također ekvivalentne i postupno će ubiti postupak. Zato može proći neko vrijeme prije nego što se proces ubije. Štoviše, možda ćete trebati dodati sudo prije naredbe kill ako je postupak u vlasništvu drugog korisnika.

2. metoda: Korištenje naredbe pkill


Naredba pkill jedna je od najsvestranijih naredbi za upravljanje procesima u Linuxu. Omogućuje nam ubijanje neodgovarajućeg postupka na temelju njegovog imena, PID-a, vlasnika i drugih atributa izvođenja. Savršen je alat za pokretanje korisnika ili ljudi koji nisu upoznati s mnogim standardnim naredbama terminala.

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

Možete koristiti bilo koju od gore navedenih pkill naredbi za ubijanje zombi / neodgovarajućeg procesa u Linuxu. Koristiti -e opcija ako želite potvrdu o Linux kill zadaću. Naredba pkill također omogućuje korisnicima slanje određenih završnih signala.

3. metoda: Korištenje naredbe killall


Naredba killall omogućuje korisnicima da ubijaju neodzivne procese na temelju njihovih imena. Jednostavniji je za upotrebu, ali može stvarati probleme ako niste oprezni. Budući da killall završava procese na temelju imena, uvijek postoji šansa da slučajno na kraju ubijete postupak. Na primjer, ako su u vašem sustavu dostupne različite verzije nano-a, prvi će ih primjer ubiti.

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

Prvi primjer prikazuje osnovnu upotrebu naredbe killall u Linuxu. Druga naredba će izvijestiti je li posao ubijanja uspješan ili ne, a treća naredba tražit će od korisnika potvrdu prije nego što ubije postupak. Prema zadanim postavkama, killall koristi SIGTERM signal za procese ubijanja. Međutim, signal možete odrediti ručno, kao što je prikazano u posljednjem primjeru.

4. metoda: Korištenje praktičnih jednoslojnih obloga


Prava ljepota Linuxa leži u činjenici da omogućuje korisnicima stvaranje sofisticiranih kombinacija naredbi na temelju njihovih potreba. Da bismo to demonstrirali, u ovom smo dijelu prikazali nekoliko jednoslojnih crta.

$ nano> / dev / null &
$ ubiti -9 $ (pgrep nano) $ ps pomoćni | grep -e 'nano' | awk 'ispis $ 2' | xargs ubiti -9

U prvom primjeru koristili smo interpolaciju ljuske da bismo proslijedili PID procesa 'nano' naredbi Linux kill. Drugi primjer koristi nekoliko svakodnevnih naredbi terminala i I / O preusmjeravanje kako bi zaustavio postupak. Možete pripremiti vlastite izvrsne jednoslojne linije kada se ugodno odlučite za Linux terminal.

5. metoda: Ubiti višestruke procese pomoću Linux Shell skripti


Ponekad korisnici možda žele završiti više od jednog postupka. Takve zadatke možemo lako automatizirati pisanjem jednostavnih skripti ljuske. Ako ste zainteresirani za ovu temu, pogledajte naš prethodni vodič o Linux skriptama ljuske. Sljedeća će skripta dohvatiti PPID procesa koje želite ubiti, a zatim ih završiti pomoću signala za ubijanje.

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

Sada spremite ovu datoteku i dodajte dozvolu za izvršavanje izdavanjem naredbe u nastavku.

$ chmod + x proc-ubojica.sh

Sada ovoj skripti možete proslijediti ime procesa koje želite prekinuti.

$ ./ proc-ubojica.sh nano gedit vlc

Jednostavno zamijenite argumente imenima neodgovarajućih Linux procesa u vašem sustavu.

Prekinite neodgovarajući postupak iz GUI-ja


Neodgovarajući postupak možete prekinuti i putem grafičkog korisničkog sučelja ili X prozora. Dvije metode za to raspravljamo u sljedećem odjeljku.

Metoda 1: Korištenje aplikacije xkill


Suvremene Linux distribucije koriste X grafički prozor za pružanje korisnicima elegantnog grafičkog iskustva. Postoji jednostavan alat zvan xkill koji korisnicima omogućuje zatvaranje neodzivnog prozora GUI-ja. To je moguće jer je u Linuxu naslovni prozor aplikacije odvojen od same aplikacije.

Jednostavno idite na svoj emulator terminala za Linux i upišite xkill. Pretvorit će kursor vašeg miša u X gumb, koji se može koristiti za ubijanje bilo kojeg prozora s GUI-jem.

$ xkill

Sada sve što trebate je samo kliknuti na traku prozora aplikacije koja ne reagira i ona će biti uništena i trenutno nestati.

2. metoda: Korištenje aplikacije System Monitor na Ubuntuu


Većina uobičajenih distribucija Linuxa dolazi s nekakvim alatima za praćenje GUI-a koji omogućuju korisnicima da grafički završe obješeni Linux proces. Na primjer, aplikacija System Monitor na Ubuntuu omogućit će nam da intuitivno prekinemo neodgovarajući postupak. Jednostavno možete odabrati mrtvi postupak s popisa procesa i ubiti ga desnim klikom na postupak i odabirom opcije ubijanja.

Postoji mnogo više alternativa ovoj aplikaciji i sigurni smo da je možete lako pronaći za svoju distribucijsku ili radnu površinu.

Završavajući misli


Budući da je upravljanje procesima u Linuxu vrlo svestrano, korisnici se često frustriraju kada se bave procesima koji ne reagiraju. Zbog toga su naši urednici u ovom vodiču iznijeli sve moguće načine zaustavljanja mrtvog Linux procesa. Nakon što ovo pročitate, trebali biste moći ubiti bilo koji neodgovarajući proces bilo iz naredbenog retka bilo iz GUI-ja. Također možete upotrijebiti bilo koju od naših jednoslojnih naredbi za rješavanje takvih smetnji u najkraćem mogućem roku. Štoviše, možete čak i ubiti više od jednog postupka pomoću naše jednostavne skripte ljuske. Nadamo se da ste informacije koje ste tražili dobili od našeg vodiča.

Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...
Kako instalirati i igrati Doom na Linuxu
Uvod u Doom Serija Doom nastala je 90-ih nakon izlaska originalnog Dooma. To je bio trenutni hit i od tog vremena nadalje igraća serija dobila je broj...
Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...