Príkazy A-Z

Ako zabiť alebo ukončiť proces systému Linux Sprievodca príručkou

Ako zabiť alebo ukončiť proces systému Linux Sprievodca príručkou

Viacprocesové operačné systémy ako Linux a BSD využívajú niekoľko metód na maximalizáciu využitia procesora. Proces je jednoducho vykonávací program. Pretože v danom čase bude bežať viac ako jeden proces Linuxu, je riadenie procesov v systéme Linux mimoriadne dôležité. Používatelia často čelia problémom, ako je obmedzenie zdrojov CPU, keď beží príliš veľa programov. Takéto situácie sa objavia, keď procesor nezvládne rastúci počet procesov. Aj keď to úplne nezávisí od výkonu vášho procesora, môže byť zaobchádzanie s procesmi typu „hanged“ alebo „zombie“ dosť frustrujúce. Aby sme vám pomohli zmierniť tieto udalosti, navrhujeme niekoľko štandardných spôsobov zabitia týchto procesov.

Osvojte si nereagujúcu správu procesov v systéme Linux


Dozviete sa niekoľko spôsobov, ako ukončiť proces systému Linux, ktorý vôbec nereaguje. Ak prichádzate zo systému Windows, mohli by ste ovládať klávesové skratky Ctrl + Alt + Delete. Podobne majú používatelia počítačov Mac metódu Command + Option + Escape na zabíjanie zmrazených procesov. Linux je oveľa všestrannejší ako jeho náprotivky a ponúka viac ako jednu metódu riešenia mŕtvych / nereagujúcich procesov.

Rôzne metódy zabitia mŕtveho procesu systému Linux


Načrtneme hlavne dve metódy zabíjania zombie procesov. Pri prvej metóde použijeme terminál Linux. Najskôr budeme musieť identifikovať ID procesu. Po úspešnom získaní môžeme tento PID použiť na zabitie programu vysielaním špecifických signálov na tento PID.

Dozviete sa tiež, ako vykonávať také úlohy zabíjania Linuxu z grafického užívateľského rozhrania alebo z X okna. Budeme využívať „Monitor systému“ aplikácia dostupná v Ubuntu. Aj keď sa jedná o aplikáciu GNOME, podobné nástroje sú k dispozícii aj pre iné desktopové prostredia Linuxu.

Ukončite proces, ktorý neodpovedá z príkazového riadku


Existuje niekoľko nástrojov na ukončenie nereagujúceho alebo zablokovaného procesu z príkazového riadku, vrátane zabiť, pkill, a zabiť všetkých. Tieto príkazy fungujú tak, že do týchto nereagujúcich procesov odosielajú konkrétne signály. Budete potrebovať ID procesu alebo PID informácie, aby ste im mohli poslať požadovaný ukončovací signál.

PID alebo ID procesu je jedinečné číslo, ktoré identifikuje proces. Tie vytvára jadro Linuxu za behu programu a plánovač procesov riadi ich aktivity CPU. Takže kedykoľvek vyvoláte aplikáciu, jadro najskôr vytvorí potrebné procesy a priradí im tieto jedinečné hodnoty PID. S procesom môže byť spojených viac PID. Každý proces má navyše jeden nadradený proces s jedinečným PPID (ID nadradeného procesu).

Takže ak zistíte tento PPID, budete môcť poslať signál zabitia pomocou programov určených na tento účel. Ďalej sa dozviete, ako skontrolovať bežiace procesy v systéme Linux a identifikovať ich PPID z terminálu.

Zistite informácie o PPID


PPID procesu môžete zistiť pomocou niekoľkých príkazov na správu procesov v systéme Linux, napríklad pidof, pstree, a pgrep. Poďme ich jeden po druhom preskúmať a uvidíme, ako získať PID procesu v systéme Linux.

Metóda 1: Používanie príkazu ps


Príkaz ps v systéme Linux zobrazuje všetky spustené procesy spolu s ďalšími informáciami súvisiacimi s procesom, ako je PID v termináli. Tento príkaz môžeme použiť na výpis všetkých procesov a následný odfiltrovanie konkrétneho procesu pomocou príkazov grep systému Linux. Malo by nám zobraziť informácie o ID procesu, o ktoré sa zaujímame.

$ nano> / dev / null &
$ ps aux | grep "nano"

Najskôr sme vyvolali textový editor Linuxu na pozadí. Potom sme spolu s príkazom grep použili príkaz ps na zistenie PPID tohto editora. Výstup môže obsahovať niekoľko ID procesov, ale zaujíma nás iba prvý, pretože to je náš PPID. Na zistenie týchto informácií môžeme tiež použiť príkaz Linux awk, ako je uvedené nižšie.

$ ps aux | awk '/ nano / print $ 2'

Tento príkaz je flexibilnejší, pretože potláča všetky irelevantné informácie. Zobrazia sa iba informácie o PPID, ktoré hľadáme.

Metóda 2: Použitie príkazu pstree


Príkaz pstree nám poskytuje stromové zobrazenie všetkých spustených procesov. Poskytuje grafické zobrazenie zoznamu úloh systému Linux z okna terminálu. Pomocou tohto príkazu môžete zobraziť PPID, ako aj všetky informácie PID o procese. V nasledujúcich príkladoch sa dozviete, ako využiť pstree na nájdenie PPID konkrétneho procesu.

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

Najskôr sme pomocou prvého príkazu vytvorili proces na pozadí. Druhý príkaz potom získa PPID tohto procesu pomocou príkazu grep v systéme Linux. Tretí príkaz na záver ukazuje, ako túto hodnotu získať pomocou príkazu awk.

Metóda 3: Používanie príkazu pgrep


Príkaz pgrep je jedným z najjednoduchších príkazov na správu procesov v systéme Linux. Skontroluje zoznam všetkých spustených procesov a vytlačí PPID daného procesu na štandardnom výstupe alebo v našom prípade na termináli. Funguje to pomocou porovnávania regulárnych výrazov a je mimoriadne vhodný na písanie skriptov systému Linux.

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

Nano proces sme vytvorili podobne ako v predchádzajúcich príkladoch. Potom sme získali jeho PPID pomocou príkazu pgrep. Po získaní tejto hodnoty môžeme veľmi ľahko vykonať úlohu zabitia systému Linux.

Metóda 4: Použitie príkazu pidof


Príkaz pidof je ďalší jednoduchý, ale užitočný spôsob určenia PPID procesu v systéme Linux. Zobrazuje PPID aj všetky ostatné PID spojené s procesom. Ak sa chcete dozvedieť, ako to v praxi využiť, pozrite si nasledujúce preskúmanie.

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

Pri použití príkazu pidof na kontrolu bežiacich procesov v systéme Linux sa často zobrazí viac PID. V takýchto prípadoch je zvyčajne prvé alebo posledné číslo PPID v závislosti od toho, či sú v vzostupnom poradí alebo v zostupnom poradí. Môžete použiť -s možnosť pidof to zmierniť. Bude zobrazovať iba hodnotu PPID.

Metóda 5: Použitie horného príkazu


Vrchný príkaz poskytuje prehľad všetkých spustených procesov v operačných systémoch typu Unix v reálnom čase. Môžete to použiť na zobrazenie zoznamu úloh systému Linux vo vašom termináli a zistenie informácií PID konkrétneho procesu.

$ top

Pomocou nasledujúcich príkazov získate PPID konkrétneho procesu z výstupu horného príkazu.

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

Pretože top poskytuje výstup v reálnom čase namiesto vypúšťania statických údajov do terminálu, použili sme -n1 a -b možnosť vytlačiť statický výstup. Potom môžete získať informácie PPID pomocou príkazu grep alebo awk v systéme Linux.

Zabite nereagujúci proces systému Linux


Na získanie PPID procesu, ktorý nereaguje, môžete použiť ktorúkoľvek z vyššie uvedených metód. Akonáhle to získate, je čas proces úplne zabiť. Existuje niekoľko príkazov, ktoré nám to umožňujú, ako napr zabiť, pkill, a zabiť všetkých. Uvidíme, ako budú pracovať jeden po druhom v nasledujúcich častiach.

Metóda 1: Použitie príkazu kill


Príkaz kill je administrátormi systému Linux často používaný kvôli svojej jednoduchosti a robustným akciám. Berie PID procesu a signál. Na základe tohto signálu jadro zabije / zastaví vykonanie procesu. Ďalším príkazom môžete zobraziť všetky dostupné signály k príkazu zabiť.

$ kill -l

Ako vidíte, kill ponúka 64 rôznych signálov. V tejto príručke však budeme diskutovať iba o dvoch z nich. Jedná sa o signál 9 (SIGKILL) a signál 15 (SIGTERM). SIGTERM alebo signál 15 je bezpečná metóda zabitia procesu, ktorý nereaguje. SIGKILL alebo signál 9, na druhej strane, sila zabije proces Linuxu.

$ kill -9 8631 $ kill -KILL 8631

Vyššie uvedené príkazy sú ekvivalentné a prinútia zabiť proces, ktorý má PID 8631. Toto je PPID procesu „nano“ v mojom systéme. Nahraďte ho PID procesu, ktorý vo vašom systéme nereaguje.

$ kill -15 8631 $ kill -TERM 8631

Vyššie uvedené príkazy sú tiež ekvivalentné a elegantne tento proces zabijú. Preto môže trvať istý čas, kým sa proces zastaví. Možno budete musieť pridať sudo pred príkazom kill, ak proces vlastní iný používateľ.

Metóda 2: Použitie príkazu pkill


Príkaz pkill je jedným z najuniverzálnejších príkazov na správu procesov v systéme Linux. Umožňuje nám zabiť nereagujúci proces na základe jeho názvu, PID, vlastníka a ďalších atribútov za behu. Je to perfektný nástroj pre začínajúcich používateľov alebo ľudí, ktorí nie sú oboznámení s mnohými štandardnými príkazmi terminálu.

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

Na zabíjanie zombie / nereagujúcich procesov v systéme Linux môžete použiť ktorýkoľvek z vyššie uvedených príkazov pkill. Použi -e Ak chcete potvrdiť úlohu zabitia systému Linux. Príkaz pkill tiež umožňuje používateľom posielať špecifické ukončovacie signály.

Metóda 3: Použitie príkazu killall


Príkaz killall umožňuje používateľom zabiť nereagujúce procesy na základe ich mien. Používanie je jednoduchšie, ale ak nie ste opatrní, môže to spôsobiť problémy. Pretože killall ukončuje procesy na základe mien, vždy existuje šanca, že proces nakoniec zabijete náhodou. Napríklad ak sú vo vašom systéme k dispozícii rôzne verzie nano, prvý príklad všetky zabije.

$ killall nano $ killall - verbose nano $ killall - interaktívne nano $ killall - signál KILL nano

Prvý príklad ukazuje základné použitie príkazu killall v systéme Linux. Druhý príkaz oznámi, či je úloha zabitia úspešná alebo nie, a tretí príkaz požiada používateľa o potvrdenie skôr, ako proces zabije. Killall štandardne používa na zabíjanie procesov signál SIGTERM. Signál však môžete určiť manuálne, ako je uvedené v poslednom príklade.

Metóda 4: Používanie praktických jednoradových liniek


Skutočná krása systému Linux spočíva v tom, že umožňuje používateľom vytvárať sofistikované kombinácie príkazov podľa ich potrieb. Aby sme to demonštrovali, v tejto časti sme načrtli niekoľko jednoriadkových liniek.

$ nano> / dev / null &
$ kill -9 $ (pgrep nano) $ ps aux | grep -e 'nano' | awk 'print $ 2' | xargs zabiť -9

V prvom príklade sme použili interpoláciu shellu na odovzdanie PID procesu „nano“ príkazu Linux kill. Druhý príklad využíva niekoľko každodenných príkazov terminálu a presmerovanie I / O na ukončenie procesu. Akonáhle budete s terminálom Linux spokojní, môžete si vyskúšať svoje vlastné šikovné jednorázové linky.

Metóda 5: Zabite viac procesov pomocou skriptov Linux Shell


Používatelia môžu niekedy chcieť ukončiť viac ako jeden proces. Takéto úlohy môžeme ľahko automatizovať písaním jednoduchých shell skriptov. Ak vás táto téma zaujíma, pozrite si našu predchádzajúcu príručku o skriptoch systému Linux. Nasledujúci skript načíta PPID procesov, ktoré chcete zabiť, a potom ich ukončí pomocou signálov zabitia.

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

Teraz uložte tento súbor a pridajte povolenie na spustenie vydaním príkazu uvedeného nižšie.

$ chmod + x proc-killer.š

Teraz môžete tomuto skriptu odovzdať názov procesov, ktoré chcete ukončiť.

$ ./ proc-killer.sh nano gedit vlc

Jednoducho nahraďte argumenty názvami nereagujúcich procesov Linux vo vašom systéme.

Ukončite proces, ktorý nereaguje z grafického používateľského rozhrania


Proces, ktorý nereaguje, môžete ukončiť aj z grafického používateľského rozhrania alebo z okna X. V nasledujúcej časti rozoberáme dva spôsoby, ako to dosiahnuť.

Metóda 1: Používanie aplikácie xkill


Moderné distribúcie systému Linux využívajú grafické okno X, ktoré poskytuje používateľom elegantné grafické prostredie. Existuje jednoduchý nástroj s názvom xkill, ktorý umožňuje používateľom zavrieť okno, ktoré nereaguje na grafické užívateľské rozhranie. Je to možné, pretože v systéme Linux je okno s nadpisom aplikácie samostatné od samotnej aplikácie.

Jednoducho choďte do emulátora terminálu Linux a zadajte xkill. Premení váš kurzor myši na tlačidlo X, ktoré je možné použiť na zabitie ľubovoľného okna grafického používateľského rozhrania.

$ xkill

Všetko, čo musíte urobiť, je jednoducho kliknúť na lištu okna aplikácie, ktorá nereaguje, a okamžite sa zabije a zmizne.

Metóda 2: Používanie aplikácie Monitor systému v systéme Ubuntu


Väčšina bežných distribúcií systému Linux prichádza s akýmsi nástrojom na sledovanie grafického používateľského rozhrania, ktoré umožňujú používateľom graficky ukončiť zavesený proces systému Linux. Napríklad aplikácia System Monitor v Ubuntu nám umožní intuitívne ukončiť proces, ktorý nereaguje. Môžete jednoducho zvoliť mŕtvy proces zo zoznamu procesov a zabiť ho kliknutím pravým tlačidlom myši na proces a výberom možnosti zabitia.

Existuje oveľa viac alternatív k tejto aplikácii a sme si istí, že ľahko nájdete jednu pre svoju distribúciu alebo desktopové prostredie.

Končiace myšlienky


Pretože správa procesov v systéme Linux je veľmi všestranná, používatelia sú pri riešení procesov, ktoré nereagujú, často frustrovaní. Preto naši redaktori v tejto príručke načrtli všetky možné spôsoby ukončenia mŕtveho procesu Linuxu. Po prečítaní tohto článku by ste mali byť schopní zabiť akékoľvek nereagujúce procesy z príkazového riadku alebo z grafického používateľského rozhrania. Môžete tiež použiť ktorýkoľvek z našich jednorázových príkazov na zvládnutie takýchto nepríjemností v čo najkratšom čase. Navyše môžete dokonca zabiť viac ako jeden proces pomocou nášho jednoduchého skriptu shellu. Dúfajme teda, že ste informácie, ktoré ste hľadali, získali od nášho sprievodcu.

Stredné tlačidlo myši nefunguje v systéme Windows 10
The stredné tlačidlo myši pomáha vám prechádzať dlhé webové stránky a obrazovky s množstvom údajov. Ak sa to zastaví, budete nakoniec používať klávesn...
Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...
Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...