Linux: как убить процесс с помощью терминальных команд

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

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

Процессы в Linux

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

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

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

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

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

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

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

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

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

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

Информация, предоставляемая командой 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 в linux

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

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

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

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

Завершение процесса с помощью команды kill

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

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

Команда kill

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

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

Завершение процесса с помощью команды kill

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

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

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

Завершение процесса с помощью команды killall

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

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

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

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.