Как убить процесс в Linux. Завершить процесс в Linux — команды ps, kill и killall Debian остановить процесс

Сегодня мы поговорим о том, как в Ubuntu Linux справляться с процессами которые зависли и вы не можете их завершить. Они пожирают системные ресурсы загружая систему, отжирая приличную часть оперативной памяти, чем создают такие проблемы как торможение в работе компьютера либо частичному зависанию системы на краткие отрезки времени. Ситуации бывают разные, бывает зависнет рабочий стол, бывает приложение зависнет, иногда и окружение рабочего стола зависает, именно с данных ситуаций мы будем искать выход как обойтись без перезагрузки системы и не выключать компьютер кнопкой на системном блоке компьютера так как это не есть хорошим решением.

Иногда возникает потребность убить процесс в Ubuntu Linux, как это правильно выполнить и не навредить, обсудим как консольные варианты решения так и через графический интерфейс.

Сегодня мы поговорим о том, как в Ubuntu Linux справляться с процессами которые зависли и вы не можете их завершить. Они пожирают системные ресурсы загружая систему, отжирая приличную часть оперативной памяти, чем создают такие проблемы как торможение в работе компьютера либо частичному зависанию системы на краткие отрезки времени. Ситуации бывают разные, бывает зависнет рабочий стол, бывает приложение зависнет, иногда и окружение рабочего стола зависает, именно с данных ситуаций мы будем искать выход, как обойтись без перезагрузки системы и не выключать компьютер кнопкой на системном блоке компьютера так как это не есть хорошим решением.

При работе с Ubuntu Linux у вас вероятно уже возникали вопросы:

Как определить PID чтобы в последующем убить процесс / приложение

Если вы не хотите запускать команду top или же другой более мощный ее аналог htop , далее утруждать себя поисками айди того или иного айди процесса, есть более простой выход / решение, чтобы найти PID процесса можно использовать команду "pidof " или "PS ".

Допустим нам нужно узнать айди процесса приложения Google Chrome, что мы делаем в данной ситуации, откройте терминал Ctrl + Alt + T и выполняем в терминале команду:

Pidof chrome

получаем вывод:

9497 9183 9123 8815 8788 6042 6033 5938 5916 5911 5908 5900 5892 5836 5831 5819

почти готово, PID мы определили, о том как убить процесс, читаем ниже.

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

Мы определили какой PID в приложения которое мы хотим убить, с описанного выше, вы видите, что у меня запущено сейчас в браузере много вкладок и плюс отдельные процессы браузера, в итоге 16 айди, чтобы убить их все, выполняем команду:

Sudo kill 9497 9183 9123 8815 8788 6042 6033 5938 5916 5911 5908 5900 5892 5836 5831 5819

так же вы можете в системе посмотреть все активные процессы выполнив команду:

Sudo ps axu

да, вот так просто. Вместо Chrome может быть любое другое приложение, skype или еще какое другое.

Так же можно использовать дополнительную команду для обнаружения айди процесса приложения которое вы хотите убить:

Ps -A | grep -i name-app

вместо name-app пишем название приложения, не вводите полное название вручную, используйте автоопределение с помощью клавиш "TAB ". В итоге эта команда выведет время работы необходимого процесса и соответственно его PID , который вы можете использовать чтобы убить, давайте проверим работу команды выполним в терминале:

Ps -A | grep -i skype

получаем следующий результат:

9257 ? 00:00:57 skype

все что нам нужно как на ладони, есть айди так же видим сколько времени данный процесс уже работает.

Как использовать команду Kill в Linux

О том как получить идентификатор PID я описал уже выше, далее нам остается лишь использовать этот PID совместно с kill чем мы убьем неугодный нам процесс, смотрим детали немного ниже.

Айди получили и можем теперь убить приложение:

Sudo kill 9257

вот и все, приложение убито.

Как убить процесс в Linux по имени

Чтобы убить процесс по имени можно использовать команду killall, вы прежде всего должны понимать, что данная команда убивает все процессы которые имеют одно и то же имя. Это очень удобно, так как в данной ситуации нам не нужно искать PID необходимого нам процесса, например мы хотим закрыть приложение скайп, выполним в терминале команду:

Sudo killall skype

так же вариант:

Sudo killall -s 9 skype

в тот же миг приложение прекращает свою работу, вот так легко можно убить неугодные вам процессы.

Команда смерти, что не стоит выполнять в терминале

Я ранее писал материал о вредных советах, какие команды не стоит выполнять в терминале чтобы не убить систему, но список не совершенен и его можно дополнить еще многими командами, одну с которых вы найдете ниже.

Приведу пример команды смерти:

Sudo kill -9 -1

это команда убьет все запущенные на данный момент процессы. Не советовал бы ее выполнять так как последствия могут быть непредсказуемые и вероятней всего придется перезапускать систему без графического интерфейса. На случай вдруг откажет графический интерфейс, тогда открываем терминал с помощью команд CTRL+ALT+F1 , каждое новое окно открывается по той же аналогии просто меняется F1 уже на F2 и так далее.

Получить справку по командам которые использовались выше, вы так же можете через терминал выполнив команды:

Man ps man grep man pidof man kill man killall

На этом наш краткий материал окончен, если вам что-то не понятно, спрашивайте в комментариях к материалу ниже.

Задания и процессы

Всякая выполняющаяся в Linux программа называется процессом . Linux как многозадачная система характеризуется тем, что одновременно может выполняться множество процессов, принадлежащих одному или нескольким пользователям. Вывести список исполняющихся в текущее время процессов можно командой ps , например, следующим образом:

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

Обратите внимание, что по умолчанию команда ps выводит список только тех процессов, которые принадлежат запустившему её пользователю. Чтобы посмотреть все исполняющиеся в системе процессы, нужно подать команду ps -a . Номера процессов (process ID, или PID ), указанные в первой колонке, являются уникальными номерами, которые система присваивает каждому работающему процессу. Последняя колонка, озаглавленная COMMAND, указывает имя работающей команды. В данном случае в списке указаны процессы, которые запустил сам пользователь larry . В системе работает ещё много других процессов, их полный список можно просмотреть командой ps -aux . Однако среди команд, запущенных пользователем larry , есть только bash (командная оболочка для пользователя larry) и сама команда ps . Видно, что оболочка bash работает одновременно с командой ps . Когда пользователь ввёл команду ps , оболочка bash начала её исполнять. После того, как команда ps закончила свою работу (таблица процессов выведена на экран), управление возвращается процессу bash . Тогда оболочка bash выводит на экран приглашение и ждёт новой команды.

Работающий процесс также называют заданием (job). Понятия процесс и задание являются взаимозаменяемыми. Однако, обычно процесс называют заданием, когда имеют ввиду управление заданием (job control). Управление заданием - это функция командной оболочки, которая предоставляет пользователю возможность переключаться между несколькими заданиями.

В большинстве случаев пользователи запускают только одно задание - это будет та команда, которую они ввели последней в командной оболочке. Однако многие командные оболочки (включая bash и tcsh ) имеют функции управления заданиями (job control), позволяющие запускать одновременно несколько команд или заданий (jobs) и, по мере надобности, переключаться между ними.

Управление заданиями может быть полезно, если, например, вы редактируете большой текстовый файл и хотите временно прервать редактирование, чтобы сделать какую-нибудь другую операцию. С помощью функций управления заданиями можно временно покинуть редактор, вернуться к приглашению командной оболочки и выполнить какие-либо другие действия. Когда они будут сделаны, можно вернуться обратно к работе с редактором и обнаружить его в том же состоянии, в котором он был покинут. У функций управления заданиями есть ещё много полезных применений.

Передний план и фоновый режим

Задания могут быть либо на переднем плане (foreground), либо фоновыми (background). На переднем плане в любой момент времени может быть только одно задание. Задание на переднем плане - это то задание, с которым вы взаимодействуете; оно получает ввод с клавиатуры и посылает вывод на экран (если, разумеется, вы не перенаправили ввод или вывод куда-либо ещё). Напротив, фоновые задания не получают ввода с терминала; как правило, такие задания не нуждаются во взаимодействии с пользователем.

Некоторые задания исполняются очень долго, и во время их работы не происходит ничего интересного. Пример таких заданий - компилирование программ, а также сжатие больших файлов. Нет никаких причин смотреть на экран и ждать, когда эти задания выполнятся. Такие задания следует запускать в фоновом режиме. В это время вы можете работать с другими программами.

Для управления выполнением процессов в Linux предусмотрен механизм передачи сигналов . Сигнал - это способность процессов обмениваться стандартными короткими сообщениями непосредственно с помощью системы. Сообщение-сигнал не содержит никакой информации, кроме номера сигнала (для удобства вместо номера можно использовать предопределённое системой имя). Для того, чтобы передать сигнал, процессу достаточно задействовать системный вызов kill() , а для того, чтобы принять сигнал, не нужно ничего. Если процессу нужно как-то по-особенному реагировать на сигнал, он может зарегистрировать обработчик , а если обработчика нет, за него отреагирует система. Как правило, это приводит к немедленному завершению процесса, получившего сигнал. Обработчик сигнала запускается асинхронно , немедленно после получения сигнала, что бы процесс в это время ни делал.

Два сигнала - номер 9 (KILL ) и 19 (STOP ) - всегда обрабатывает система. Первый из них нужен для того, чтобы убить процесс наверняка (отсюда и название). Сигнал STOP приостанавливает процесс: в таком состоянии процесс не удаляется из таблицы процессов, но и не выполняется до тех пор, пока не получит сигнал 18 (CONT ) - после чего продолжит работу. В командной оболочке Linux сигнал STOP можно передать активному процессу с помощью управляющей последовательности Ctrl -Z .

Сигнал номер 15 (TERM ) служит для прерывания работы задания. При прерывании (interrupt) задания процесс погибает. Прерывание заданий обычно осуществляется управляющей последовательностью Ctrl -C . Восстановить прерванное задание никаким образом невозможно. Следует также знать, что некоторые программы перехватывают сигнал TERM (при помощи обработчика), так что нажатие комбинации клавиш Ctrl -C (о) может не прервать процесс немедленно. Это сделано для того, чтобы программа могла уничтожить следы своей работы прежде, чем она будет завершена. На практике, некоторые программы вообще нельзя прервать таким способом.

Перевод в фоновый режим и уничтожение заданий

Начнём с простого примера. Рассмотрим команду yes, которая на первый взгляд может показаться бесполезной. Эта команда посылает бесконечный поток строк, состоящих из символа y на стандартный вывод. Посмотрим, как работает эта команда:

/home/larry# yes y y y y y

Последовательность таких строк будет бесконечно продолжаться. Уничтожить этот процесс можно, отправив ему сигнал прерывания, т. е. нажав Ctrl -C . Поступим теперь иначе. Чтобы на экран не выводилась эта бесконечная последовательность перенаправим стандартный вывод команды yes на /dev/null . Как вы, возможно, знаете, устройство /dev/null действует как «чёрная дыра »: все данные, посланные в это устройство, пропадают. С помощью этого устройства очень удобно избавляться от слишком обильного вывода некоторых программ.

/home/larry# yes > /dev/null

Теперь на экран ничего не выводится. Однако и приглашение командной оболочки также не возвращается. Это происходит потому, что команда yes все ещё работает и посылает свои сообщения, состоящие из букв y на /dev/null . Уничтожить это задание также можно, отправив ему сигнал прерывания.

Допустим теперь, что вы хотите, чтобы команда yes продолжала работать, но при этом и приглашение командной оболочки должно вернуться на экран, так чтобы вы могли работать с другими программами. Для этого можно команду yes перевести в фоновый режим, и она будет там работать, не общаясь с вами.

Один способ перевести процесс в фоновый режим - приписать символ & к концу команды. Пример:

/home/larry# yes > /dev/null & + 164 /home/larry#

Сообщение представляет собой номер задания (job number) для процесса yes. Командная оболочка присваивает номер задания каждому исполняемому заданию. Поскольку yes является единственным исполняемым заданием, ему присваивается номер 1. Число 164 является идентификационным номером, соответствующим данному процессу (PID ), и этот номер также дан процессу системой. Как мы увидим дальше, к процессу можно обращаться, указывая оба этих номера.

Итак, теперь у нас есть процесс команды yes, работающий в фоне, и непрерывно посылающий поток из букв y на устройство /dev/null . Для того, чтобы узнать статус этого процесса, нужно исполнить команду jobs , которая является внутренней командой оболочки.

/home/larry# jobs + Running yes >/dev/null & /home/larry#

Мы видим, что эта программа действительно работает. Для того, чтобы узнать статус задания, можно также воспользоваться командой ps , как это было показано выше.

Для того, чтобы передать процессу сигнал (чаще всего возникает потребность прервать работу задания) используется утилита kill . В качестве аргумента этой команде даётся либо номер задания, либо PID . Необязательный параметр - номер сигнала, который нужно отправить процессу. По умолчанию отправляется сигнал TERM . В рассмотренном выше случае номер задания был 1, так что команда kill %1 прервёт работу задания. Когда к заданию обращаются по его номеру (а не PID ), тогда перед этим номером в командной строке нужно поставить символ процента («% »).

Теперь введём команду jobs снова, чтобы проверить результат предыдущего действия:

/home/larry# jobs Terminated yes >/dev/null

Фактически задание уничтожено, и при вводе команды jobs следующий раз на экране о нем не будет никакой информации.

Уничтожить задание можно также, используя идентификационный номер процесса (PID ). Этот номер, наряду с идентификационным номером задания, указывается во время старта задания. В нашем примере значение PID было 164, так что команда kill 164 была бы эквивалентна команде kill %1 . При использовании PID в качестве аргумента команды kill вводить символ «% » не требуется.

Приостановка и продолжение работы заданий

Запустим сначала процесс командой yes на переднем плане, как это делалось раньше:

/home/larry# yes > /dev/null

Как и ранее, поскольку процесс работает на переднем плане, приглашение командной оболочки на экран не возвращается.

Теперь вместо того, чтобы прервать задание комбинацией клавиш Ctrl -C , задание можно приостановить (suspend, буквально - подвесить), отправив ему сигнал STOP . Для приостановки задания надо нажать соответствующую комбинацию клавиш, обычно это Ctrl -Z .

/home/larry# yes > /dev/null Ctrl -Z + Stopped yes >/dev/null /home/larry#

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

Для возобновления выполнения задания на переднем плане можно использовать команду fg (от слова foreground - передний план).

/home/larry# fg yes >/dev/null

Командная оболочка ещё раз выведет на экран название команды, так что пользователь будет знать, какое именно задание он в данный момент запустил на переднем плане. Приостановим это задание ещё раз нажатием клавиш Ctrl -Z , но в этот раз запустим его в фоновый режим командой bg (от слова background - фон). Это приведёт к тому, что данный процесс будет работать так, как если бы при его запуске использовалась команда с символом & в конце (как это делалось в предыдущем разделе):

/home/larry# bg + yes $>$/dev/null & /home/larry#

При этом приглашение командной оболочки возвращается. Сейчас команда jobs должна показывать, что процесс yes действительно в данный момент работает; этот процесс можно уничтожить командой kill , как это делалось раньше.

Для того, чтобы приостановить задание, работающее в фоновом режиме, нельзя воспользоваться комбинацией клавиш Ctrl -Z . Прежде, чем приостанавливать задание, его нужно перевести на передний план командой fg и лишь потом приостановить. Таким образом, команду fg можно применять либо к приостановленным заданиям, либо к заданию, работающему в фоновом режиме.

Между заданиями в фоновом режиме и приостановленными заданиями есть большая разница. Приостановленное задание не работает - на него не тратятся вычислительные мощности процессора. Это задание не выполняет никаких действий. Приостановленное задание занимает некоторый объем оперативной памяти компьютера, через некоторое время ядро откачает эту часть памяти на жёсткий диск «до востребования ». Напротив, задание в фоновом режиме выполняется, использует память и совершает некоторые действия, которые, возможно, вам требуются, но вы в это время можете работать с другими программами.

Задания, работающие в фоновом режиме, могут пытаться выводить некоторый текст на экран. Это будет мешать работать над другими задачами.

/home/larry# yes &

Здесь стандартный вывод не был перенаправлен на устройство /dev/null , поэтому на экран будет выводится бесконечный поток символов y . Этот поток невозможно будет остановить, поскольку комбинация клавиш Ctrl -C не воздействует на задания в фоновом режиме. Для того чтобы остановить эту выдачу, надо использовать команду fg , которая переведёт задание на передний план, а затем уничтожить задание комбинацией клавиш Ctrl -C .

Сделаем ещё одно замечание. Обычно командой fg и командой bg воздействуют на те задания, которые были приостановлены последними (эти задания будут помечены символом + рядом с номером задания, если ввести команду jobs ). Если в одно и то же время работает одно или несколько заданий, задания можно помещать на передний план или в фоновый режим, задавая в качестве аргументов команды fg или команды bg их идентификационный номер (job ID). Например, команда fg %2 помещает задание номер 2 на передний план, а команда bg %3 помещает задание номер 3 в фоновый режим. Использовать PID в качестве аргументов команд fg и bg нельзя.

Более того, для перевода задания на передний план можно просто указать его номер. Так, команда %2 будет эквивалентна команде fg %2 .

Важно помнить, что функция управления заданием принадлежит оболочке. Команды fg , bg и jobs являются внутренними командами оболочки. Если, по некоторой причине, вы используете командную оболочку, которая не поддерживает функции управления заданиями, то вы в ней этих (и подобных) команд не отыщете.

Аргумент -9 (или KILL) для команды kill следует использовать в POSIX-совместимых системах только в случае крайней необходимости. Почему? Сигнал KILL не может быть обработан процессом. Это означает, что после завершения процесса с помощью kill -9 , дочерние процессы останутся в памяти и станут «осиротевшими» (orphaned), файловая система окажется засорена временными файлами, сегменты совместно используемой памяти - активными, сокеты - зависшими, а функция atexit(3) вообще не будет выполнена. В результате есть риск столкнуться с неожиданными и сложными для отладки проблемами.

Вместо этого используйте дефолтный сигнал TERM , а KILL - только если менее проблемные сигналы окажутся неэффективными:

$ kill 6738
$ kill -INT 6738
$ kill -HUP 6738
$ kill -KILL 6738

Если даже сигналу KILL не удается завершить процесс, это означает, что процесс скорее всего завис при операции ввода-вывода или находится в каком-нибудь другом незавершаемом состоянии. Может потребоваться перезагрузка или принудительное размонтирование глючного сетевого диска.

Использование kill -KILL по умолчанию допустимо при работе с проблематичным приложением, например, старые версии Netscape частенько завершались только с помощью сигнала KILL . Однако, это редкое исключение из правила: используйте KILL для этих заранее известных приложений и только для них.

Проблемы, возникающие при завершении процессов

Последовательная отправка разных сигналов может вызвать следующие проблемы: во-первых, процессу могут потребоваться секунды, или даже десятки секунд для корректного завершения. Один продукт, которым мне приходилось пользоваться, требовал более 30 секунд для правильного завершения после получения сигнала TERM . К счастью, эта особенность была обнаружена во время тестирования, поэтому для этого случая был написан подходящий скрипт. Во-вторых, иногда бывают ситуации, когда старый процесс завершился, в то время как новый процесс занял его ID в промежутке между сигналами TERM и KILL . Особенно этому риску подвергаются системы с повышенной «текучкой» процессов и системы, где ядро назначает PID в случайном порядке, например, OpenBSD. Проверка имени процесса или его PPID не всегда помогает, так как новый процесс может быть форком того же родителя и иметь такое же имя, поэтому особо параноидальные скрипты могут также проверять время создания процесса или другие метаданные перед отправкой сигнала. Возможно эти ситуации возникают редко, но с ними стоит считаться, если приходится иметь дело с критичным процессом.

Сигналы завершения процесса

Сигналы завершения процесса могут обозначаться по имени или порядковому номеру: kill -1 и kill -HUP эквивалентны. Однако, использование имени сигнала более безопасно, так как при указании аргумента -1 легко опечататься, отправив сигнал другому процессу или даже группе процессов. Также всегда старайтесь использовать имя в скриптах, так как это поможет лучше понять какой тип сигнала отправляется тому, кто будет читать ваш код.

Сигнал HUP «подвешивает» шелл, поэтому это хороший способ очистить шелл, повисший в ожидании ввода, или закрыть SSH-сессию.

Более подробная информация о сигналах завершения процессов указана в

Представьте себе: вы запустили программу, работаете с ней, а через время она перестает отвечать на запросы и виснет. Запустить повторно приложение невозможно из-за того, что ее экземпляр еще висит в памяти компьютера. Что делать в таком случае? В первую очередь нужно завершить работу программы и удалить процесс из памяти.

Наиболее простой и универсальный способ убить процесс в Linux — это использование терминальных команд. Данный вариант будет работать на любом дистрибутиве Linux.

Процессы в Linux

В операционной системе Linux процессом обычно называют запущенную программу или приложение. Также процессом можно называть любую задачу, которая работает в данный момент под управлением Linux. Любой работающий процесс может запустить дочерний.

Все процессы, работающие в Linux, имеют такие атрибуты:

  1. PID — уникальный для каждого процесса идентификатор.
  2. PPID — идентификатор родительского процесса.
  3. Идентификатор пользователя, запустившего процесс.
  4. Приоритет.
  5. Состояние процесса.

Каждый запущенный процесс находится в одном из состояний:

  • "Выполняется". Для обозначения этого состояния используется буква R.
  • Процесс, который запустил системную операцию, например ввод или вывод данных, и ждет когда завершится ее выполнение, называется "Ожидание". Обозначается буквой S.
  • Процесс, который остановлен пользователем или ОС Linux, находится в состоянии "Остановлен". Это состояние обозначается символом Т.
  • "Зомби" - процессы, которые больше не выполняются, но потребляют ресурсы операционной системы. Обозначаются буквой Z.
  • Непрерывный процесс нельзя завершить, пока не закончится операция прямого доступа в память. Обозначается процесс символом D.

Поиск процесса

Перед тем как в Linux убить процесс, его нужно сначала найти. Чаще всего для этой цели в Linux используют две команды top и ps.

Команда top выводит на экран полный список текущих процессов. Кроме того, в списке содержится множество полезных сведений о каждом запущенном процессе, например:

  • PID - уникальный номер процесса;
  • USER - логин пользователя, который запустил данный процесс;
  • PR - приоритет процесса в данный момент времени;
  • NI - приоритет присвоенные процессу командой NICE;
  • S- состояние данного процесса;
  • %CPU- сколько процессорного времени занимает данный процесс (в процентах);
  • %MEM- объем оперативной памяти, которую занимает данный процесс (в процентах);
  • TIME+ - сколько времени прошло с момента запуска процесса;
  • COMMAND - программа, которая запустила процесс.

Информация, предоставляемая командой top, выводится отсортированной по уровню используемого процессорного времени (столбец %CPU). Пользователь может изменить порядок сортировки:

  • отсортировать процессы по объему занимаемой оперативной памяти (столбец %MEM) нужно нажать комбинацию клавиш Shift+M;
  • отсортировать по номеру процесса (столбец PID) можно при помощи комбинации Shift+N;
  • отсортировать по времени работы (столбец TIME+) - Shift+T.
  • вернуться к исходной сортировке по уровню загрузки центрального процессора - нажать комбинацию Shift+P.

Использование команды ps

При помощи команды top можно получить множество необходимых сведений, однако это не самый удобный способ получения необходимой информации о нужном вам процессе. Чтобы не искать нужный процесс, можно воспользоваться командой ps и фильтровать список при помощи команды greep. Например, если нужно найти все процессы, связанные с запущенным браузером Opera, можно ввести команду ps axu | grep Mozilla.

Команда ps обладает следующими параметрами:

  • a - показать процессы для всех пользователей;
  • u - отобразить пользователя, который является владельцем процесса;
  • x - показывают процессы, не привязанные к терминалу. Данная опция важна при поиске информации о графическом приложении.

При помощи связки команд ps и grep можно получить всю информацию, необходимую для уничтожения зависшего приложения.

Другие способы поиска процесса

Для того чтобы найти PID процесса по его имени, существует команда pidof. Формат ее использования следующий: pidof+имя программы. Например, чтобы найти все PID, относящиеся к программе Opera, нужно ввести: pidof Opera.

В некоторых случаях бывает так, что программа завершила свое выполнение, но не освободила сетевой порт. Чтобы получить сведения, в данном случае нужно ввести команду fuser: fuser -vn tcp 80. Где 80 - это номер зависшего порта. После этого можно убить процесс Linux по порту.

После того как вы узнали PID процесса и его имя, можно приступить к операции завершения ненужного приложения. Для этого используются две команды: kill - убить процесс по id в Linux и killall - завершить выполнение программы по имени.

Структура команды kill: kill SIGNAL PID. Где SIGNAL - это сигнал, который должен быть отправлен, а PID - это идентификатор процесса.

Параметр SIGNAL завершения процесса равен 9 (SIGKILL). Таким образом, чтобы в Linux убить процесс по pid нужно ввести в консоли команду: kill -9 9578. Где 9578 уникальный номер процесса.

Команда завершения процесса не единственная, которая может быть отправлена с помощью системного приложения kill. Получить список всех команд, которые могут быть отправлены команде с помощью kill, можно введя команду kill -l.

Полезно также знать другие значения, которые может принимать параметр SIGNAL. Например, для перезагрузки зависшей программы можно использовать параметр HUP. Сигнал SIGTERM не прерывает работу программы мгновенно, а дает время для корректного завершения работы, то есть приложение сохраняет данные, завершает свое выполнение, и освобождает все занятые ресурсы.

Как в Linux убить процесс по имени

Если известно имя программы, которую нужно завершить, можно воспользоваться командой killall. Например, чтобы уничтожить все процессы, относящиеся к приложению Opera нужно ввести команду: killall -9 Opera.

Правда, данная команда не всегда завершает процессы, относящиеся к уничтожаемой программе. Если после выполнения вышеуказанной команды вы введете комбинацию ps aux | grep Opera и увидите, что некоторые процессы еще выполняются, лучше всего завершить их при помощи системного приложения kill.

В некоторых случаях, чтобы в Linux убить процесс, запущенный другим пользователем, могут потребоваться права root. Тогда перед командой завершения процесса нужно ввести команду sudo.

Вот и все сведения, необходимые пользователю для управления процессами. Правда, данная тема не является простой для новичков, но освоить ее нужно, так как все действия операционной системы осуществляются с помощью процессов. Чтобы научиться управлять ими, нужно немного потренироваться.