Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Željezo
  • Kako ubiti proces u Linuxu. Upravljanje procesima u Linuxu

Kako ubiti proces u Linuxu. Upravljanje procesima u Linuxu

U ovom članku pokušat ćemo stvoriti modul kernela koji može promijeniti PID već pokrenutog procesa u Linux OS-u, kao i eksperimentirati s procesima koji su primili promijenjeni PID.


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

Naš testni modul će implementirati /dev/test karakterni uređaj, čitanje s kojeg će promijeniti PID procesa. Hvala ovom članku za primjer implementacije karakternog uređaja. Potpuna šifra modula navedena je na kraju članka. Naravno, najispravnije rješenje bilo je dodati poziv sustava samom kernelu, ali to bi zahtijevalo ponovno kompajliranje kernela.

Okoliš

Sve radnje testiranja modula izvedene su u virtualnom stroju VirtualBox sa 64-bitnom LInux distribucijom i verzijom kernela 4.14.4-1. Komunikacija sa strojem obavljena je pomoću SSH-a.

Pokušaj #1 jednostavno rješenje

Nekoliko riječi o struji: trenutna varijabla 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 *buffer, size_t duljina, loff_t * offset) ( printk("PID: %d.\n",current->pid); current->pid = 1; printk("new PID: %d.\n",trenutni->pid); , )
Da bih testirao funkcionalnost modula, napisao sam program na C ++:

#uključiti #uključiti #uključiti 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::out<< "My new PID " << getpid() << std::endl; execl("/bin/bash","/bin/bash",NULL); }
Učitajte modul naredbom insmod, kreirajte /dev/test i pokušajte.

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

Pokušajte #2 dodatna PID polja

Ako current->pid nije ID procesa, što onda jest? 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. U kodu funkcije nalazi se poziv zadatak-> pids.pid, promijenit ćemo ovaj parametar

Sastavljanje i isprobavanje

Budući da sam testirao putem SSH-a, uspio sam dobiti izlaz programa prije nego što se kernel srušio:

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

Pokušaj #3 nisu izvezeni simboli kernela

Pobliže promatranje pid.c dalo je funkciju koja radi ono što nam treba.
static void __change_pid(struct task_struct *task, enum tip pid_type,
struct pid *novo)
Funkcija prihvaća zadatak za koji je potrebno promijeniti PID, tip PID-a i, zapravo, novi PID. Stvaranjem novog PID-a upravlja funkcija
struct pid *alloc_pid(struct pid_namespace *ns)

Ova funkcija prihvaća samo prostor imena u kojem će se nalaziti 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. Wonderful mi je pomogao u rješavanju ovog problema. Funkcijski kod find_sym je preuzet odatle.

Statički asmlinkage void (*change_pidR)(struct task_struct *task, 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 *buffer, size_t duljina, loff_t * offset) ( printk("PID: %d.\n",current->pid); struct pid* newpid; newpid = alloc_pidR(task_active_pid_ns(current)); change_pidR(current) ,PIDTYPE_PID,newpid); printk("novi PID: %d.\n",current->pid); ... )
Sastavite, pokrenite

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

Novipid->brojevi.nr = 1;
Sastavite, pokrenite

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

Bash baca bug koji sprječava prebacivanje zadatka na naredbu %n, ali sve ostale funkcije rade dobro.

Zanimljive značajke procesa s promijenjenim PID-om

PID 0: Ne mogu se prijaviti

Vratimo se kodu i promijenimo PID na 0.

Novipid->brojevi.nr = 0;
Sastavite, pokrenite

Moj roditelj PID284 Moj PID 1517 Moj novi PID 0
Ispada da PID 0 nije toliko poseban? Radujemo se, pišemo izlaz i...

Jezgra pada! Kernel je definirao naš zadatak kao IDLE TASK i, vidjevši završetak, jednostavno se srušio. Očigledno, naš program se mora vratiti na "normalni" PID prije završetka.

Nevidljivi proces

Vratimo se kodu i postavimo PID, zajamčeno nije zauzet
novipid->brojevi.nr = 12345;

Sastavite, pokrenite

Moj roditelj PID296 Moj PID 735 Moj novi PID 12345
Pogledajmo što je u /proc

1148 192242288 37798693 konzole FB kcore brave particije swaps verzija 10149 2226294887 ACPI CPUINFO datotečni sustavi Ključni korisnici Slock_debug Sys vmallocinfo 102 15 20 23 290 5 80 88 Kripto-ched FS Tipke vmstat 11 16 208 24 291 6 81 89 BUGDIINFO Uređaji prekida kmsg moduli scsi sysvipc zoneinfo 12 17 21 25 296 7 82 9 139 18 22 27 30 76 84 91 cmdline drajver irq kpageflags net softirqs tty 14 182 182 tty 14 182 2312 2312 str.
Kao što vidite, /proc ne definira naš proces, čak i ako smo uzeli besplatni PID. Prethodni PID također nije u /proc, a ovo je vrlo čudno. Možda se nalazimo u drugom imenskom prostoru i stoga nismo vidljivi glavnom /proc. Montirajte novi /proc i pogledajte što je tamo

1 14 18 210 25 291 738 81 9 sabirni uređaji fs ključ-korisnici zaključavanja pagetypeinfo softirqs timer_list 10 148 182 22 26 296 741 82 90 sched_debug swaps1 igroups21 verzija upravljačkog programa sched_debug swap2521 verzija 12 16 20 226 288 4 79 85 acpi konzole execdomains irq kpagecount montira scsi sysrq-okidač vmallocinfo 16 6 17 203 cpuinfo fb ​​kallsyms kpageflags mtrr self sys132 datoteku 7 stat sys132 učitavanje9 kpage7 self zoneinfo
Kao i prije, naš proces ne postoji, što znači da smo u uobičajenom imenskom prostoru. Provjerimo

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

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

Postoje trenuci kada aplikacija počne otkazivati, a s njom i cijelo radno okruženje, naravno, možete ponovno pokrenuti računalo i uslužnost će nestati sama od sebe, ali ovo nije opcija za ponovno pokretanje računala svaki put. I za to postoji tim Ubiti, što će vam pomoći da zaustavite proces obješenja.

Naredba Ubiti može se koristiti za zaustavljanje ili prekid procesa korištenjem "Signal" ili "PID". Naredba Kill šalje navedeni signal za prekid aplikacije koja se loše ponaša. Ako signal nije naveden, š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 taj signal ne može uhvatiti.

SIGTERM je signal koji zahtijeva da proces prestane raditi. Ovom procesu se daje određeno vrijeme da završi svoj rad.

Pa, sa signalom SIGKILL, možemo prisiliti da se proces odmah prekine. I Program nema pravo zanemariti ovaj signal i ukida aplikaciju.

Slijedi format naredbe Kill:

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

Najlakši način za ukidanje procesa je pronaći PID resursa i zatim pokrenuti PID kao argument naredbi Kill.

Što je PID?

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

Možete pronaći PID resursa pomoću naredbe "pidof" ili naredbe "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. Nakon što vam je PID procesa (firefox) poznat, možete upotrijebiti naredbu Kill da ubijete proces (firefox) kao što je prikazano u nastavku.

Ubiti 23814

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

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

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

Naredba Kill ima sljedeće povratne kodove:

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

Još jedna naredba koju možete koristiti je Ubiti sve. Killall također koristi naziv procesa umjesto PID-a i završava sve instance procesa s tim imenom. Na primjer, ako imate više pokrenutih instanci Firefoxa, možete ih sve završiti naredbom

ubiti firefox

Za X poslužitelj postoji još jedna naredba koja se zove xkill, što može ubiti procese. Naredba Xkill je za grafički način rada, bez prosljeđivanja naziva procesa ili njegovog PID-a, tj. ako izvodite u terminalu

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

Tako je jednostavno i lako ubiti procese u GNU/Linux operativnim sustavima.

UNIX operativni sustav Robačevski Andrej M.

ID procesa (PID)

Svaki proces ima jedinstveni PID koji omogućuje kernelu da razlikuje procese. Kada se kreira novi proces, kernel mu dodjeljuje sljedeći slobodni (tj. nije povezan ni s jednim procesom) identifikator. Identifikatori se dodjeljuju uzlaznim redoslijedom, tj. id novog procesa veći je od id procesa stvorenog prije njega. Ako je identifikator dosegao maksimalnu vrijednost, sljedeći proces će primiti minimalni slobodni PID i ciklus se ponavlja. Kada se proces završi, kernel oslobađa identifikator koji je zauzeo.

Iz knjige Arhitektura UNIX operativnog sustava autor Bach Maurice J

4.4 TRANSFORMACIJA NAZIVA KOMPOZITNE DATOTEKE (PUTA ZA PRETRAŽIVANJE) U INDEKSNI ID Datoteka se inicijalno poziva na njenu stazu (naziv staze pretraživanja), kao u naredbama open, chdir (promjena direktorija) ili link. Budući da interno kernel radi s indeksima, a ne s

Iz knjige Rijetka profesija autor Zuev Evgeny

Što je identifikator? Osim nejasnoća u sintaksi, brzo su isplivale i druge nevolje. Teže ih je prikazati primjerima, pa ćete ih morati opisati riječima.Sintaksa jezika C++ je nezgodna i u drugom pogledu. Ukratko, izravno

Iz knjige Programiranje Autor Kozlova Irina Sergejevna

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

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

Process Guardian XP Proizvođač: T.A.S. Neovisno programiranje (http://www.tas-independent-programming.com). Status: besplatno. Link za preuzimanje: 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 izvode na računalu.

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

Identifikator otvorene datoteke Klasa CFile uključuje člana podataka m_hFile tipa UINT. Pohranjuje ID otvorene datoteke. Ako ste stvorili objekt CFile, ali još niste otvorili nijednu datoteku, m_hFile je postavljen na konstantu hFileNull.

Iz knjige UNIX: Interakcija procesa Autor Stephens William Richard

ID transakcije Drugi dio strategije vremenskog ograničenja i ponovnog prijenosa je korištenje ID-ova transakcije (ID transakcije ili XID) za razlikovanje između zahtjeva klijenta i odgovora poslužitelja. Kada klijent pozove RPC funkciju, knjižnica to dodjeljuje

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

16.7 Vremenska oznaka i ID poruke Prilikom primanja pošte zanimljivo je znati kada je poslana i primljena. SMTP dodaje ove informacije poruci koja se prosljeđuje. Osim toga, ovaj protokol prati sve domaćine koji su poslali mail poruku i vrijeme

Iz knjige Adobe Audition 3 tutorial Autor autor nepoznat

Dynamic EQ (proces) Učinak Dynamic EQ mijenja količinu filtriranja tijekom vremena. Na primjer, u prvoj polovici vala možete pojačati visoke frekvencije, a u drugoj polovici možete promijeniti širinu zahvaćene širine pojasa. Prozor Dynamic EQ ima tri kartice: pojačanje, frekvencija i Q (propusnost). 1. Grafikon frekvencije (graf

Iz autorovog PHP priručnika

Pan/Expander (proces) Pan/Expand efekt omogućuje vam da pomaknete središnji kanal (mono komponentu) iz stereo signala i proširite ili suzite stereo razdvajanje lijevog i desnog kanala. Središnji kanal se pomiče pomoću središnjeg i surround kanale stereo snimanja,

Iz knjige Razvoj aplikacija u Linux okruženju. Drugo izdanje Autor Johnson Michael K.

Stretch (proces) Efekt rastezanja omogućuje vam promjenu visine (visine) audio signala, tempa ili oboje. Na primjer, možete koristiti ovaj efekt za povećanje visine pjesme bez promjene njezina trajanja ili obrnuto za promjenu trajanja bez promjene

Iz knjige Firebird DATABASE DEVELOPER'S GUIDE autor Borri Helen

ID sesije Dakle, ID sesije je naziv privremene memorije koja će se koristiti za pohranjivanje podataka sesije između pokretanja skripte. Jedan SID - jedno skladište. Nema SID-a, nema pohrane i obrnuto.Pa kako odgovaraju identifikator i naziv

Iz knjige Operativni sustav UNIX Autor Robačevski Andrej M.

10.2.1. ID procesa i ishodište Dva najosnovnija atributa su ID procesa ili pid i ID njegovog nadređenog procesa. pid je pozitivan cijeli broj koji jedinstveno identificira

Iz knjige autora

10.2.3. Uid datotečnog sustava U vrlo posebnim slučajevima, program će možda morati zadržati svoje root privilegije za sve osim pristupa datotečnom sustavu, u kojem slučaju koristi korisnički uid. Izvorno korišten u Linux NFS poslužitelju prostora

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 nadređenog procesa.

Mislite li da se Linux operativni sustav može sam pobrinuti za sebe? Kada sve radi dobro ili vam ne trebaju nikakve nestandardne značajke - sasvim da. Ali ponekad će vam možda trebati vaša intervencija u njegovom radu.

U Linuxu se za svaki pojedinačni program kreira proces kada se pokrene. Nije važno pokrećete li program sami ručno ili to radi sustav ili kernel. Na primjer, program za inicijalizaciju koji se pokreće odmah nakon što je kernel završio s učitavanjem također ima svoj vlastiti proces s ID-om 0. Procesi u linuxu mogu se opisati kao spremnici koji pohranjuju sve informacije o stanju i izvršavanju programa. Ako program dobro radi, onda je sve u redu, ali ako se zamrzne ili trebate podesiti njegov rad, možda ćete morati upravljati procesima u Linuxu.

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

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

Nisam mogao ne uključiti prve točke u članak, ali one su vrlo jednostavne i nećemo ih detaljno analizirati. No, sve ostalo može izgledati komplicirano i nedovoljno opisano.

Počnimo s razumijevanjem pojmova. Zapravo, proces je svaki program. Kao što sam rekao, za svaki pokrenuti program kreira se poseban proces. Kao dio procesa, programu se dodjeljuje procesorsko vrijeme, RAM i drugi resursi sustava. Svaki proces ima svoj identifikator, ID procesa ili jednostavno PID, a Linux procesi se najčešće određuju iz njih. PID nije određen slučajno, kao što sam rekao, program za inicijalizaciju prima PID 1, a svaki sljedeći pokrenuti program prima još jedan. Dakle, PID korisničkih programa već doseže nekoliko tisuća.

Zapravo, Linux procesi nisu tako apstraktni kako vam se sada čine. Sasvim je moguće pokušati ih osjetiti. Otvorite upravitelj datoteka, idite do korijenskog direktorija, a zatim otvorite mapu /proc. Vidite li ovdje hrpu brojeva? Dakle, ovo je sve - PID svih pokrenutih procesa. Svaka od ovih mapa sadrži sve informacije o procesu.

Na primjer, pogledajmo procesnu mapu 1. Mapa ima druge poddirektorije i mnoge datoteke. Datoteka cmdline sadrži informacije o naredbi za pokretanje procesa:

mačka /proc/1/cmdline

/usr/lib/systemd/systemd

Budući da koristim sustav inicijalizacije Systemd, za njega se pokreće prvi proces. Sve se može učiniti s direktorijem /proc. Ali to je vrlo nezgodno, posebno s obzirom na broj pokrenutih procesa u sustavu. Stoga, za provedbu potrebnih zadataka, postoje posebni uslužni programi. Prijeđimo na razmatranje uslužnih programa koji vam omogućuju implementaciju kontrole procesa u Linuxu.

Upravljanje procesima u Linuxu

Linux ima vrlo velik broj uslužnih programa za rješavanje raznih 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 prelak, drugi jer je htop bolji. Usredotočit ćemo se na rad s htop programom i njegovim kolegama u obliku uslužnih programa u GNU stilu, jedan uslužni program, jedna funkcija.

Idemo instalirati htop ako ga već nemate. U Ubuntuu se to radi ovako:

sudo apt instaliraj htop

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

Pogledajte pokrenute procese

Ovo je vrlo jednostavan zadatak, a jednako ga je lako riješiti. Za to postoje mnogi uslužni programi, u rasponu od uobičajenog ps-a do naprednijeg interaktivnog vrha, htop-a i tako dalje.

Otvarajući htop, odmah vidimo popis pokrenutih procesa. Naravno, nisu svi linux procesi prikazani ovdje, ima ih puno u sustavu, već znate, svi oni neće stati na jedan ekran. Prema zadanim postavkama, prikazuju se procesi koji se izvode kao vaš korisnik:

Možete vidjeti sljedeće informacije o procesu:

  • PID- ID procesa
  • KORISNIK- korisnik pod kojim je proces pokrenut
  • PRI- prioritet linux procesa na razini kernela (obično NI+20)
  • N.I.- prioritet izvršenja procesa od -20 do 19
  • S- stanje procesa
  • CPU- korišteni resursi procesora
  • M.E.M.- iskorištena memorija
  • VRIJEME- vrijeme rada procesa

Zaslonu se mogu dodati dodatni parametri, ali ovo su glavni. Možete dodati opcije pomoću izbornika Postavljanje. Sve je vrlo jednostavno, pročitajte savjete i slijedite upute. Na primjer, dodaje se parametar PPID:

Vrlo važna značajka 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 obavljeno. Na primjer, ako želite vidjeti kojim redoslijedom su pokrenuti procesi, sortirajte prema PID-u:

Također postoji zanimljiva mogućnost postavljanja procesa u obliku stabla. Moći ćete vidjeti koji je proces pokrenuo određeni proces. Za prikaz stabla pritisnite tipku F5:

Gotovo iste stvari možete učiniti s ps programom. Samo ovdje nema tako prikladnog interaktivnog načina rada. Sve se radi s 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- prikaži samo procese s ovog terminala
  • -str- prikazati informacije samo o navedenom procesu
  • -u- prikaz procesa samo određenog korisnika

Jednom riječju, da biste vidjeli sve trenutno aktivne procese u Linuxu, koristi se kombinacija pomoćnih opcija:

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

ps aux --sort=%mem

Popis će biti sortiran obrnutim redoslijedom, vrijednosti su veće na dnu, a manje nego 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 želite prikazati sve informacije:

Čini se da ps nema načina da košta procesna stabla. Ali ne baš, postoji zasebna naredba za ovo:

Pronalaženje procesa u Linuxu

Popis procesa je dobar. Ali ponekad, kada je neki proces zamrznut i moramo ubiti Linux proces ili moramo poduzeti neku akciju s njim, moramo odabrati ovaj proces s popisa, saznati njegov PID i informacije o njemu.

Da biste pronašli linux proces u htopu, možete koristiti tipku F3. Pritisnite F3 i upišite ispravnu riječ. Zatim, da biste prešli na sljedeće pojavljivanje, pritisnite F2 ili Esc da biste završili pretraživanje:

Također možete koristiti htop filter za traženje procesa u htopu. Pritisnite F4, upišite riječ i bit će navedeni samo linux procesi čije ime uključuje tu riječ.

U uslužnom programu ps nema filtriranja, ali možemo koristiti uslužni program grep preusmjeravanjem izlaza ps na njega da pronađemo linux proces:

ps aux | grepchromium

Ovo je vrlo često korištena naredba.

Promjena prioriteta procesa

Prioritet linux procesa znači koliko će više CPU vremena biti dato ovom procesu u usporedbi s ostalima. Na taj način možemo vrlo fino podesiti koji će program raditi brže, a koji sporije. Vrijednost prioriteta može se kretati od 19 (minimalni prioritet) do -20 - maksimalni prioritet linux procesa. Štoviše, možete smanjiti prioritet s pravima običnog korisnika, ali da biste ga povećali, potrebna su vam prava superkorisnika.

htop koristi parametar nice za kontrolu prioriteta. Dopustite mi da vas podsjetim da je Priv samo ispravak, u većini slučajeva je više od Nice za 20. Da biste promijenili prioritet procesa, jednostavno postavite pokazivač na njega i pritisnite F7 za smanjenje broja (povećanje prioriteta) ili F8 za povećanje broja.

Ali ne morate koristiti htop da biste riješili ovaj zadatak upravljanja procesima u Linuxu. Sve možete učiniti drugim naredbama. Na primjer, lijepa naredba. Pomoću njega možete odrediti prioritet za pokrenuti proces:

lijepo -n 10 apt-dobiti nadogradnju

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

renice -n 10 -p 1343

Završetak procesa u Linuxu

Ako je proces obješen i ne reagira, mora se prekinuti. U htopu, da biste ubili Linux proces, jednostavno postavite pokazivač na proces i pritisnite F9:

Sustav koristi određene signale za kontrolu procesa, postoje signali koji govore da se proces završi. Evo nekoliko osnovnih signala:

  • SIGKILL- zatražite od procesa da spremi podatke i završi
  • SIGTERM- odmah završite proces bez spremanja

Općenito, postoji nekoliko desetaka 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:

killallchromium

Ograničenje procesa

Upravljanje procesima u Linuxu omogućuje vam kontrolu gotovo svega. Već ste vidjeli što se može učiniti, ali može se učiniti još više. S naredbom ulimit i konfiguracijskom datotekom /etc/security/limits.conf možete ograničiti pristup procesa resursima sustava kao što su memorija, datoteke i procesor. Na primjer, možete ograničiti memoriju procesa Linuxa, broj datoteka itd.

Unos u datoteci izgleda ovako:

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

  • domena- korisničko ime, grupa ili UID
  • tip- vrsta ograničenja - meka ili tvrda
  • element- resurs koji će biti ograničen
  • značenje- nužna granica

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

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

  • nema datoteke
  • kao- maksimalna količina RAM-a
  • stog- maksimalna veličina hrpe
  • cpu- maksimalno vrijeme procesora
  • nproc- maksimalan broj procesorskih jezgri
  • 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 vidjeti ograničenja za određeni proces u proc mapi:

mačka /proc/PID/limits

Maksimalno vrijeme procesora 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 stoga 204800 neograničenih bajtova
Maksimalna veličina datoteke jezgre 0 neograničenih bajtova
Maksimalni rezident postavljen neograničen neograničen broj bajtova
Max procesa 23562 23562 procesa
Maksimalni broj otvorenih datoteka 1024 4096 datoteka
Maks. zaključana memorija 18446744073708503040 18446744073708503040 bajtova
Maksimalni adresni prostor neograničen neograničen broj bajtova
Max datoteka zaključava neograničeno neograničeno zaključavanje
Maks. na čekanju 23562 23562 signala
Maksimalna veličina reda poruka 819200 819200 bajtova
Maksimalno lijep prioritet 0 0
Maksimalni prioritet u stvarnom vremenu 0 0
Max realtime timeout 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 stvara naredbom ulimit.

Evo opcija naredbi:

  • -S- meka granica
  • -H- tvrda granica
  • -a- prikaz svih informacija
  • -f- maksimalna veličina generiranih datoteka
  • -n- maksimalan broj otvorenih datoteka
  • -s- maksimalna veličina hrpe
  • -t- maksimalna količina vremena procesora
  • -u- maksimalan broj pokrenutih procesa
  • -v- maksimalna količina virtualne memorije

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

Sada gledamo:

Postavite ograničenje RAM-a:

ulimit -Sv 500000

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

zaključke

To je sve. Sada vam upravljanje procesima u Linuxu neće stvarati probleme. Razmotrili smo ovu temu vrlo detaljno. Ako imate bilo kakvih pitanja ili prijedloga za dodavanje u članak, pišite u komentarima!

Uputa

Internetski protokol (IP) definira isporuku podataka s jednog mrežnog čvora na drugi. Istodobno, ne jamči točnost isporuke: paketi se mogu izgubiti tijekom prijenosa ili stići pogrešnim redoslijedom kojim su poslani. Za točnost je odgovoran trans protokol. noga razina Protokola upravljanja prijenosom - TCP. TCP uspostavlja vezu, kontrolira slanje i primanje paketa i duplicira svoje radnje u slučaju da odgovor na zahtjev 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 priključak je uvjetni broj između 1 i 65535 koji označava kojoj je aplikaciji paket dodijeljen.

Možete saznati koji procesi koriste portove na vašem računalu pomoću standardnih Windows alata. Na izborniku Start kliknite Pokreni i upišite cmd u naredbeni redak. Potvrdite OK. U prozoru konzole upišite netstat -a -n -o.

Stupac PID prikazuje broj procesa, stupac “ ” prikazuje IP adresu vašeg računala i, odvojen dvotočkom, broj porta koji zauzima odgovarajući proces. "Vanjska adresa" je IP i broj porta udaljenog hosta s kojim se neka aplikacija izvodi.

U prozoru konzole upišite naredbu popisa zadataka. Vratit će popis svih aplikacija s PID kodom koje se izvode na računalu. Na taj ćete način znati koji proces zauzima bilo koji priključak na vašem računalu.

Ovu informaciju možete dobiti na drugi način: pokrenite "Task Manager" iz naredbenog retka upisivanjem taskmgr ili pritiskom na kombinaciju tipki Ctrl+Alt+Delete. U stupcu PID pronađite broj procesa koji vas zanima, u stupcu Naziv slike naziv odgovarajuće aplikacije ili usluge. Ako PID nije prikazan u prozoru Dispečera, idite na stavku "Pregled" glavnog izbornika i odaberite opciju "Odaberi stupce". Označite okvir pored stavke "ID procesa (PID)".

Kada se proces pokrene na računalu, ono prima svoj pid, odnosno identifikator postupak. Ponekad je potrebno saznati upravo ovaj identifikator. Možda iz nekog razloga trebate onemogućiti pokrenuti proces, na primjer, ako ometa uklanjanje programa. Postoji nekoliko načina da saznate pid. Najlakše je to učiniti pomoću Upravitelja zadataka i naredbenog retka.

Trebat će vam

  • - računalo s operacijskim sustavom Windows (XP, Windows 7).

Uputa

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

U odaberite karticu "Procesi". Sada ovdje kliknite na stavku "Prikaz". Pojavit će se dodatni prozor. U njemu odaberite opciju "Odaberi stupce". Pojavit će se dijaloški okvir u kojem će se najviša stavka zvati "ID postupak(pid)." Označite okvir pored njega. Spremite svoje postavke klikom na OK.

Zatim u upravitelju uređaja idite na karticu "Procesi", gdje ćete vidjeti redak "ID postupak". Pronađite ime u njemu postupak, čiji ID želite znati i pogledajte njegovu vrijednost.

Sada će se razmotriti ova vrijednost pomoću naredbenog retka operativnog sustava. Kliknite gumb Start i idite na karticu Svi programi. Odaberite "Dodatna oprema". Ovdje pronađite stavku izbornika "Command Prompt" i pokrenite je. Upišite popis zadataka i pritisnite tipku Enter. Nakon aktiviranja ove naredbe, u prozoru naredbenog retka pojavit će se popis svih trenutno aktivnih procesa. Iza imena svakog od njih ispisuje se njegov identifikator.

Ako trebate brzo dovršiti proces, onda to možete učiniti ovako. Nakon što dobijete ID postupak, u naredbeni redak upišite taskkill /pid 0000. Umjesto nula, unesite broj identifikatora postupak, što zahtijeva "". Nakon toga, sustav će poslati signal da ga dovrši, te će se isključiti.

Bilješka

Budite oprezni pri dovršavanju procesa. Nehotice možete onemogućiti aktivni proces koji je potreban za ispravan rad operacijskog sustava.

Pristup poslužiteljima pošte u The Bat! (kao u drugim programima za e-poštu) se događa putem određenih portova za slanje i primanje pošte. Da biste konfigurirali rad programa za poštu, morate unijeti brojeve SMTP i POP3 portova, kao i nazive poslužitelja, u parametre poštanskog sandučića.

Trebat će vam

  • - poštanske podatke.

Uputa

Idite na web-stranicu svog poslužitelja e-pošte. Na primjer, vaš poslužitelj pošte mail.ru. Morat ćete se prijaviti - odnosno unijeti svoje korisničko ime i lozinku - da biste ušli u svoj osobni poštanski sandučić. Pronađite vezu za pomoć i kliknite na nju.

Popis tema pomoći nalazi se na lijevoj strani. Kliknite na natpis "Pristup iz programa za e-poštu" i odaberite prvu stavku za učitavanje stranice s postavkama. Stranica označava da je naziv poslužitelja dolazne pošte pop.mail.ru, a ime odlaznog poslužitelja smtp.mail.ru. Ovo se odnosi samo na ovu uslugu. U pravilu svaki poštanski poslužitelj može imati različite portove, stoga 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 poslužitelja odlazne i dolazne pošte navedeni su na dnu stranice. Kaže da su za poslužitelj dolazne pošte protokoli označeni brojevima 110 (ako program za poštu radi bez enkripcije) i 995 (s šifriranjem). Da biste saznali koji broj unijeti, proučite postavke svog programa za poštu. Broj porta za odlaznu poštu - 25, 587 ili 2525 (ako program za poštu ne koristi enkripciju) i 465 (kriptiran). Standardni portovi za poštu su 110 i 25. Program također može zadati standardne brojeve portova, pa ćete ih, ako je potrebno, morati ispraviti za ispravne.

Ako koristite drugi poslužitelj e-pošte, posjetite web-mjesto za postavke. Ove vrste parametara su uvijek javne i obično se objavljuju u odjeljku pomoći. Ako vaša tvrtka koristi korporativnu poštu, obratite se svom mrežnom administratoru za brojeve portova.

TCP/IP je zbirka protokoli, koji vam omogućuje povezivanje pojedinačnih računala i mreža u zajedničku računalnu mrežu. Uz pomoć protokoli TCP/IP Većina aplikacijskih programa komunicira putem Interneta.

Vrhunski povezani članci