Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • Si të vrasësh një proces në Linux. Menaxhimi i procesit Linux

Si të vrasësh një proces në Linux. Menaxhimi i procesit Linux

Në këtë artikull, ne do të përpiqemi të krijojmë një modul kernel që mund të ndryshojë PID-në e një procesi tashmë të ekzekutuar në Linux OS, si dhe të eksperimentojmë me proceset që kanë marrë një PID të ndryshuar.


Nje paralajmerim: ndryshimi i PID është një proces jo standard dhe në rrethana të caktuara mund të çojë në një panik të kernelit.

Moduli ynë i testimit do të zbatojë pajisjen e karaktereve /dev/test, leximi nga i cili do të ndryshojë PID-in e procesit. Falë këtij artikulli për një shembull të zbatimit të një pajisjeje me karakter. Kodi i plotë i modulit është dhënë në fund të artikullit. Sigurisht, zgjidhja më e saktë ishte shtimi i një thirrjeje sistemi në vetë kernel, por kjo do të kërkonte rikompilimin e kernelit.

Mjedisi

Të gjitha veprimet e testimit të modulit u kryen në një makinë virtuale VirtualBox me një shpërndarje LInux 64-bit dhe versionin 4.14.4-1 të kernelit. Komunikimi me makinën u krye duke përdorur SSH.

Përpjekja numër 1 zgjidhje e thjeshtë

Disa fjalë për rrymën: ndryshorja aktuale tregon strukturën task_struct me një përshkrim të procesit në kernel (PID, UID, GID, cmdline, hapësirat e emrave, etj.)

Ideja e parë ishte thjesht ndryshimi i parametrit aktual->pid nga moduli i kernelit në atë të dëshiruar.

Static ssize_t device_read (skedari i strukturës *filp, char *buffer, madhësia_t gjatësia, loff_t * offset) ( printk("PID: %d.\n",current->pid); aktuale->pid = 1; printk("new PID: %d.\n",current->pid); , )
Për të testuar funksionalitetin e modulit, shkrova një program në C ++:

#përfshi #përfshi #përfshi 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 >>rr; std:: jashtë<< "My new PID " << getpid() << std::endl; execl("/bin/bash","/bin/bash",NULL); }
Ngarkoni modulin me komandën insmod, krijoni /dev/test dhe provoni.

# ./a.out PID prindi im 293 PID im 782 PID im i ri 782
PID nuk ka ndryshuar. Ndoshta ky nuk është i vetmi vend ku specifikohet PID.

Përpiquni #2 fusha shtesë PID

Nëse aktuale->pid nuk është një ID procesi, atëherë çfarë është? Një vështrim i shpejtë në kodin getpid() tregoi strukturën task_struct që përshkruan procesin Linux dhe skedarin pid.c në kodin burimor të kernelit. Funksioni i kërkuar është __task_pid_nr_ns. Në kodin e funksionit, ekziston një thirrje detyrë-> pids.pid, ne do ta ndryshojmë këtë parametër

Duke përpiluar dhe duke u përpjekur

Meqenëse testova përmes SSH, munda të merrja daljen e programit përpara se kerneli të rrëzohej:

Prindi im PID 293 PID im 1689 PID im i ri 1689
Rezultati i parë, tashmë diçka. Por PID ende nuk ka ndryshuar.

Përpjekja #3 nuk u eksportuan simbolet e kernelit

Një vështrim më i afërt i pid.c dha një funksion që bën atë që na nevojitet.
static void __change_pid(struct task_struct *detyra, enum pid_type type,
struct pid *i ri)
Funksioni pranon një detyrë për të cilën është e nevojshme të ndryshohet PID, lloji PID dhe, në fakt, PID i ri. Krijimi i një PID të ri trajtohet nga funksioni
struct pid *alloc_pid(structur pid_namespace *ns)

Ky funksion pranon vetëm hapësirën e emrave në të cilën do të jetë PID i ri, kjo hapësirë ​​mund të merret duke përdorur task_active_pid_ns.
Por ka një problem: këto simbole të kernelit nuk eksportohen nga kerneli dhe nuk mund të përdoren në module. E mrekullueshme më ndihmoi në zgjidhjen e këtij problemi. Nga atje merret kodi i funksionit find_sym.

Asmlinkage static void (*change_pidR)(struct task_struct *detyra, enum pid_type type, struct pid *pid); static asmlinkage struct pid* (*alloc_pidR)(struct pid_namespace *ns); static int __init test_init(void) ( printk(KERN_ALERT "TEST driver ngarkuar!\n"); change_pidR = find_sym("change_pid"); alloc_pidR = find_sym("alloc_pid"); ... ) static ssize_t device_read(structure file * filp, char *buffer, madhësia_t gjatësia, loff_t * offset) ( printk("PID: %d.\n",current->pid); struct pid* newpid; newpid = alloc_pidR(task_active_pid_ns(aktual)); change_pidR(aktuale ,PIDTYPE_PID,newpid); printk("PID i ri: %d.\n",current->pid); ...)
Përpiloni, ekzekutoni

PID prindi im 299 PID 750 PID im i ri 751
PID ndryshoi! Kerneli caktoi automatikisht një PID falas në programin tonë. Por a është e mundur të përdoret një PID që ka zënë një proces tjetër, si PID 1? Shtoni kodin pas alokimit

Newpid->numrat.nr = 1;
Përpiloni, ekzekutoni

Prindi im PID 314 PID im 1172 PID im i ri 1
Ne marrim PID 1 të vërtetë!

Bash nxjerr një gabim që pengon kalimin e detyrës në komandën %n, por të gjitha funksionet e tjera funksionojnë mirë.

Karakteristikat interesante të proceseve me një PID të ndryshuar

PID 0: Nuk mund të identifikohem

Le të kthehemi te kodi dhe të ndryshojmë PID në 0.

Newpid->numrat.nr = 0;
Përpiloni, ekzekutoni

Prindi im PID284 PID im 1517 PID im i ri 0
Rezulton se PID 0 nuk është aq i veçantë? Ne gëzohemi, shkruajmë dalje dhe ...

Thelbi po bie! Kerneli e përcaktoi detyrën tonë si një DETYRË TË KOSOVËS dhe, duke parë përfundimin, thjesht u rrëzua. Me sa duket, programi ynë duhet të kthehet në PID "normale" përpara se të përfundojë.

Procesi i padukshëm

Le të kthehemi te kodi dhe të vendosim PID, i garantuar se nuk është i zënë
newpid->numrat.nr = 12345;

Përpiloni, ekzekutoni

Prindi im PID296 PID im 735 PID im i ri 12345
Le të shohim se çfarë është në /proc

1148 19224288 37798693 consoles fb kcore locks ndarje swaps version 10149 2226294887 Acpi cpuinfo filesystems key-përdoruesit meminfo scory_debug sys vmallocinfo 102 15 20 2390 5 80 88 Cryto-Ched FS KEYS MISC TRIGGER VMSTAT 11 16 208 24 291 6 81 89 Buddyinfo Pajisje ndërpret modulet kmsg scsi sysvipc zoneinfo 12 17 21 25 296 7 82 9 139 18 22 27 30 76 84 91 cmdline driver irq kpageflags net softirqs tty 14 182 2312 info
Siç mund ta shihni, /proc nuk e përcakton procesin tonë, edhe nëse kemi marrë një PID falas. PID-i i mëparshëm gjithashtu nuk është në /proc, dhe kjo është shumë e çuditshme. Ndoshta ne jemi në një hapësirë ​​tjetër emri dhe për këtë arsye nuk jemi të dukshëm për /proc. Montoni /proc-in e ri dhe shikoni se çfarë ka

1 14 18 210 25 291 738 81 9 pajisje autobusi fs kyç-përdoruesit e kyçeve të faqes tipeinfo softirqs timer_list 10 148 182 22 26 296 741 82 90 sched_debug k fig 21 grosch 21 swap 214g 21page14g 21 swaptime 84g 12 16 20 226 288 4 79 85 ACPI consoles Execdomins irq KPACTOUNT RRITUN SCSI SYSRQ-TRIGGER VMALLOCINFO 16 6 vetë zoneinfo
Si më parë, procesi ynë nuk ekziston, që do të thotë se jemi në hapësirën e zakonshme të emrave. Le të kontrollojmë

Ps-e | grep bash
296 pikë/0 00:00:00 bash

Vetëm një bash, nga i cili nisëm programin. As PID-i i mëparshëm dhe as ai aktual nuk janë në listë.

Ka raste kur aplikacioni fillon të dështojë dhe bashkë me të i gjithë mjedisi i punës, natyrisht, mund të rinisni kompjuterin dhe shërbimi do të zhduket vetvetiu, por ky nuk është një opsion për të rifilluar kompjuterin tuaj çdo herë. Dhe për këtë ka një ekip Vrasin, e cila do t'ju ndihmojë të ndaloni procesin e varjes.

Komanda Vrasin mund të përdoret për të vrarë ose përfunduar një proces duke përdorur "Signal" ose "PID". Komanda Kill dërgon sinjalin e specifikuar për të përfunduar një aplikacion që sillet keq. Nëse nuk specifikohet asnjë sinjal, dërgohet sinjali TERM. Ky sinjal TERM do të vrasë proceset që nuk e kapin atë; për procese të tjera mund të jetë e nevojshme të përdoret sinjali Kill (numri 9) pasi ky sinjal nuk mund të kapet.

SIGTERM është një sinjal që kërkon që procesi të ndalojë funksionimin. Këtij procesi i jepet pak kohë për të përfunduar punën e tij.

Epo, me sinjalin SIGKILL, ne mund ta detyrojmë procesin të përfundojë menjëherë. Dhe Programi nuk ka të drejtë ta injorojë këtë sinjal dhe e mbyll aplikacionin.

Më poshtë është formati i komandës Kill:

vrasin [ -sinjal | -s sinjal ] pid ...

Mënyra më e lehtë për të vrarë një proces është të gjesh PID-in e burimit dhe më pas të ekzekutosh PID-në si një argument për komandën Kill.

Çfarë është PID?

Secilit proces Linux ose Unix ose program të ekzekutueshëm i caktohet automatikisht një numër unik identifikimi i procesit (PID). PID cakton automatikisht një numër për çdo proces në sistem.

Ju mund të gjeni PID-in e një burimi duke përdorur komandën "pidof" ose komandën "ps". Për të gjetur PID-in e një procesi (le të themi firefox), përdorni komandën e mëposhtme

Pidof firefox

Ju gjithashtu mund të përdorni komandën në një formë tjetër:

Ps-A | grep -i firefox

Në shembullin e mësipërm, shfaqet numri "23814" i cili është PID i procesit firefox. Pasi PID-i i procesit (firefox) të jetë i njohur për ju, mund të përdorni komandën Kill për të vrarë procesin (firefox) siç tregohet më poshtë.

Vras 23814

Kur një komandë kryen një kill, domethënë, ajo dërgon një sinjal në proces, PID i të cilit kalohet së bashku me komandën si argument.

Për të qenë më specifik, komanda Kill ka format e mëposhtme:

  • vrasin PID
  • vrasin -15 PID
  • vrasin -9 PID
  • vras -SIGTERM PID
  • vras -SIGTERM PID

Komanda Kill ka kodet e mëposhtme të kthimit:

  • 0 - për sukses
  • 1 - dështim
  • 64 - sukses i pjesshëm (nëse specifikohet më shumë se një proces)

Një komandë tjetër që mund të përdorni është Vriti të gjithë. Killall përdor gjithashtu emrin e procesit në vend të PID dhe përfundon të gjitha rastet e procesit me atë emër. Për shembull, nëse keni disa raste të Firefox-it që funksionojnë, mund t'i përfundoni të gjitha me komandën

killall firefox

Për serverin X, ekziston një komandë tjetër e quajtur xkill, të cilat mund të vrasin proceset. Komanda Xkill është për modalitetin grafik, pa kaluar emrin e procesit ose PID-in e tij, d.m.th. nëse ekzekutoni në një terminal

atëherë do të keni një kryq, me të cilin mund të përfundoni një program që nuk funksionon thjesht duke klikuar mbi të.

Është kaq e thjeshtë dhe e lehtë për të vrarë proceset në sistemet operative GNU/Linux.

Sistemi operativ UNIX Robachevsky Andrey M.

ID e procesit (PID)

Çdo proces ka një PID unik që lejon kernelin të bëjë dallimin midis proceseve. Kur krijohet një proces i ri, kerneli i cakton atij identifikuesin tjetër të lirë (që do të thotë, i pashoqëruar me asnjë proces). Identifikuesit caktohen në rend rritës, d.m.th. ID-ja e procesit të ri është më e madhe se id-ja e procesit të krijuar para tij. Nëse identifikuesi ka arritur vlerën maksimale, procesi tjetër do të marrë PID-in minimal të lirë dhe cikli përsëritet. Kur një proces përfundon, kerneli lëshon identifikuesin që ka zënë.

Nga libri Arkitektura e Sistemit Operativ UNIX autori Bach Maurice J

4.4 TRANSFORMIMI I NJË EMRI TË PËRBËRSHËM TË SKIDAVE (SHTEGJA E KËRKIMIT) NË NJË ID INDEKSI Një skedar fillimisht i referohet me emrin e tij të rrugës (emri i rrugës së kërkimit), si në komandat e hapura, chdir (ndryshimi i drejtorisë) ose lidhja. Meqenëse nga brenda kerneli punon me indekse dhe jo me

Nga libri Një profesion i rrallë autori Zuev Evgeny

Çfarë është një identifikues? Përveç paqartësive në sintaksë, shpejt u shfaqën telashe të tjera. Është më e vështirë t'i tregosh me shembuj, ndaj do të duhet t'i përshkruani me fjalë.Sintaksa e gjuhës C++ është e papërshtatshme edhe në një aspekt tjetër. Me pak fjalë, i drejtpërdrejtë

Nga libri Programim autor Kozlova Irina Sergeevna

11. Identifikues. Fjalë kyçe Një identifikues është një sekuencë numrash, shkronjash dhe karakteresh speciale. Në këtë rast, e para është një shkronjë ose një karakter i veçantë. Për të marrë identifikues, mund të përdorni shkronja të vogla ose të mëdha të alfabetit latin.

Nga libri 200 programet më të mira për internetin. Tutorial popullor autori Krainsky I

Process Guardian XP Prodhuesi: T.A.S. Programimi i pavarur (http://www.tas-independent-programming.com). Statusi: falas. Lidhja e shkarkimit: http://www.tas-independent-programming.com/cgi-bin/countdown.pl?Guardian. exe .Madhësia: 2.4 MB. Qëllimi kryesor i këtij programi është të menaxhojë proceset që ekzekutohen në kompjuter.

Nga libri Microsoft Visual C++ dhe MFC. Programimi për Windows 95 dhe Windows NT autor Frolov Alexander Vyacheslavovich

Hapni identifikuesin e skedarit Klasa CFile përfshin anëtarin e të dhënave m_hFile të tipit UINT. Ai ruan ID-në e skedarit të hapur. Nëse keni krijuar një objekt CFile por nuk keni hapur ende ndonjë skedar, m_hFile vendoset në konstantën hFileNull.

Nga libri UNIX: Ndërveprimi i procesit autor Stephens William Richard

ID-ja e transaksionit Një pjesë tjetër e strategjisë së afatit dhe ritransmetimit është përdorimi i ID-ve të transaksionit (ID-ja e transaksionit ose XID) për të dalluar kërkesat e klientit dhe përgjigjet e serverit. Kur një klient thërret një funksion RPC, biblioteka e cakton këtë

Nga libri TCP/IP Architecture, Protocols, Implementation (duke përfshirë IP versionin 6 dhe IP Security) autori Faith Sidney M

16.7 Vula kohore dhe ID e mesazhit Kur merrni postë, është interesante të dini se kur është dërguar dhe marrë. SMTP e shton këtë informacion në mesazhin që po përcillet. Përveç kësaj, ky protokoll ruan të gjithë hostet që dërguan mesazhin e postës dhe kohën

Nga libri Adobe Audition 3 tutorial autor autor i panjohur

Dinamik EQ (procesi) Efekti Dynamic EQ ndryshon sasinë e filtrimit me kalimin e kohës. Për shembull, në gjysmën e parë të valës mund të rritni frekuencat e larta, dhe në gjysmën e dytë mund të ndryshoni gjerësinë e gjerësisë së brezit të prekur. Dritarja Dynamic EQ ka tre skeda: Gain, Frequency dhe Q (gjerësia e brezit). 1. Grafiku i frekuencës (grafiku

Nga Manuali PHP i autorit

Pan/Zgjerues (procesi) Efekti Pan/Zgjeron ju lejon të zhvendosni kanalin qendror (komponentin mono) jashtë sinjalit stereo dhe të zgjeroni ose ngushtoni ndarjen stereo të kanaleve majtas dhe djathtas. Kanali qendror është transmetuar duke përdorur qendrën dhe kanalet rrethuese të regjistrimit stereo,

Nga libri Zhvillimi i aplikacioneve në një mjedis Linux. Edicioni i dyte autor Johnson Michael K.

Stretch (proces) Efekti Stretch ju lejon të ndryshoni lartësinë (tonin) e një sinjali audio, tempin ose të dyja. Për shembull, mund ta përdorni këtë efekt për të rritur hapin e një pike pa ndryshuar kohëzgjatjen e tij, ose anasjelltas për të ndryshuar kohëzgjatjen pa ndryshuar

Nga libri Firebird UDHËZUES PËR ZHVILLIMIN E BAZAVE TË TË DHËNAVE autor Borri Helen

ID-ja e sesionit Pra, ID-ja e sesionit është emri i ruajtjes së përkohshme që do të përdoret për të ruajtur të dhënat e sesionit midis ekzekutimeve të skriptit. Një SID - një ruajtje. Nuk ka SID, nuk ka ruajtje dhe anasjelltas. Pra, si korrespondojnë identifikuesi dhe emri

Nga libri Sistemi Operativ UNIX autor Robachevsky Andrey M.

10.2.1. ID-ja dhe origjina e procesit Dy nga atributet më themelore janë ID-ja e procesit, ose pid, dhe ID-ja e procesit të tij mëmë. pid është një numër i plotë pozitiv që identifikohet në mënyrë unike

Nga libri i autorit

10.2.3. Uid i sistemit të skedarëve Në raste shumë të veçanta, një program mund të ketë nevojë të ruajë privilegjet e tij rrënjësore për çdo gjë, përveç aksesit të sistemit të skedarëve, në këtë rast ai përdor uid-in e përdoruesit. Përdorur fillimisht në serverin hapësinor Linux NFS

Nga libri i autorit

ID e domenit Kur krijoni një domen në një bazë të dhënash, duhet të specifikoni një ID domeni që është unik globalisht në bazën e të dhënave. Zhvilluesit shpesh përdorin një parashtesë ose prapashtesë në identifikuesit e domenit për të përmirësuar dokumentacionin. Për shembull: KRIJO

Nga libri i autorit

Nga libri i autorit

ID-ja e procesit prind (PPID) Identifikuesi i procesit prind.

A mendoni se sistemi operativ Linux mund të kujdeset për veten automatikisht? Kur gjithçka funksionon mirë ose nuk keni nevojë për ndonjë veçori jo standarde - po. Por ndonjëherë ju mund të keni nevojë për ndërhyrjen tuaj në punën e tij.

Në Linux, për çdo program individual, krijohet një proces kur ai niset. Nuk ka rëndësi nëse e drejtoni vetë programin manualisht, apo nëse është bërë nga sistemi apo kerneli. Për shembull, programi i inicializimit që funksionon menjëherë pasi kerneli ka përfunduar ngarkimin ka gjithashtu procesin e tij me ID 0. Proceset në linux mund të përshkruhen si kontejnerë që ruajnë të gjitha informacionet rreth gjendjes dhe ekzekutimit të programit. Nëse programi funksionon mirë, atëherë gjithçka është në rregull, por nëse ngrin ose ju duhet të ndryshoni funksionimin e tij, mund t'ju duhet të menaxhoni proceset në Linux.

Ky artikull do të mbulojë një temë të gjerë, ne do të shqyrtojmë mundësi të tilla:

  • Shikoni proceset e ekzekutimit
  • Shikimi i informacionit të procesit
  • Gjetja e proceseve në Linux
  • Ndryshimi i Prioritetit të Proceseve
  • Përfundimi i proceseve
  • Kufiri i memories së procesit

Nuk mund të mos përfshija pikat e para në artikull, por ato janë shumë të thjeshta dhe nuk do t'i analizojmë në detaje. Por gjithçka tjetër mund të duket e ndërlikuar dhe e përshkruar në mënyrë të pamjaftueshme.

Le të fillojmë duke kuptuar termat. Në fakt, një proces është çdo program. Siç thashë, krijohet një proces i veçantë për çdo program të nisur. Si pjesë e procesit, programit i ndahet koha e procesorit, RAM dhe burime të tjera të sistemit. Secili proces ka identifikuesin e tij, Process ID ose thjesht PID, dhe proceset Linux më së shpeshti përcaktohen prej tyre. PID nuk përcaktohet rastësisht, siç thashë, programi i inicializimit merr PID 1, dhe çdo program i mëpasshëm ekzekutues merr një më shumë. Kështu, PID e programeve të përdoruesve tashmë arrin disa mijëra.

Në fakt, proceset Linux nuk janë aq abstrakte sa ju duken tani. Është mjaft e mundur të përpiqeni t'i ndjeni ato. Hapni menaxherin e skedarëve tuaj, lundroni te direktoria rrënjësore dhe më pas hapni dosjen /proc. Shihni një mori numrash këtu? Pra, kjo është e gjitha - PID e të gjitha proceseve që funksionojnë. Secila prej këtyre dosjeve përmban të gjithë informacionin rreth procesit.

Për shembull, le të shohim dosjen e procesit 1. Dosja ka nëndrejtori të tjera dhe shumë skedarë. Skedari cmdline përmban informacion në lidhje me komandën për të filluar procesin:

cat /proc/1/cmdline

/usr/lib/systemd/systemd

Meqenëse përdor sistemin e inicializimit Systemd, procesi i parë është nisur për të. Gjithçka mund të bëhet me drejtorinë /proc. Por kjo është shumë e papërshtatshme, veçanërisht duke marrë parasysh numrin e proceseve të ekzekutuara në sistem. Prandaj, për të zbatuar detyrat e nevojshme, ekzistojnë shërbime të veçanta. Le të kalojmë në shqyrtimin e shërbimeve që ju lejojnë të zbatoni kontrollin e procesit në Linux.

Menaxhimi i procesit Linux

Linux ka një numër shumë të madh të shërbimeve për zgjidhjen e detyrave të ndryshme të menaxhimit të procesit. Këto janë zgjidhje të tilla shumëfunksionale si htop, top, si dhe shërbime të thjeshta, për shembull, ps, kill, killall, who, etj. Unë nuk do t'i konsideroj shërbimet grafike në këtë artikull dhe nuk do t'i konsideroj as ato të para. E para është sepse është shumë e lehtë, e dyta sepse htop është më i mirë. Ne do të fokusohemi në punën me programin htop dhe homologët e tij në formën e shërbimeve të stilit GNU, një mjet, një funksion.

Le të instalojmë htop nëse nuk e keni tashmë. Në Ubuntu bëhet kështu:

sudo apt instaloni htop

Në shpërndarjet e tjera, ju vetëm duhet të përdorni menaxherin tuaj të paketave. Emri i paketës është i njëjtë.

Shikoni proceset e ekzekutimit

Kjo është një detyrë shumë e thjeshtë dhe po aq e lehtë për t'u zgjidhur. Ka shumë shërbime për këtë, duke filluar nga ps-të e zakonshme deri tek ato më të avancuara ndërvepruese, htop, e kështu me radhë.

Duke hapur htop, ne menjëherë shohim një listë të proceseve që funksionojnë. Sigurisht, jo të gjitha proceset linux shfaqen këtu, ka shumë prej tyre në sistem, ju tashmë e dini, të gjitha nuk do të përshtaten në një ekran. Si parazgjedhje, shfaqen proceset që ekzekutohen si përdoruesi juaj:

Ju mund të shihni informacionin e mëposhtëm në lidhje me procesin:

  • PID- ID e procesit
  • PËRDORUESI- përdoruesi nën të cilin filloi procesi
  • PRI- Prioriteti i procesit linux në nivelin e kernelit (zakonisht NI+20)
  • N.I.- Prioriteti i ekzekutimit të procesit nga -20 në 19
  • S- gjendja e procesit
  • CPU- burimet e përdorura të procesorit
  • M.E.M.- memorie e përdorur
  • KOHA- koha e funksionimit të procesit

Parametra shtesë mund të shtohen në ekran, por këto janë ato kryesore. Mund të shtoni opsione duke përdorur menynë Setup. Gjithçka është shumë e thjeshtë, lexoni këshillat dhe ndiqni udhëzimet. Për shembull, parametri PPID shtohet:

Një veçori shumë e rëndësishme e programit është se ju mund të renditni proceset në Linux sipas parametrit të dëshiruar. Thjesht klikoni mbi emrin e parametrit, ai do të theksohet me të gjelbër dhe do të bëhet renditja. Për shembull, nëse doni të shihni se në çfarë rendi janë nisur proceset, renditni sipas PID:

Ekziston gjithashtu një mundësi interesante për të vendosur procese në formën e një peme. Ju do të jeni në gjendje të shihni se cili proces filloi një proces të caktuar. Për të shfaqur pemën, shtypni butonin F5:

Ju mund të bëni pothuajse të njëjtat gjëra me programin ps. Vetëm këtu nuk ka një mënyrë të tillë të përshtatshme interaktive. Gjithçka bëhet me opsione.

Konsideroni opsionet kryesore që do të përdorim:

  • -e- shfaq informacion për të gjitha proceset
  • -a- shfaq informacion për të gjitha proceset e kërkuara më shpesh
  • -t- shfaq vetëm proceset nga ky terminal
  • -fq- tregoni informacion vetëm për procesin e specifikuar
  • -u- tregoni vetëm proceset e një përdoruesi specifik

Me një fjalë, për të parë të gjitha proceset aktualisht aktive në Linux, përdoret një kombinim i opsioneve aux:

Programi tregon të gjithë parametrat e njëjtë, vetëm se nuk ka asnjë ndërfaqe interaktive. Ju mendoni se është e pamundur të renditni proceset këtu, por gaboheni, mundeni. Ekziston një opsion i llojit për këtë. Ju mund t'i renditni ato sipas çdo fushe, për shembull:

ps aux --sort=%mem

Lista do të renditet në rend të kundërt, vlerat janë më të mëdha në fund dhe më të vogla se në krye. Nëse është e nevojshme në rend të kundërt, shtoni një minus:

ps aux --sort=-%cpu

Prioritetet e procesit Linux ose çdo parametër tjetër mund të përdoren si fushë renditjeje. Ju gjithashtu mund të shkurtoni daljen nëse nuk dëshironi të shfaqni të gjithë informacionin:

Duket se ps nuk ka asnjë mënyrë për të përpunuar pemët me kosto. Por jo plotësisht, ekziston një komandë e veçantë për këtë:

Gjetja e proceseve në Linux

Lista e proceseve është e mirë. Por ndonjëherë, kur një proces është i ngrirë dhe ne duhet të vrasim procesin Linux ose duhet të ndërmarrim disa veprime me të, duhet të zgjedhim këtë proces nga lista, të zbulojmë PID-in e tij dhe informacionin rreth tij.

Për të gjetur procesin linux në htop, mund të përdorni tastin F3. Shtypni F3 dhe shkruani fjalën e duhur. Më pas, për të kaluar në ndodhinë tjetër, shtypni F2 ose Esc për të përfunduar kërkimin:

Ju gjithashtu mund të përdorni filtrin htop për të kërkuar procese në htop. Shtypni F4, shkruani një fjalë dhe do të shfaqen vetëm proceset linux emri i të cilave përfshin atë fjalë.

Nuk ka filtrim në programin ps, por ne mund të përdorim mjetin grep duke ridrejtuar daljen e ps tek ai për të gjetur procesin e linux:

ps aux | grepkromi

Kjo është një komandë shumë e përdorur.

Ndryshimi i Prioritetit të Proceseve

Prioriteti i një procesi linux nënkupton se sa më shumë kohë CPU do t'i jepet këtij procesi në krahasim me të tjerët. Në këtë mënyrë ne mund të sintonizojmë shumë mirë se cili program do të funksionojë më shpejt dhe cili do të funksionojë më ngadalë. Vlera e përparësisë mund të variojë nga 19 (përparësia minimale) në -20 - prioriteti maksimal i procesit linux. Për më tepër, ju mund të zvogëloni përparësinë me të drejtat e një përdoruesi të rregullt, por për ta rritur atë, ju nevojiten të drejtat e superpërdoruesit.

htop përdor parametrin nice për të kontrolluar prioritetin. Më lejoni t'ju kujtoj se Priv është vetëm një korrigjim, në shumicën e rasteve është më shumë se Nice me 20. Për të ndryshuar përparësinë e një procesi, thjesht vendosni kursorin mbi të dhe shtypni F7 për të ulur numrin (rrisni përparësinë) ose F8 për të rritur numrin.

Por ju nuk keni nevojë të përdorni htop për të zgjidhur këtë detyrë të menaxhimit të procesit Linux. Ju mund të bëni gjithçka me komanda të tjera. Për shembull, komanda e bukur. Me të, ju mund të specifikoni përparësinë për procesin e ekzekutimit:

nice -n 10 apt-get upgrade

Ose ndryshoni prioritetin për një tashmë ekzistues sipas pid-it të tij:

renice -n 10 -p 1343

Përfundimi i proceseve në Linux

Nëse procesi është i varur dhe nuk përgjigjet, ai duhet të ndërpritet. Në htop, për të vrarë një proces Linux, thjesht vendosni kursorin në proces dhe shtypni F9:

Sistemi përdor sinjale të caktuara për të kontrolluar proceset, ka sinjale që tregojnë që procesi të përfundojë. Këtu janë disa sinjale themelore:

  • SIGKILL- kërkoni që procesi të ruajë të dhënat dhe të përfundojë
  • SIGTERM- përfundoni procesin menjëherë pa kursim

Në përgjithësi, ka disa dhjetëra sinjale, por ne nuk do t'i konsiderojmë ato. Le të dërgojmë një sinjal SIGKILL:

Ju gjithashtu mund të përdorni mjetin kill:

Ju gjithashtu mund të vrisni një proces me emër:

vrasin kromin

Kufizimi i procesit

Menaxhimi i procesit në Linux ju lejon të kontrolloni pothuajse gjithçka. E keni parë tashmë se çfarë mund të bëhet, por mund të bëhet edhe më shumë. Me komandën ulimit dhe skedarin e konfigurimit /etc/security/limits.conf, mund t'i kufizoni proceset nga aksesi i burimeve të sistemit si kujtesa, skedarët dhe procesori. Për shembull, mund të kufizoni kujtesën e procesit Linux, numrin e skedarëve, etj.

Hyrja në skedar duket si kjo:

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

  • domain- emri i përdoruesit, grupi ose UID
  • lloji- lloji i kufizimeve - i butë ose i fortë
  • element- një burim që do të jetë i kufizuar
  • kuptimi- kufiri i nevojshëm

Kufijtë e vështirë vendosen nga superpërdoruesi dhe nuk mund të ndryshohen nga përdoruesit normalë. Limitet e buta mund të ndryshohen nga përdoruesit duke përdorur komandën ulimit.

Konsideroni kufizimet kryesore që mund të zbatohen për proceset:

  • nofile
  • si- sasia maksimale e RAM-it
  • rafte- madhësia maksimale e stivës
  • CPU- koha maksimale e procesorit
  • nproc- numri maksimal i bërthamave të procesorit
  • flokët- numri i skedarëve të bllokuar
  • bukur- prioriteti maksimal i procesit

Për shembull, le të kufizojmë kohën e procesorit për proceset e sergiy të përdoruesit:

sergiy hard nproc 20

Ju mund të shikoni kufijtë për një proces të veçantë në dosjen proc:

cat /proc/PID/kufijtë

Koha maksimale e procesorit të pakufizuar sekonda e pakufizuar
Madhësia maksimale e skedarit bajt të pakufizuar dhe të pakufizuar
Madhësia maksimale e të dhënave bajt të pakufizuar të pakufizuar
Madhësia maksimale e stivës 204800 bajt të pakufizuar
Madhësia maksimale e skedarit bazë 0 bajt të pakufizuar
Maksimumi i banorit vendos bajt të pakufizuar të pakufizuar
Proceset maksimale 23562 23562 procese
Maksimumi i skedarëve të hapur 1024 4096 skedarë
Memorie maksimale e kyçur 18446744073708503040 18446744073708503040 bajt
Hapësira maksimale e adresës bajt të pakufizuar dhe të pakufizuar
Skedari Max bllokon bravë të pakufizuar të pakufizuar
Sinjalet maksimale në pritje 23562 23562 sinjale
Madhësia maksimale e radhës së mesazheve 819200 819200 bajt
Prioriteti maksimal i bukur 0 0
Prioriteti maksimal në kohë reale 0 0
Kohëzgjatja maksimale në kohë reale, e pakufizuar, e pakufizuar

Kufizimet e ndryshuara në këtë mënyrë do të hyjnë në fuqi pas një rindezjeje. Por ne gjithashtu mund të vendosim kufij për shell-in aktual dhe proceset që krijon me komandën ulimit.

Këtu janë opsionet e komandës:

  • -S- kufi i butë
  • -H- kufi i vështirë
  • -a- shfaq të gjitha informacionet
  • -f- madhësia maksimale e skedarëve të krijuar
  • -n- numri maksimal i skedarëve të hapur
  • -s- madhësia maksimale e stivës
  • -t- sasia maksimale e kohës së procesorit
  • -u- numri maksimal i proceseve të ekzekutimit
  • -v- sasia maksimale e memories virtuale

Për shembull, ne mund të vendosim një kufi të ri për numrin e skedarëve që mund të hapen:

Tani shikojmë:

Vendosni kufirin e RAM-it:

ulimit -Sv 500000

Ju kujtoj se ky kufizim do të jetë i rëndësishëm për të gjitha programet që ekzekutohen në këtë terminal.

konkluzionet

Kjo eshte e gjitha. Tani menaxhimi i procesit në Linux nuk do t'ju shkaktojë probleme. Ne e kemi shqyrtuar këtë temë në shumë detaje. Nëse keni ndonjë pyetje ose sugjerim për të shtuar në artikull, shkruani në komente!

Udhëzim

Protokolli i Internetit (IP) përcakton shpërndarjen e të dhënave nga një nyje rrjeti në tjetrën. Në të njëjtën kohë, ai nuk garanton saktësinë e dorëzimit: paketat mund të humbasin gjatë transmetimit ose të arrijnë në rendin e gabuar në të cilin janë dërguar. Protokolli trans është përgjegjës për saktësinë. këmbë niveli i Protokollit të Kontrollit të Transmisionit - TCP. TCP vendos një lidhje, kontrollon dërgimin dhe marrjen e paketave dhe kopjon veprimet e tij në rast se një përgjigje ndaj një kërkese nuk merret ose paketat humbasin. Është e rëndësishme të kuptohet se TCP vendos shkëmbimin e paketave jo vetëm midis nyjeve, por midis aplikacioneve softuerike. Porta e rrjetit është një numër i kushtëzuar midis 1 dhe 65535 që tregon se cilit aplikacion i është caktuar paketa.

Ju mund të zbuloni se cilat procese përdorin porte në kompjuterin tuaj duke përdorur mjete standarde të Windows. Nga menyja Start, klikoni Run dhe shkruani cmd në vijën e komandës. Konfirmo OK. Në dritaren e konsolës, shkruani netstat -a -n -o.

Kolona PID tregon numrin e procesit, kolona " " tregon adresën IP të kompjuterit tuaj dhe, e ndarë me dy pika, numrin e portit që është zënë nga procesi përkatës. "Adresa e jashtme" është IP dhe numri i portit të hostit në distancë me të cilin po ekzekutohet një aplikacion.

Në dritaren e konsolës, shkruani komandën e listës së detyrave. Ai do të kthejë një listë të të gjitha aplikacioneve me një kod PID që janë duke u ekzekutuar në kompjuter. Në këtë mënyrë do të dini se cili proces po zë çdo port në kompjuterin tuaj.

Ju mund ta merrni këtë informacion në një mënyrë tjetër: hapni "Task Manager" nga linja e komandës duke shtypur taskmgr ose duke shtypur kombinimin e tastit Ctrl+Alt+Delete. Në kolonën PID, gjeni numrin e procesit që ju intereson, në kolonën Emri i imazhit, emrin e aplikacionit ose shërbimit përkatës. Nëse PID nuk shfaqet në dritaren e Dispeçerit, shkoni te artikulli "Shiko" të menysë kryesore dhe zgjidhni opsionin "Zgjidh kolonat". Kontrolloni kutinë pranë artikullit "Process ID (PID)".

Kur një proces fillon në një kompjuter, ai merr pid-in e tij, domethënë një identifikues procesi. Ndonjëherë bëhet e nevojshme të zbulohet pikërisht ky identifikues. Ndoshta për ndonjë arsye ju duhet të çaktivizoni procesin e ekzekutimit, për shembull, nëse ndërhyn në heqjen e programit. Ka disa mënyra për të zbuluar pid. Më e lehtë është ta bëni atë me Task Manager dhe Command Prompt.

Do t'ju duhet

  • - kompjuter me Windows OS (XP, Windows 7).

Udhëzim

Shtypni ctrl+alt+del në tastierën tuaj. Nëse sistemi juaj operativ është Windows XP, atëherë menaxheri i detyrave do të shfaqet menjëherë, nëse Windows 7, do të shfaqet një dritare në të cilën mund ta zgjidhni atë.

Zgjidhni skedën "Proceset". Tani këtu klikoni në artikullin "Shiko". Do të shfaqet një dritare shtesë. Në të, zgjidhni opsionin "Zgjidh kolonat". Do të shfaqet një kuti dialogu, në të cilën artikulli më i lartë do të quhet "ID procesi(pid)." Kontrolloni kutinë pranë tij. Ruani cilësimet tuaja duke klikuar OK.

Pastaj në menaxherin e pajisjes, shkoni te skeda "Proceset", ku do të shihni rreshtin "ID procesi". Gjeni një emër në të procesi, ID e të cilit dëshironi të dini dhe shikoni vlerën e tij.

Tani do të konsiderohet, kjo vlerë duke përdorur linjën e komandës së sistemit operativ. Klikoni butonin Start dhe shkoni te skeda Të gjitha programet. Zgjidhni "Accessories". Këtu, gjeni artikullin e menysë "Command Prompt" dhe ekzekutoni atë. Shkruani listën e detyrave dhe shtypni tastin Enter. Pas aktivizimit të kësaj komande, një listë e të gjitha proceseve aktualisht aktive do të shfaqet në dritaren e linjës së komandës. Pas emrit të secilit prej tyre do të shkruhet identifikuesi i tij.

Nëse ju duhet të përfundoni shpejt procesin, atëherë mund ta bëni si kjo. Pasi të keni marrë ID-në procesi, shkruani taskkill /pid 0000 në vijën e komandës. Në vend të zerave, shkruani numrin e identifikuesit procesi, e cila kërkohet nga "". Pas kësaj, sistemi do të dërgojë një sinjal për ta përfunduar atë dhe do të fiket.

shënim

Kini kujdes kur përfundoni proceset. Pa dashje, mund të çaktivizoni një proces aktiv që kërkohet për funksionimin e saktë të sistemit operativ.

Aksesimi i serverëve të postës në The Bat! (si në programet e tjera të postës elektronike) ndodh përmes porteve të caktuara për të dërguar dhe marrë postë. Për të konfiguruar punën e programit të postës, duhet të futni numrat e portit SMTP dhe POP3, si dhe emrat e serverëve, në parametrat e kutisë postare.

Do t'ju duhet

  • - të dhënat e postës.

Udhëzim

Shkoni në faqen e internetit të serverit tuaj të postës. Për shembull, serveri juaj i postës mail.ru. Do t'ju duhet të identifikoheni - domethënë të shkruani emrin e përdoruesit dhe fjalëkalimin - për të hyrë në kutinë tuaj postare personale. Gjeni lidhjen e ndihmës dhe klikoni mbi të.

Lista e temave të ndihmës është në të majtë. Klikoni në mbishkrimin "Qasja nga programet e postës elektronike" dhe zgjidhni artikullin e parë për të ngarkuar faqen e cilësimeve. Faqja tregon se emri i serverit të postës hyrëse është pop.mail.ru, dhe emri i serverit në dalje është smtp.mail.ru. Kjo vlen vetëm për këtë shërbim. Si rregull, çdo server postimi mund të ketë porte të ndryshme, kështu që shkoni në faqen zyrtare të qendrës së mbështetjes dhe zbuloni të dhënat. Ka edhe faqe në internet që ofrojnë informacion për pothuajse të gjitha shërbimet që ekzistojnë në internet.

Numrat e portave të serverëve të postës dalëse dhe hyrëse janë renditur në fund të faqes. Ai thotë se për serverin e postës hyrëse, protokollet numërohen 110 (nëse programi i postës funksionon pa kriptim) dhe 995 (me enkriptim). Për të zbuluar se cilin numër duhet të futni, studioni cilësimet e programit tuaj të postës. Numri i portës së postës dalëse - 25, 587 ose 2525 (nëse programi i postës nuk përdor enkriptim) dhe 465 (i koduar). Portat standarde të postës janë 110 dhe 25. Programi gjithashtu mund të paracaktojë numrat standardë të portave, kështu që nëse është e nevojshme, do t'ju duhet t'i korrigjoni ato për ato të sakta.

Nëse jeni duke përdorur një server tjetër të postës, vizitoni faqen e internetit për cilësimet. Këto lloj parametrash janë gjithmonë publike dhe zakonisht postohen në seksionin e ndihmës. Nëse kompania juaj përdor postën e korporatës, kontaktoni administratorin e rrjetit tuaj për numrat e portit.

TCP/IP është një koleksion protokollet, i cili ju lejon të lidhni kompjuterë dhe rrjete individuale në një rrjet të përbashkët kompjuterik. Me ndihmë protokollet TCP/IP Shumica e programeve aplikative komunikojnë nëpërmjet internetit.

Artikujt kryesorë të lidhur