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

How Kill Process Linux



Всяка операционна система Linux идва с командата kill. Единствената цел на този инструмент е да прекрати целевия процес. Това е мощен инструмент, който прави Linux доста гъвкав, особено в сървърни и корпоративни области, където голяма промяна/актуализация може да влезе в сила, без да рестартирате цялата машина. В тази статия ще покажа как да убия процес, използвайки убивам , pkill и убие .

Убиване на процес

За да убием процес, ще използваме няколко инструмента: убивам , pkill , и убие . Всички те работят по принцип по същия начин.







Тези инструменти не прекратяват сами процеса. Вместо това те изпращат определен сигнал до целевия процес или групи от процеси. Ако не сте посочили конкретен сигнал, SIGTERM се изпраща като сигнал по подразбиране. Съществуват обаче редица поддържани сигнали, например SIGKILL, SIGHUP и др.



Ето основната структура на командите за убивам , pkill и убие .



$убивам <signal_or_options> <PID(с)>
$ pkill<signal_or_options> <process_name>
$убие <опция> <process_name>

Когато е възможно, се препоръчва да се използва убивам .





Убий , pkill и убие места

Kill е командата по подразбиране за прекратяване на процес.



$убивам --помогне

Изпълнява се от директорията /usr /bin.

$който убивам

Предимството е, че също така позволява достъп до pkill, друга команда, подобна на kill, която позволява прекратяване на процеса въз основа на тяхното име.

$pkill--помогне

$койтоpkill

Някои приложения изпълняват множество процеси на един и същ изпълним файл. Ако искате да прекратите редица процеси със същото име, използвайте инструмента killall.

$убие --помогне

$който убие

Изброяване на всички работещи процеси

Първата задача е да идентифицирате PID (идентификационен номер на процеса) и/или името на процеса, който искате да прекратите. За този пример ще използвам Firefox като целеви процес за прекратяване. Изпълнете следната команда, за да изброите всички работещи процеси в системата.

$пс -ДА СЕ

За повечето от задачите трябва да знаем PID на целевия процес. В някои ситуации обаче използването на името на процеса е по -подходящо.

Ако знаете точното име на целевия процес, можете директно да получите PID с помощта пидоф .

$пидоф <process_name>

Друг интересен инструмент за получаване на информация за целевия процес е pgrep. Той е специално проектиран за целта.

$pgrep<опция> <process_name>

Убийствени сигнали

Сега, нека да разгледаме сигналите, които инструментите за убиване поддържат. Това е огромен списък. Разбира се, не всички от тях са необходими за всяка отделна ситуация. Всъщност повечето ситуации изискват само шепа сигнали.

Първо, нека да разгледаме списъка, който убива поддръжките.

$убивам -на

Има 2 начина да определите кой сигнал искате да изпратите. Можете да използвате пълното име на сигнала или неговата еквивалентна стойност.

$убивам-<сигнал> <PID>

Или,

$убивам-<signal_value> <PID>

Най -популярните сигнали са SIGHUP (1), SIGKILL (9) и SIGTERM (15). Като цяло SIGTERM е стандартният и най -сигурният начин за прекратяване на целевия процес.

В случай на pkill, поддържаният сигнал е същият като kill. Въпреки това, в случай на killall, броят на поддържаните сигнали и имената на сигналите са различни.

$убие -на

Убиване на процес

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

$убивам <опция> <PID>

Тук kill ще изпрати сигнала по подразбиране SIGTERM до PID (s). Ако искате да прекратите множество процеси, споменете всички PID, разделени с интервал.

$убивам <опция> <PID_1> <PID_2>

Нека уточним кой сигнал искате да изпратите до целта.

Искате ли да прекратите процес, използвайки само неговото име? Използвайте pkill.

$pkill<опция> <process_name>

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

$убие <опция> <process_name>

Например, когато стартирате Firefox, той стартира няколко процеса. За да ги убиете наведнъж, изпълнете тази команда.

$убиеfirefox

Искате ли да прекратите всички процеси, които се изпълняват при определен потребител? Killall може да свърши работата, няма проблем. Бъдете внимателни, когато стартирате този, тъй като това може да повреди системата и да създаде други проблеми. Няма да работи, ако се опитвате да прекратите процеси, които се изпълняват под друг потребител с по -високи права.

$убие -u <потребител>

Конфликт на разрешения

Присъщите характеристики на потребителската йерархия на Linux също се прилагат, когато се каните да прекратите приложение. Потребителят не може да прекрати процеси, които се изпълняват с по -високи привилегии, а само процеси с равни/по -ниски права. Освен това потребителят не може да манипулира процесите, които се изпълняват при различен потребител.

Например, нека разгледаме командата yes. Ако е извикан като текущ потребител, той може лесно да бъде прекратен с помощта на kill.

$убивам да

Сега, ако ако да тичаше под корен ? Извикването на kill като текущия потребител няма да работи.

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

Последни мисли

В тази статия бяха показани само основите и честото използване на тези команди. Тези инструменти за убиване са способни на повече от това. За да имате задълбочени познания за способностите на всеки инструмент, препоръчвам да проверите страницата за човека.

$човек убивам

$човекpkill

Наслади се!