Как да убиете процес в Linux

Всички сме имали онези дни, когато компютърът ни работи изключително бавно и заеква при изпълнението дори на основните задачи. В Windows имате само диспечера на задачите на Windows, за да проверявате и убивате процеси, които не са толкова важни, но консумират огромни количества памет. В Linux обаче имате цял арсенал от команди и GUI инструменти за управление на тези задачи. В тази статия ще покажем някои лесни методи за команден ред (CLI), както и GUI методи за това как да убиете процес в Linux.

Прекратяване на процеса в Linux (2023)

Но преди да се потопим в света на управлението на процеси в Linux, нека разберем какво точно е процес и какво е идентификатор на процес в Linux системи.

Какво представляват процесите в Linux

В Linux всяко текущо работещо копие на програма е известно като „процес“, докато всеки изпълним файл е известен като програма. Когато се изпълни която и да е програма, се създава процес и на всеки процес се присвоява уникален 5-цифрен идентификационен номер, известен като „ID на процес“. Когато даден процес приключи с изпълнението си или бъде прекратен принудително, неговият идентификатор на процес се присвоява на следващия по ред процес.

Прекъсване на процеса чрез командния ред в Linux

Въпреки че използването на терминала понякога може да изглежда смущаващо в сравнение с използването на GUI инструменти за основни задачи, управлението на различни процеси става много по-лесно, след като разберете командите и различните им опции.

Сигнали за прекратяване

Когато се опитате да убиете процес или от GUI, или от CLI в Linux, ядрото изпраща сигнал за прекратяване на процеса. Процесът действа съответно в зависимост от получения сигнал. На всеки от тези сигнали се присвоява специфичен номер, който програмата може да разбере бързо. Има много видове сигнали за прекратяване, но тук сме обяснили само основните:

SignalNumeric ValueDescriptionSIGHUP1Съкращение от „Signal Hangup“
Изпраща се, когато терминалът е затворен.SIGINT2 Това означава „Прекъсване на сигнала“
Изпраща се, когато потребителят прекрати процеса.SIGKILL9Съкращение от „прекратяване на сигнала“
Изпраща се, когато трябва незабавно да излезете от процесSIGTERM15Съкращение от „Прекратяване на сигнала“
Изпраща се, когато трябва да прекратите процес и да освободите консумираните ресурсиSIGSTOP19 – за ARM, x86
17 – за АЛФА
23 – за MIPS
24 – за PA-RISCI това означава „Стоп на сигнала“
Изпраща се, когато трябва да поставите на пауза процес и да го възобновите по-късно. Най-често използваните сигнали са SIGKILL (9) и SIGTERM (15).

  Как да надстроите до Linux Mint 20.2

Идентифицирайте идентификаторите на процеса

Преди да прекратите процес, трябва да знаете някои подробности за процеса, като ID на процеса, време за изпълнение и т.н. За да знаете подробностите за процес, използвайте командата ps:

пс

С командата ps трябва да търсите процеса, като превъртате и отбелязвате името му, което може да е тромаво. Вместо това можете дори да използвате командата grep с командата ps в конвейер, както е показано по-долу:

ps | grep <име_на_процес>

За да направим нещата по-лесни, има отделна команда, която показва само идентификатора на всеки работещ процес, който трябва да знаете. Синтаксисът за използване на командата pidof е:

pidof <име_на_процес>

Прекратете процеса с помощта на командата kill

След като сте отбелязали идентификатора на процеса, който искате да прекратите, най-честата команда, използвана за прекратяване на програми във вашата Linux система, е командата kill. Синтаксисът за използване на командата kill е:

убийте <сигнал>

Параметърът не е задължителен и командата kill изпраща сигнала SIGTERM (15) по подразбиране. Можете да изпратите всеки друг сигнал чрез неговата цифрова стойност или действителното име на сигнала от таблицата по-горе.

Прекратете процеса с помощта на командата pkill

Ако смятате, че търсенето на идентификатор на процес е неудобно, можете да използвате командата pkill. Той търси процесите, съответстващи на шаблон, и след това го убива. Синтаксисът за използване на командата pkill е:

pkill <опции> <модел>

Някои от често срещаните опции за сдвояване с командата pkill са:

OptionDescription-nИзбира само най-новите процеси, отговарящи на идентификатора на процеса-uИзбира процесите, притежавани от конкретен потребител-xИзбира процеси, съответстващи точно на шаблона

Това е особено важно, когато множество потребители работят върху различни екземпляри на една и съща програма в една и съща система и един от екземплярите започне да има някакво неочаквано поведение. Например, на екранната снимка по-долу ние убиваме екземпляра „gedit“, притежаван от потребителя „intel“, използвайки командата pkill в Linux:

pkill -u intel gedit

Прекратете процеса с помощта на командата killall

Командата killall работи подобно на командата kill, но убива всички процеси, съответстващи на името на процеса, независимо от потребителя. По подразбиране той изпраща сигнала SIGTERM, ако не е указано друго. Интересно нещо, което трябва да се отбележи, е, че командата killall никога не може да се самоубие, но може да прекрати други екземпляри на командата killall. Синтаксисът за използване на командата killall е:

killall <опции> <име_на_процес>

Някои от опциите за сдвояване с командата killall са:

OptionDescription-rИнтерпретира името на процеса като модел на регулярен израз и след това убива процесите, съответстващи на шаблона-uубива посочения процес, притежаван от определен собственик.-oУнищожава посочените процеси, по-стари (започнали преди) от определено време.-yУбива посочените процеси по-млади ( започна след) определеното време.

Командата killall може да бъде полезна за прекратяване на поредица от един и същи процес или дори всички процеси, притежавани от конкретен собственик. Тук в нашия пример ние убиваме всички процеси на „заспиване за 500 секунди“ с помощта на командата killall в Linux:

  Как да инсталирате Inkscape на Linux

killall -v сън

Прекратете процеса на Linux с помощта на командата top/htop

Този метод за убиване на процеси е полезен, когато нямате представа кои процеси консумират максимални ресурси. И в двете команди можете да навигирате през всички изпълнявани процеси или дори зомби процеси и да ги прекратите бързо. За да използвате горната команда за наблюдение на вашите ресурси, използвайте синтаксиса в терминала:

Горна част

Разбиране на изхода:

Основният изход на горната команда е разделен на колони, които са:

  • PID – показва идентификатора на процеса на изпълнявания процес
  • Потребител – показва собственика на процеса
  • PR – показва приоритетната стойност на процеса, която е зададена от операционната система
  • NI – показва хубавите стойности, които са като присвояване на потребителски интервали за ръчно управление на приоритета на задача.
  • VIRT – показва количеството виртуална памет, използвано от процеса.
  • RES – показва количеството физическа памет, използвано от процеса
  • SHR – показва количеството споделена памет от други процеси
  • S – показва текущото състояние на процеса, което може да бъде:
    • D – непрекъснат сън
    • R – бягане
    • S – спи
    • Т – спряно
    • Z – зомби
  • %CPU – Показва количеството CPU, използвано от процеса в проценти
  • %MEM – Показва количеството RAM, използвано от процеса в проценти
  • TIME+ – Показва общото време на изпълнение на процеса
  • Команда – Показва коя команда е била извикана за процеса.
  • Ако не знаете идентификатора на процеса на задачата, която искате да убиете, или навигирайте в списъка с помощта на клавишите със стрелки, или потърсете името на процеса в таблицата с процеси в Linux.

    За да търсите името на процеса, натиснете ‘L’ на клавиатурата и въведете името на процеса, който искате да търсите. След като откриете подлия процес, натиснете ‘k’ на клавиатурата, за да убиете процеса. Сега въведете идентификатора на процеса или го оставете на текущо маркирания процес и натиснете „ENTER“. След това въведете сигнала за прекратяване и след това натиснете ‘ENTER’, за да затворите програмата. За да се върнете обратно към терминала, натиснете ‘q’ на клавиатурата.

    Въпреки че горната команда показва подробности като идентификатор на процес, потребление на памет и други за всички работещи процеси, тя не е много подходяща за начинаещи, тъй като не показва никакви ключови съпоставяния или как да я използвате. От друга страна, командата htop има по-удобен за потребителя интерфейс, дори за инструмент за команден ред. Плюс това, той показва всички подробности в отделен изглед, следователно не претрупва прозореца на терминала. Той не идва предварително инсталиран в повечето дистрибуции и трябва да използвате следната команда, за да инсталирате htop в Linux:

    sudo apt install -y htop

    За да използвате htop за управление на процеси в Linux, използвайте командата по-долу:

      Как да направим Linux да изглежда като Windows XP

    htop

    За да затворите програма, навигирайте до името на процеса, който искате да прекратите, натиснете „F9“ и след това натиснете Enter. Ако трябва да потърсите и убиете някоя програма, натиснете „F3“ на клавиатурата, въведете името и натиснете Enter. Името на процеса ще бъде маркирано, натиснете F9 и след това натиснете Enter на клавиатурата, за да прекратите процеса.

    Убийте процес чрез системен монитор в Linux

    Ако смятате, че методът на командния ред е труден за вас, можете да използвате вградения инструмент за наблюдение на системата, който е наличен във всяка Linux дистрибуция. За да научите как работи, отворете инструмента за наблюдение на системата от менюто с приложения и следвайте стъпките по-долу.

    1. След като инструментът за наблюдение на системата се отвори, ще видите три раздела отгоре с имена — Процеси, Ресурси и Файлова система. За да управлявате вашите процеси, преминете към раздела „Процеси“. Тук ще видите всички ваши текущи процеси. Натиснете ‘CTRL+F’, за да потърсите име на процес. Кликнете върху името на процеса, който искате да прекратите, и щракнете върху „Край на процеса“.

    2. След това ще получите подкана за потвърждение дали искате да прекратите процеса или не. Продължете и щракнете върху големия червен бутон „Край на процеса“, за да убиете процеса в Linux.

    често задавани въпроси

    Как да спра всички процеси в Linux?

    Ако трябва да спрете всички процеси (с изключение на shell за влизане, init и специфични за ядрото процеси) за конкретен потребител в Linux, използвайте или командата pkill, или командата killall според синтаксиса:

    pkill -u <потребителско име>

    killall -u <потребителско име>

    Ако трябва да убиете всеки процес за всеки потребител, включително системата за стартиране, натиснете клавишите „ALT + Prt Sc + o“ на клавиатурата.

    Добре ли е да прекратите процес?

    Когато затворите всеки несъществен фонов процес или потребителски процес, който консумира много системна памет, вие освобождавате ресурсите, които сега могат да бъдат използвани от други процеси. Но преди да изключите който и да е процес, уверете се, че не убивате основен процес на операционната система.

    Какви са фоновите процеси в Linux?

    В Linux фоновите процеси са процеси, които могат да работят без екземпляра на обвивката или каквато и да е намеса на потребителя. Те могат да бъдат прегледани чрез всяка една от командите – top, htop, ps и др.

    Какво е процес на зомбиране?

    Процес, който е бил убит от потребителя, но все още заема паметта, е известен като зомби процес.

    Какво прави CTRL + Z в Linux?

    Когато използвате CTRL + Z в Linux, той изпраща SIGTSTP сигнала, който спира процеса и го изпраща на заден план. Когато даден процес е в спряно състояние на заден план, не можете да убиете процеса, докато не бъде върнат на преден план.

    Унищожавайте процесите в Linux лесно

    Унищожаването на процесите на изчерпване на паметта е доста важна задача, която всеки потребител трябва да научи. В тази статия показахме както метода на командния ред, включително команди като killall и pkill, така и GUI методите за убиване на процеси в Linux. Ние дори описахме подробно как да използвате популярни инструменти като top и htop за управление на процеси на вашия компютър с Linux. Ако се сблъскате с някакви проблеми, докато използвате тези инструменти за спиране на процес, уведомете ни в коментарите по-долу.