Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Iron
  • Kako ubiti proces u Linuxu. Linux kontrola procesa

Kako ubiti proces u Linuxu. Linux kontrola procesa

U ovom članku pokušaćemo da kreiramo modul kernela koji može da promeni PID već pokrenutog procesa u Linuxu, kao i da eksperimentišemo sa procesima koji su primili promenjeni PID.


Upozorenje: Promjena PID-a je nestandardan proces i pod određenim okolnostima može dovesti do panike kernela.

Naša jedinica za testiranje će implementirati karakterni uređaj / dev / test, koji će promijeniti PID procesa kada se čita iz. Za primjer implementacije karakternog uređaja, hvala ovom članku. Kompletan kod modula dat je na kraju članka. Naravno, najispravnije rješenje je bilo dodavanje sistemskog poziva samom kernelu, ali to bi zahtijevalo rekompilaciju kernela.

Životna sredina

Svi koraci za testiranje modula izvedeni su u virtuelnoj mašini VirtualBox sa 64-bitnom Linux distribucijom i verzijom kernela 4.14.4-1. Komunikacija sa mašinom je obavljena pomoću SSH.

Pokušaj #1 jednostavno rješenje

Nekoliko riječi o struji: varijabla current ukazuje na strukturu task_struct s opisom procesa u kernelu (PID, UID, GID, cmdline, imenski prostori, itd.)

Prva ideja je bila jednostavno promijeniti parametar current-> pid iz modula kernela u željeni.

Statički ssize_t device_read (struct file * filp, char * bafer, size_t dužina, loff_t * offset) (printk ("PID:% d. \ N", trenutni-> pid); current-> pid = 1; printk ("novi PID:% d. \ N ", struja-> pid);,)
Da testiram funkcionalnost modula, napisao sam program na C ++:

#include #include #include int main () (std :: cout<< "My parent PID " << getppid() << std::endl; std::cout << "My PID " << getpid() << std::endl; std::fstream f("/dev/test",std::ios_base::in); if(!f) { std::cout << "f error"; return -1; } std::string str; f >> str; std :: cout<< "My new PID " << getpid() << std::endl; execl("/bin/bash","/bin/bash",NULL); }
Učitajte modul sa insmodom, kreirajte / dev / test i isprobajte.

# ./a.out Moj roditelj PID 293 Moj PID 782 Moj novi PID 782
PID se nije promijenio. Ovo možda nije jedino mjesto gdje je PID naveden.

Pokušajte #2 dodatna PID polja

Ako current-> pid nije ID procesa, šta je onda? Brzi pogled na getpid () kod ukazao je na strukturu task_struct koja opisuje Linux proces i datoteku pid.c u izvornom kodu kernela. Potrebna funkcija je __task_pid_nr_ns. Kod funkcije sadrži poziv task-> pids.pid, promijenit ćemo ovaj parametar

Sastavljanje, pokušaj

Pošto sam testirao preko SSH-a, uspeo sam da dobijem izlaz programa pre nego što se kernel sruši:

Moj roditelj PID 293 Moj PID 1689 Moj novi PID 1689
Prvi rezultat je već nešto. Ali PID se još uvijek nije promijenio.

Pokušaj #3 neizvezenih simbola kernela

Pažljiviji pogled na pid.c dao je funkciju koja radi ono što želimo.
static void __change_pid (struct task_struct * zadatak, enum tip pid_type,
struct pid * novo)
Funkcija prihvaća zadatak za koji je potrebno promijeniti PID, tip PID-a i, zapravo, novi PID. Novi PID kreira funkcija
struct pid * alloc_pid (struct pid_namespace * ns)

Ova funkcija prihvata samo prostor imena u kojem će biti novi PID, ovaj prostor se može dobiti pomoću task_active_pid_ns.
Ali postoji jedan problem: kernel ne izvozi ove simbole kernela i ne mogu se koristiti u modulima. U rješavanju ovog problema pomogao mi je jedan divan. Funkcijski kod find_sym je preuzet odatle.

Statički asmlinkage void (* change_pidR) (struct task_struct * zadatak, enum pid_type type, struct pid * pid); statički asmlinkage struct pid * (* alloc_pidR) (struct pid_namespace * ns); static int __init test_init (void) (printk (KERN_ALERT "TEST drajver je učitan! \ n"); change_pidR = find_sym ("change_pid"); alloc_pidR = find_sym ("alloc_pid"); ...) static ssize_t device_read (struct file * filp, char * bafer, dužina size_t, loff_t * pomak) (printk ("PID:% d. \ n", trenutni-> pid); struct pid * newpid; newpid = alloc_pidR (task_active_pid_ns (trenutni)); change_pidR (trenutni) , PIDTYPE_PID, newpid); printk ("novi PID:% d. \ N", trenutni-> pid); ...)
Kompliment, lansiranje

Moj roditelj PID 299 Moj PID 750 Moj novi PID 751
PID promijenjen! Kernel je automatski dodijelio besplatni PID našem programu. Ali da li je moguće koristiti PID koji je preuzeo drugi proces, kao što je PID 1? Dodajte kod nakon dodjele

Newpid-> numbers.nr = 1;
Kompliment, lansiranje

Moj roditelj PID 314 Moj PID 1172 Moj novi PID 1
Dobijamo pravi PID 1!

Bash je dao grešku gdje uključivanje zadataka na komandu% n neće raditi, ali sve ostale funkcije rade dobro.

Zanimljive karakteristike procesa sa promijenjenim PID-om

PID 0: ne može se izaći iz unosa

Vratimo se kodu i promijenimo PID na 0.

Newpid-> numbers.nr = 0;
Kompliment, lansiranje

Moj roditelj PID284 Moj PID 1517 Moj novi PID 0
Dakle, PID 0 nije tako poseban? Sretni smo, napišite izlaz i...

Jezgro pada! Kernel je definirao naš zadatak kao IDLE TASK i kada je vidio završetak samo se srušio. Očigledno, prije završetka, naš program bi trebao vratiti sebi "normalni" PID.

Nevidljivi proces

Vratimo se kodu i podesimo PID, za koji je zagarantovano da nije zauzet
newpid-> numbers.nr = 12345;

Kompliment, lansiranje

Moj roditelj PID296 Moj PID 735 Moj novi PID 12345
Hajde da vidimo šta je u /proc

1 148 19 224 288 37 79 86 93 konzole fb kcore brave particije zamjene verzija 10 149 2 226 29 4 8 87 acpi cpuinfo sistemi datoteka ključ-korisnici meminfo sched_debug sys102c kripta sys102c kripta sys10208 okidač vmstat 11 16 208 24 291 6 81 89 buddyinfo uređaji prekidaju kmsg module scsi sysvipc zoneinfo 12 17 21 25 296 7 82 9 bus diskstats iomem kpagecgroup mounts13 self thread-self36 kgroup 7 thread-17info 139 18 22 27 30 76 84 91 cmdline drajver irq kpageflags net softirqs tty 14 182 222 28 31 78 85 92 config.gz execdomains kallsyms loadavg pagetypeinfo stat up
Kao što vidite, /proc ne definira naš proces, čak i ako smo pozajmili besplatni PID. Prethodni PID takođe nije u / proc, što je vrlo čudno. Možda smo u drugom imenskom prostoru i stoga nismo vidljivi glavnom / proc. Hajde da montiramo new /proc i vidimo šta je unutra

1 14 18 210 25 291 738 81 9 autobus uređaje FS ključnim korisnicima brave pagetypeinfo softirqs timer_list 10 148 182 22 26 296 741 82 90 cgroups diskstats prekida ključeve meminfo particije stat tty 102 149 19 222 27 30 76 83 92 cmdline DMA iomem kmsg misc sched_debug swaps vrlo nervozan 11 15 2 224 28 37 78 84 93 config.gz vozač ioports kpagecgroup modula schedstat sys verzija 12 16 20 226 288 4 79 85 acpi konzole execdomains irq kpagecount nosače SCSI SysRq-okidač vmallocinfo 13 17 208 23 29 6 8 86 asound cpuinfo fb ​​kallsyms kpageflags mtrr self sysvipc vmstat 139 176 21 24 290 7 80 87 buddyinfo kripto datotečni sistemi kcore loadavg net slabinfo thread-self zoneinfo
Kao i ranije, naš proces nije tu, što znači da smo u redovnom imenskom prostoru. Provjeri

Ps -e | grep bash
296 poena / 0 00:00:00 bash

Samo jedan bash, iz kojeg smo pokrenuli program. Ni prethodni PID ni trenutni nisu na listi.

Ima trenutaka kada aplikacija počne da kvari, a sa njom i čitavo radno okruženje, naravno, možete ponovo pokrenuti računar, a sama servisabilnost će nestati, ali ovo nije opcija da ponovo pokrenete računar svaki put. I za ovo postoji komanda Ubij da vam pomogne da zaustavite zamrznuti proces.

Zapovjedi Ubij može se koristiti za ukidanje ili prekid procesa korištenjem “Signala” ili “PID-a”. Komanda Kill šalje specificirani signal za prekid aplikacije koja se loše ponaša. Ako signal nije specificiran, šalje se TERM signal. Ovaj TERM signal će ubiti procese koji ga ne uhvate; za druge procese može biti potrebno koristiti Kill signal (broj 9), jer se ovaj signal ne može presresti.

SIGTERM je signal koji zahtijeva zaustavljanje procesa. Ovom procesu je dato određeno vrijeme da završi svoj posao.

Pa, uz pomoć signala SIGKILL, možemo prisiliti da se proces odmah prekine. I Program nema pravo ignorirati ovaj signal i ukida aplikaciju.

Sledeći je format naredbe Kill:

kill [-signal | -s signal] pid ...

Najlakši način da prekinete proces je da pronađete PID resursa i zatim pokrenete PID kao argument sa naredbom Kill.

Šta je PID?

Svakom Linux ili Unix procesu ili programu koji se izvršava automatski se dodjeljuje jedinstveni identifikacijski broj procesa (PID). PID automatski dodjeljuje broj svakom procesu u sistemu.

Možete pronaći PID resursa pomoću naredbe “pidof” ili “ps”. Da biste saznali PID procesa (recimo firefox) koristite sljedeću naredbu

Pidof firefox

Naredbu možete koristiti i u drugom obliku:

Ps -A | grep -i firefox

U gornjem primjeru, prikazan je broj “23814” koji je PID firefox procesa. Kada saznate PID procesa (firefox), možete koristiti naredbu Kill da ubijete proces (Firefox) kao što je prikazano ispod.

Ubij 23814

Kada naredba izvrši destrukciju, to jest, šalje signal procesu čiji se PID prosljeđuje zajedno sa naredbom kao argument.

Da budemo precizniji, naredba Kill ima sljedeće oblike:

  • ubiti PID
  • ubiti -15 PID
  • ubiti -9 PID
  • kill -SIGTERM PID
  • kill -SIGTERM PID

Komanda Kill ima sljedeće povratne kodove:

  • 0 - na uspjeh
  • 1 - neuspjeh
  • 64 - djelomični uspjeh (ako je navedeno više od jednog procesa)

Druga komanda koju možete koristiti je KillAll... Killall također koristi ime procesa umjesto PID-a i ubija sve instance procesa s tim imenom. Na primjer, ako ste pokrenuli više instanci Firefoxa, možete ih sve prekinuti naredbom

Killall firefox

Za X server postoji još jedna naredba koja se zove Xkill koji mogu ubiti procese. Naredba Xkill je za grafički način rada, bez prolaska kroz naziv procesa ili PID, odnosno ako pokrenete u terminalu

tada ćete imati križić kojim možete prekinuti neradni program jednostavnim klikom na njega.

Tako je jednostavno i lako ubiti procese na GNU/Linux operativnim sistemima.

UNIX operativni sistem Robačevski Andrej M.

ID procesa ID procesa (PID)

Svaki proces ima jedinstveni PID koji omogućava kernelu da razlikuje procese. Kada se kreira novi proces, kernel mu dodeljuje sledeći slobodni (to jest, nije povezan ni sa jednim procesom) identifikator. Dodjela identifikatora je rastuća, tj. ID novog procesa je veći od ID-a procesa kreiranog prije njega. Ako je identifikator dostigao svoju maksimalnu vrijednost, sljedeći proces će dobiti minimalni slobodni PID i ciklus se ponavlja. Kada se proces završi, kernel oslobađa identifikator koji je zauzeo.

Iz knjige Arhitektura UNIX operativnog sistema autor Bach Maurice J.

4.4 KONVERZIRANJE KOMPOZITNOG NAZVA DATOTEKE (PUTA ZA PRETRAŽIVANJE) U INDEKSNI ID Datoteci se inicijalno pristupa preko njenog složenog imena (naziv staze za pretraživanje), kao u naredbama open, chdir (promjena direktorija) ili link. Pošto interno, kernel radi sa indeksima, a ne sa

Iz knjige Rijetka profesija autor Zuev Evgeniy

Šta je identifikator? Osim sintaksnih nejasnoća, brzo su se pojavile i druge smetnje. Teže ih je prikazati na primjerima, pa morate govoriti riječima.Sintaksa jezika C++ je nezgodna i u drugom pogledu. Ukratko, direktno

Iz knjige Programiranje autor Kozlova Irina Sergeevna

11. Identifikator. Ključne riječi Identifikator je niz brojeva, slova i specijalnih znakova. U ovom slučaju, prvo je slovo ili specijalni znak. Da biste dobili identifikatore, možete koristiti mala ili velika slova latinice.

Iz knjige 200 najboljih programa za internet. Popularni tutorial autor Krainsky I

Process Guardian XP Proizvođač: T.A.S. Nezavisno programiranje (http://www.tas-independent-programming.com) Status: Free Download Link: http://www.tas-independent-programming.com/cgi-bin/countdown.pl?Guardian exe. Veličina: 2,4 MB Glavna svrha ovog uslužnog programa je upravljanje procesima koji se pokreću na računaru.

Iz knjige Microsoft Visual C++ i MFC. Programiranje za Windows 95 i Windows NT autor Frolov Aleksandar Vjačeslavovič

Identifikator otvorenog fajla Klasa CFile uključuje element podataka m_hFile tipa UINT. Pohranjuje identifikator otvorene datoteke. Ako ste kreirali objekat klase CFile, ali još niste otvorili nijednu datoteku, tada je konstanta hFileNull upisana u m_hFile. Obično to nije potrebno

Iz UNIX knjige: Procesna komunikacija autor Stevens William Richard

ID transakcije Drugi dio strategije isteka vremena i ponovnog prijenosa je korištenje ID-ova transakcija (XID-ova) za prepoznavanje zahtjeva klijenata i odgovora servera. Kada klijent pozove RPC funkciju, biblioteka to dodjeljuje

Iz knjige TCP / IP arhitektura, protokoli, implementacija (uključujući IP verziju 6 i IP sigurnost) od Faith Sidney M

16.7 Vremenska oznaka i ID poruke Kada primite poštu, zanimljivo je znati vrijeme kada je poslana i primljena. SMTP dodaje ove informacije u proslijeđenu poruku. Osim toga, ovaj protokol vodi evidenciju o svim domaćinima koji su poslali mail poruku i vremenu

Iz knjige Adobe Audition 3 tutorial autor autor nepoznat

Dynamic EQ (proces) Efekat Dynamic EQ varira količinu filtriranja tokom vremena. Na primjer, u prvoj polovini vala možete pojačati visoke frekvencije, au drugoj možete promijeniti širinu pogođenog frekvencijskog pojasa. Prozor Dynamic EQ ima tri kartice: pojačanje, frekvencija i Q (propusnost). 1. Grafikon frekvencije

Iz knjige PHP Author's Reference

Pan/Expander (proces) Pan/Expand efekat vam omogućava da pomerite središnji kanal (mono) iz stereo signala i proširite ili suzite stereo razdvajanje levog i desnog kanala. Središnji kanal se pomera pomoću centra i surround kanale stereo snimanja.

Iz knjige Razvoj aplikacija u Linuxu. Drugo izdanje autor Džonson Majkl K.

Stretch (proces) Efekat rastezanja omogućava vam da promenite visinu (visinu) audio signala, tempo ili oboje. Na primjer, možete koristiti ovaj efekat da povećate visinu fonograma bez promjene njegovog trajanja, ili obrnuto, promijenite trajanje bez promjene

Iz knjige Firebird VODIČ ZA DIZAJNER BAZE PODATAKA od Borri Helen

ID sesije Dakle, ID sesije je ime privremene memorije koja će se koristiti za pohranjivanje podataka sesije između pokretanja skripte. Jedna SID - jedna radnja. Nema SID-a, nema memorije i obrnuto. Kako su identifikator i ime povezani?

Iz knjige UNIX operativni sistem autor Robačevski Andrej M.

10.2.1. ID procesa i linija Dva najosnovnija atributa su ID procesa, ili pid, i ID njegovog roditeljskog procesa. Pid je pozitivan cijeli broj koji se jedinstveno identificira

Iz knjige autora

10.2.3. Uid sistema datoteka U vrlo posebnim slučajevima, program će možda morati zadržati svoje root dozvole za sve osim pristupa sistemu datoteka, koji koristi korisnički uid. Prvobitno korišten u Linux NFS serverskom prostoru

Iz knjige autora

ID domene Kada kreirate domenu u bazi podataka, morate navesti ID domene koji je globalno jedinstven u bazi podataka. Programeri često koriste prefiks ili sufiks u identifikatorima domene kako bi poboljšali dokumentaciju. Na primjer: CREATE

Iz knjige autora

Iz knjige autora

ID roditeljskog procesa (PPID) Identifikator procesa koji je ovo pokrenuo

Mislite li da se Linux operativni sistem može automatski pobrinuti za sebe? Kada sve radi kako treba ili vam ne trebaju nikakve nestandardne funkcije, da. Ali ponekad može biti potrebna vaša intervencija u njenom radu.

U Linuxu se za svaki pojedinačni program kreira proces kada se pokrene. Nije važno da li sami pokrećete program ručno ili to radi sistem ili kernel. Na primjer, program za inicijalizaciju, koji se pokreće odmah nakon što je kernel završio učitavanje, također ima svoj vlastiti proces sa identifikatorom 0. Procesi u linuxu se mogu opisati kao kontejneri u kojima se pohranjuju sve informacije o stanju i izvršavanju programa. . Ako program dobro radi, onda je sve u redu, ali ako visi ili ga trebate konfigurirati da radi, možda ćete morati upravljati procesima u Linuxu.

Ovaj članak će pokriti opsežnu temu, razmotrit ćemo sljedeće mogućnosti:

  • Pogledajte pokrenute procese
  • Pregled informacija o procesima
  • Pronalaženje procesa u Linuxu
  • Promjena prioriteta procesa
  • Završetak procesa
  • Ograničavanje memorije dostupne procesu

Nisam mogao a da ne uključim prve tačke u članak, ali one su vrlo jednostavne i nećemo ih detaljno analizirati. Ali sve ostalo može izgledati komplikovano i nedovoljno opisano.

Počnimo s razumijevanjem pojmova. U osnovi, proces je svaki program. Kao što sam rekao, poseban proces se kreira za svaki program koji se pokrene. Kao dio procesa, programu se dodjeljuje procesorsko vrijeme, RAM i drugi sistemski resursi. Svaki proces ima svoj identifikator, ID procesa ili jednostavno PID, a najčešće su Linux procesi određeni njima. PID nije određen slučajno, kao što sam već rekao, program za inicijalizaciju dobija PID 1, a svaki sledeći program koji se pokrene dobija još jedan. Dakle, PID korisničkih programa već dostiže nekoliko hiljada.

U stvari, Linux procesi nisu tako apstraktni kako vam se sada čine. Sasvim je moguće pokušati ih dodirnuti. Otvorite svoj upravitelj datoteka, idite u korijenski direktorij, a zatim otvorite / proc folder. Vidite li ovdje gomilu brojeva? Dakle, to je sve - PID svih pokrenutih procesa. Svaki od ovih foldera sadrži sve informacije o procesu.

Na primjer, pogledajmo mapu procesa 1. Postoje drugi pod direktorijima i puno datoteka u folderu. Datoteka cmdline sadrži informacije o naredbi za pokretanje procesa:

cat / proc / 1 / cmdline

/ usr / lib / systemd / systemd

Pošto koristim Systemd init sistem, za njega se pokreće prvi proces. Sve se može uraditi sa / proc direktorijumom. Ali ovo je vrlo nezgodno, posebno s obzirom na broj pokrenutih procesa na sistemu. Stoga postoje posebni uslužni programi za implementaciju potrebnih zadataka. Pređimo na pregled uslužnih programa koji vam omogućavaju implementaciju kontrole procesa u Linuxu.

Linux kontrola procesa

Linux ima vrlo veliki broj uslužnih programa za rješavanje različitih zadataka upravljanja procesima. To su takva multifunkcionalna rješenja kao što su htop, top, kao i jednostavni uslužni programi, na primjer, ps, kill, killall, who itd. U ovom članku neću razmatrati grafičke uslužne programe, a neću ni top. Prvi je zato što je previše jednostavan, drugi zato što je htop bolji. Fokusiraćemo se na rad sa htop-om i njegovim uslužnim kolegama u GNU stilu, jedan pomoćni program jedna funkcija.

Hajde da instaliramo htop ako ga već nemate. Ubuntu to radi ovako:

sudo apt install htop

U drugim distribucijama, samo trebate koristiti svoj upravitelj paketa. Naziv paketa je isti.

Pogledajte pokrenute procese

Ovo je vrlo jednostavan zadatak, a također ga je lako riješiti. Postoji mnogo uslužnih programa za ovo, od običnog ps do naprednijih interaktivnih top, htop i tako dalje.

Otvarajući htop, odmah vidimo listu pokrenutih procesa. Naravno, nisu svi linux procesi prikazani ovdje, ima ih puno u sistemu, znate već, neće svi stati na jedan ekran. Prema zadanim postavkama, procesi pokrenuti kao vaš korisnik su navedeni:

Možete vidjeti sljedeće informacije o procesu:

  • PID- ID procesa
  • KORISNIK- korisnik od kojeg je proces pokrenut
  • PRI- prioritet linux procesa na nivou kernela (obično NI + 20)
  • NI- prioritet izvršenja procesa od -20 do 19
  • S- stanje procesa
  • Cpu- iskorišteni procesorski resursi
  • MEM- iskorištena memorija
  • VRIJEME- vrijeme obrade

Možete dodati dodatne parametre na ekran, ali ovo su glavni. Možete dodati parametre pomoću menija Setup. Tamo je sve vrlo jednostavno, pročitajte savjete i slijedite upute. Na primjer, dodan je PPID parametar:

Vrlo važna karakteristika programa je da možete sortirati procese u Linuxu prema željenom parametru. Samo kliknite na naziv parametra, on će biti označen zelenom bojom i sortiranje će biti izvršeno. Na primjer, ako želite vidjeti kojim redoslijedom su pokrenuti procesi, sortirajte po PID-u:

Postoji i zanimljiva prilika da se procesi rasporede u obliku stabla. Moći ćete vidjeti koji je proces pokrenuo ovaj ili onaj proces. Pritisnite F5 za prikaz stabla:

Istu stvar možete učiniti i sa ps-om. Samo ovdje ne postoji tako zgodan interaktivni način rada. Sve se radi sa opcijama.

Razmotrimo glavne opcije koje ćemo koristiti:

  • -e- prikaz informacija o svim procesima
  • -a- prikaz informacija o svim najčešće traženim procesima
  • -t- prikazuje samo procese sa ovog terminala
  • -p- prikazuje informacije samo o navedenom procesu
  • -u- prikazati procese samo određenog korisnika

Ukratko, za pregled svih trenutno aktivnih procesa u linuxu koristi se kombinacija aux opcija:

Program pokazuje sve iste parametre, samo što nema interaktivnog interfejsa. Mislite da je nemoguće sortirati procese ovdje, ali varate se, možete. Za ovo postoji opcija sortiranja. Možete ih sortirati po bilo kojem polju, na primjer:

ps aux --sort =% mem

Lista će biti sortirana obrnutim redoslijedom, s više vrijednosti na dnu i manje na vrhu. Ako je potrebno obrnutim redoslijedom, dodajte minus:

ps aux --sort = -% cpu

Prioriteti Linux procesa ili bilo koji drugi parametri mogu se koristiti kao polje za sortiranje. Također možete skratiti izlaz ako ne trebate prikazati sve informacije:

Čini se da ps nema načina za obračunavanje troška procesnih stabala. Ali ne baš, postoji posebna komanda za ovo:

Pronalaženje procesa u Linuxu

Lista procesa je dobra. Ali ponekad, kada proces visi i moramo ubiti Linux proces ili moramo izvršiti neku radnju s njim, moramo odabrati ovaj proces sa liste, saznati njegov PID i informacije o njemu.

Možete koristiti tipku F3 da pronađete linux proces u htop-u. Pritisnite F3 i unesite željenu riječ. Zatim, da pređete na sljedeće pojavljivanje, pritisnite F2 ili Esc da dovršite pretragu:

Također možete koristiti htop filter da pronađete procese u htopu. Pritisnite F4, unesite riječ i biće prikazani samo linux procesi čije ime uključuje ovu riječ.

Nema filtriranja u ps-u, ali možemo koristiti grep tako što ćemo preusmjeriti ps izlaz na njega da pronađemo linux proces:

ps aux | grep hrom

Ovo je vrlo često korištena naredba.

Promjena prioriteta procesa

Prioritet linux procesa znači koliko će više CPU vremena biti posvećeno ovom procesu u odnosu na druge. Tako možemo vrlo fino podesiti koji će program raditi brže, a koji sporije. Vrijednost prioriteta može biti u rasponu od 19 (minimalni prioritet) do -20 - maksimalni prioritet linux procesa. Štaviše, možete smanjiti prioritet sa pravima običnog korisnika, ali da biste ga povećali, potrebna su vam prava superkorisnika.

Htop koristi parametar Nice za kontrolu prioriteta. Da vas podsjetim da je Priv samo amandman, u većini slučajeva je više od Nice za 20. Da biste promijenili prioritet procesa, jednostavno postavite kursor na njega i pritisnite F7 da smanjite broj (povećajte prioritet) ili F8 da povećate broj.

Ali ne morate koristiti htop ni za ovaj zadatak kontrole Linux procesa. Sve možete učiniti drugim komandama. Na primjer, lijepa naredba. Koristeći ga, možete odrediti prioritet za započeti proces:

nice -n 10 apt-get upgrade

Ili promijenite prioritet za postojeći po njegovom pid-u:

renice -n 10 -p 1343

Završetak procesa u Linuxu

Ako je proces zamrznut i ne reagira, mora se prekinuti. U htop-u, da biste ubili Linux proces, jednostavno postavite kursor preko procesa i pritisnite F9:

Sistem koristi određene signale za kontrolu procesa, postoje signali koji ukazuju na završetak procesa. Evo nekoliko osnovnih signala:

  • SIGKILL- zatražite od procesa da sačuva podatke i završi
  • SIGTERM- završite proces odmah, bez spremanja

Općenito, postoji nekoliko desetina signala, ali ih nećemo razmatrati. Pošaljimo SIGKILL signal:

Također možete koristiti uslužni program kill:

Također možete ubiti proces po imenu:

killall hrom

Ograničavanje procesa

Linux kontrola procesa vam omogućava da kontrolišete gotovo sve. Već ste vidjeli šta se može učiniti, ali može se učiniti više. Sa naredbom ulimit i konfiguracijskom datotekom /etc/security/limits.conf, možete ograničiti procesima pristup sistemskim resursima kao što su memorija, datoteke i procesor. Na primjer, možete ograničiti memoriju Linux procesa, broj datoteka itd.

Unos fajla izgleda ovako:

<домен> <тип> <элемент> <значение>

  • domena- korisničko ime, naziv grupe ili UID
  • vrstu- vrsta ograničenja - meka ili tvrda
  • element- resurs koji će biti ograničen
  • značenje- traženi limit

Čvrsta ograničenja postavlja superkorisnik i obični korisnici ih ne mogu mijenjati. Meke, meke granice korisnici mogu promijeniti pomoću naredbe ulimit.

Razmotrimo glavna ograničenja koja se mogu primijeniti na procese:

  • nema dokumenta
  • as- maksimalna količina RAM-a
  • stog- maksimalna veličina steka
  • cpu- maksimalno vreme procesora
  • nproc- maksimalan broj procesorskih jezgara
  • brave- broj zaključanih datoteka
  • lijepo- maksimalni prioritet procesa

Na primjer, ograničimo vrijeme procesora za procese korisnika sergiy:

sergiy hard nproc 20

Možete pogledati ograničenja za određeni proces u proc folderu:

cat / proc / PID / limits

Maksimalno CPU vrijeme neograničeno neograničeno sekundama
Maksimalna veličina datoteke neograničeno neograničeno bajtova
Maksimalna veličina podataka neograničeno neograničeno bajtova
Maksimalna veličina steka 204800 neograničenih bajtova
Maksimalna veličina datoteke jezgre 0 neograničenih bajtova
Maksimalni rezidentni set neograničen neograničen broj bajtova
Maks. procesa 23562 23562 procesa
Maksimalni broj otvorenih datoteka 1024 4096 datoteka
Maksimalna zaključana memorija 18446744073708503040 18446744073708503040 bajtova
Maksimalni adresni prostor neograničen neograničen broj bajtova
Maksimalni broj zaključavanja datoteka neograničeno neograničeno zaključavanje
Maks. signala na čekanju 23562 23562 signala
Maksimalna veličina reda poruka 819200 819200 bajtova
Maksimalni lijep prioritet 0 0
Maksimalni prioritet u realnom vremenu 0 0
Maksimalno vremensko ograničenje u realnom vremenu neograničeno neograničeno nas

Ovako promijenjena ograničenja stupit će na snagu nakon ponovnog pokretanja. Ali također možemo postaviti ograničenja za trenutnu ljusku i procese koje kreira pomoću naredbe ulimit.

Evo opcija komandi:

  • -S- meko ograničenje
  • -H- tvrdo ograničenje
  • -a- prikaz svih informacija
  • -f- maksimalna veličina kreiranih datoteka
  • -n- maksimalan broj otvorenih datoteka
  • -s- maksimalna veličina steka
  • -t- maksimalna količina vremena procesora
  • -u- maksimalan broj pokrenutih procesa
  • -v- maksimalna količina virtuelne memorije

Na primjer, možemo postaviti novo ograničenje broja datoteka koje se mogu otvoriti:

Sada gledamo:

Postavimo ograničenje RAM-a:

ulimit -Sv 500000

Da vas podsjetim da će ovo ograničenje biti relevantno za sve programe koji se pokreću u ovom terminalu.

zaključci

To je sve. Sada vam upravljanje procesima u Linuxu neće praviti probleme. Ovu temu smo razmotrili veoma detaljno. Ako imate pitanja ili prijedloga za dopunu članka, pišite u komentarima!

Instrukcije

Internet protokol (IP) definira isporuku podataka od jednog hosta do drugog. Istovremeno, ne garantuje tačnost isporuke: tokom prenosa, paketi mogu biti izgubljeni ili primljeni drugačijim redosledom nego što su poslani. Za tačnost je odgovoran trans protokol nogu nivo Protokol kontrole prijenosa - TCP. TCP uspostavlja vezu, kontroliše slanje i primanje paketa, duplira svoje akcije u slučaju da odgovor na zahtev nije primljen ili se paketi izgube. Važno je razumjeti da TCP uspostavlja razmjenu paketa ne samo između čvorova, već i između softverskih aplikacija. Mrežni port je uslovni broj od 1 do 65535 koji pokazuje kojoj aplikaciji je paket dodijeljen.

Možete saznati koji procesi koriste portove na vašem računaru pomoću standardnih Windows alata. U meniju Start kliknite na dugme Pokreni i upišite cmd u komandnu liniju. Potvrdite sa OK. U prozoru konzole otkucajte netstat -a -n -o.

Kolona PID sadrži broj procesa, kolona "" sadrži IP adresu vašeg računara i, odvojen dvotočkom, broj porta koji zauzima odgovarajući proces. "Spoljna adresa" je IP i broj porta udaljenog čvora sa kojim se neka aplikacija pokreće.

U prozoru konzole otkucajte naredbu liste zadataka. U njemu će biti prikazane sve aplikacije PID koda koje se pokreću na računaru. Na ovaj način ćete znati koji proces zauzima bilo koji port na vašem računaru.

Ove informacije možete dobiti drugačije: pokrenite "Task Manager" iz komandne linije upisivanjem taskmgr ili pritiskom na tipke Ctrl + Alt + Delete. U koloni PID pronađite broj procesa koji vas zanima, u koloni Naziv slike - naziv odgovarajuće aplikacije ili usluge. Ako PID nije prikazan u prozoru menadžera, idite na stavku "Pregled" glavnog menija i izaberite opciju "Odaberi kolone". Označite polje pored ID procesa (PID).

Kada se proces pokrene na računaru, on prima svoj pid, odnosno identifikator proces... Ponekad je potrebno otkriti upravo ovaj identifikator. Možda, iz nekog razloga, trebate onemogućiti pokrenuti proces, na primjer, ako ometa deinstaliranje programa. Postoji nekoliko načina da saznate pid. Najjednostavniji od njih je to učiniti pomoću upravitelja zadataka i komandne linije.

Trebaće ti

  • - računar sa operativnim sistemom Windows (XP, Windows 7).

Instrukcije

Pritisnite ctrl + alt + del na tastaturi. Ako je vaš operativni sistem Windows XP, tada će se odmah pojaviti upravitelj zadataka, ako je Windows 7 - prozor u kojem ga možete odabrati.

Odaberite karticu "Procesi". Sada ovdje, kliknite na stavku "Prikaži". Pojavit će se dodatni prozor. U njemu odaberite opciju "Odaberi kolone". Pojavit će se okvir za dijalog u kojem će najviša stavka biti nazvana "ID proces(pid) ". Označite polje pored njega. Sačuvajte postavke klikom na OK.

Zatim u upravitelju uređaja idite na karticu "Procesi", gdje ćete vidjeti red "ID proces". Pronađite ime u njemu proces, čiji identifikator trebate saznati i vidjeti njegovu vrijednost.

Sada će se ispitati ova vrijednost pomoću komandne linije operativnog sistema. Kliknite na dugme "Start" i idite na karticu "Svi programi". Odaberite "Standardni programi". Ovdje pronađite stavku menija komandne linije i pokrenite je. Unesite listu zadataka i pritisnite Enter. Nakon aktiviranja ove naredbe, u prozoru komandne linije pojavit će se lista svih trenutno aktivnih procesa. Nakon imena svakog od njih, ispisuje se njegov identifikator.

Ako trebate brzo završiti proces, onda to možete učiniti ovako. Nakon što saznate identifikator proces, upišite taskkill / pid 0000 u komandnu liniju Umjesto nula unesite identifikator proces koji je obavezan "". Nakon toga, sistem će poslati signal da ga završi i isključit će se.

Bilješka

Budite oprezni kada završavate procese. Nehotice možete onemogućiti aktivni proces koji je neophodan za ispravan rad operativnog sistema.

Adresiranje mail servera u The Bat! (kao i u drugim programima za poštu) se odvija preko određenih portova za slanje i primanje pošte. Da biste konfigurisali program za e-poštu, potrebno je da unesete brojeve SMTP i POP3 portova, kao i imena servera u parametrima polja.

Trebaće ti

  • - podaci iz pošte.

Instrukcije

Idite na web lokaciju vašeg mail servera. Na primjer, vaš mail server je mail.ru. Morat ćete se prijaviti - odnosno unijeti svoje korisničko ime i lozinku - da biste ušli u svoje lično sanduče. Pronađite vezu za pomoć i kliknite na nju.

Lista tema pomoći nalazi se na lijevoj strani. Kliknite na natpis "Pristup iz mail programa" i odaberite prvu stavku za učitavanje stranice postavki. Stranica označava da je ime servera dolazne pošte pop.mail.ru, a servera za odlaznu poštu smtp.mail.ru. Ovo se odnosi samo na ovu uslugu. Po pravilu, svaki poštanski server može imati različite portove, pa idite na službenu web stranicu u centru za podršku i saznajte podatke. Na internetu postoje i stranice koje pružaju informacije o gotovo svim uslugama koje postoje na Internetu.

Brojevi portova servera za odlaznu i dolaznu poštu navedeni su na dnu stranice. Označava da su za server dolazne pošte protokoli 110 (ako program za poštu radi bez šifriranja) i 995 (sa šifriranjem). Da biste saznali koji broj da unesete, proučite postavke vašeg programa za poštu. Broj porta za odlaznu poštu je 25, 587 ili 2525 (ako pošiljalac pošte ne koristi šifriranje) i 465 (sa šifriranjem). Standardni portovi za poštu su 110 i 25. Standardni brojevi portova se također mogu upisati u program prema zadanim postavkama, tako da ako je potrebno, morat ćete ih ispraviti na ispravne.

Ako koristite drugi mail server, posjetite web stranicu da biste dobili postavke. Parametri ove vrste su uvijek javni i obično se postavljaju u odjeljak za pomoć. Ako vaše preduzeće koristi korporativnu e-poštu, obratite se administratoru mreže za brojeve portova.

TCP/IP je kolekcija protokoli, koji vam omogućava povezivanje pojedinačnih računara i mreža u zajedničku računarsku mrežu. Uz pomoć protokoli TCP / IP Većina aplikacija komunicira preko Interneta.

Top srodni članci