Снять задачу linux mint

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

Несмотря на то что Linux стабильнее чем Windows, в плане работы программ и различных сервисов, случается всякое и иногда возникает необходимость завершить процесс Linux. Это может понадобиться, если программа завила, когда вы запустили системный сервис в фоне через терминал, а не систему инициализации, а также во многих других случаях, когда убить процесс Linux проще, чем перезагружать всю систему.

В этой статье мы рассмотрим несколько самых распространенных способов завершить процесс Linux. Опишем подробно как происходит остановка процесса и как все сделать правильно.

Как происходит завершение процесса?

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

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

  • SIGINT — самый безобидный сигнал завершения, означает Interrupt. Он отправляется процессу, запущенному из терминала с помощью сочетания клавиш Ctrl+C. Процесс правильно завершает все свои действия и возвращает управление;
  • SIGQUIT — это еще один сигнал, который отправляется с помощью сочетания клавиш, программе, запущенной в терминале. Он сообщает ей что нужно завершиться и программа может выполнить корректное завершение или проигнорировать сигнал. В отличие от предыдущего, она генерирует дамп памяти. Сочетание клавиш Ctrl+/;
  • SIGHUP — сообщает процессу, что соединение с управляющим терминалом разорвано, отправляется, в основном, системой при разрыве соединения с интернетом;
  • SIGTERM — немедленно завершает процесс, но обрабатывается программой, поэтому позволяет ей завершить дочерние процессы и освободить все ресурсы;
  • SIGKILL — тоже немедленно завершает процесс, но, в отличие от предыдущего варианта, он не передается самому процессу, а обрабатывается ядром. Поэтому ресурсы и дочерние процессы остаются запущенными.

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

Сначала Ctrl+C, если это возможно, затем SIGTERM — он хоть и завершает процесс, но делает эту культурно, и только в крайнем случае SIGKILL. А теперь рассмотрим как убить процесс по pid Linux на практике. Если вы всегда используете SIGKILL, тогда на ум приходит такая картинка:

Читайте также:  Домашний прокси сервер linux

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

Для передачи сигналов процессам в Linux используется утилита kill. Ее синтаксис очень прост:

$ kill -сигнал pid_процесса

Сигнал представляет собой один из выше перечисленных сигналов для завершения процесса. По умолчанию, если этот параметр не указан, используется сигнал SIGTERM, что является очень правильно. Также нам нужно указать какой процесс нужно завершить. Для этого используется уникальный идентификатор процесса — PID.

Допустим, у нас выполняется утилита ping. Мы хотим ее завершить с помощью kill. Тогда, сначала мы узнаем ее идентификатор с помощью команды ps:

В первой строчке отобразится сама утилита ping, а во второй сама программа ps. Берем нужный PID и завершаем процесс с помощью SIGTERM:

И только если после этой команды процесс продолжил висеть, а это вы можете проверить, выполнив ps. Только теперь можно выполнить SIGKILL:

Если процесс запущен от суперпользователя, то, естественно, вам нужно использовать sudo. Не всегда удобно уничтожать процесс по его PID, как минимум, потому, что вам этот PID нужно еще узнать. Мы могли бы нагородить сложных конструкций с использованием xargs, чтобы вычислять автоматически pid по имени процесса и сразу же его завершать, но в этом нет необходимости. Уже существуют специальные утилиты.

Как завершить процесс с помощью pkill

Утилита pkill — это оболочка для kill, она ведет себя точно так же, и имеет тот же синтаксис, только в качестве идентификатора процесса ей нужно передать его имя. Утилита сканирует директорию proc и находит PID первого процесса с таким именем, затем отправляет ему SIGTERM. Таким образом, вы можете убить процесс по имени Linux. Например, если мы хотим завершить тот же ping:

Также можно вручную задать тип сигнала:

Вместо ps, вы можете использовать утилиту pgrep для поиска pid процесса, убедимся что наша программа завершена:

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

Как остановить процесс с помощью killall

killall работает аналогично двум предыдущим утилитам. Она тоже приминает имя процесса в качестве параметра и ищет его PID в директории /proc. Но эта утилита обнаружит все процессы, с таким именем и завершит их. Например:

Как видите, запущено несколько процессов, осталось остановить процесс Linux с помощью killall:

Команда завершит все запущенные утилиты ping, вы можете убедиться в этом еще раз выполнив pgrep:

Выводы

В этой статье мы рассмотрели как убить процесс Linux. Иногда эта задача может быть очень полезной, но важно понимать, что ее нужно выполнять правильно. Нельзя сказать, что передача SIGKILL вместо SIGTERM очень опасна, но так делать не стоит. Надеюсь, эта информация была полезна для вас.

Читайте также:  Tp link 722n v2 kali linux

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Аналог диспетчера задач в Linux

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

Используем консоль

Стоит сказать, что (как и в Windows, если Вы не знали) один из простейших способов завершить процесс в Linux — сделать это через консоль.

Для этого сначала придется узнать PID процесса, а затем выполнить специальную команду.

Для того, чтобы увидеть все процессы в системе введите:

Результат будет выглядеть так:

Команда ps в консоли

В выведенном списке процессов найдите нужный, видите его PID? Он идет вторым значением в каждой выведенной строке. Берем его, и выполняем вводим следующую команду:

Само собой, вместо букв PID надо ввести PID нужного процесса.

Вот, собственно, и все. Осталось добавить пару хитростей.

Если Вы заранее знаете, как называется процесс, можно воспользоваться командой:

ps axu | grep название-приложения

Например, если я захочу найти KTorrent (хотя он у меня ни разу не вис, просто под руку попался) я введу:

Команда ps grep в консоли

Здесь у нас и представится возможность использовать вторую хитрость — как видите, у KTorrent несколько процессов, чтобы завершить их все, я использую команду killall:

Эта команда завершит их все.

В завершении разговора о консоли осталось только порекомендовать интересующимся почитать про различные сигналы завершения процесса и их использование.

Для любителей графического интерфейса

Графические решения для просмотра и завершения процессов в Linux, конечно же, тоже существуют. Их наличие или отсутствие по-умолчанию зависит от Вашего дистрибутива. Если в Вашем дистрибутиве используется среда KDE — нажмите ctrl+escape, чтобы вызвать здешний «диспетчер задач» KRunner. В моем Linux Mint 17.2 KDE выглядит он вот так:

KRunner

В Linux Mint 17.2, использующем в качестве DE Cinnamon, ничего такого «сходу» не нашлось, однако, установив пакет mate-system-monitor я обрел желаемое.

sudo apt-get install mate-system-monitor

После установки программу можно найти в меню, а выглядит она вот так:

System Monitor

В Ubuntu 14.04 программа System Monitor оказалась сразу включена в дистрибутив, осталось только найти ее в меню.

Ну и наконец, если в Вашем дистрибутиве ничего такого не нашлось, а орудовать в консоли не хочется, можете установить Htop. Хотя работает программа в консоли, интерфейс все-таки вполне можно назвать если не графическим, то псевдо-графическим точно:

Htop

Установить в Ubuntu-подобных дистрибутивах можно командой:

Если у Вас другой дистрибутив, сходите на сайт разработчика софтины: http://hisham.hm/htop/

Читайте также:  What is root in linux terminal

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Авторский проект Александра Павлова ©. Автором всех материалов, опубликованных на сайте, является Александр Павлов . Материалы, размещенные на сайте, охраняются Законом о защите авторских прав. Публикация любых материалов этого сайта запрещена без предварительного согласования с автором.

Источник

Диспетчер задач в Linux — принудительно закрываем программу

Пользователи спрашивают — Как принудительно завершить ту или иную программу в Linux? Как правило это пользователи которые перешли с Windows или не так часто сталкиваются с linux. В Windows это возможно через диспетчер задач. В linux его нет.

Как открыть диспетчер задач

Если в Windows диспетчер задач открывается, по умолчанию, комбинацией клавиш Ctrl+Alt+Del или Ctrl+Alt+Esc, то в linux данной опции не предусмотрено.

Диспетчер задач Windows

Для того, чтоб открыть диспетчер задач в linux, вначале его надо установить.

Называется в Linux он System monitor. Установить его можно просто из стандартного репозитория, командой в терминале

sudo apt install gnome-system-monitor

или при помощи менеджера пакетов Synaptic

менеджер пакетов synaptic

После установки вы найдете его в меню приложений, раздел Система

После запуска в нем вы увидите все запущенные процессы

System monitor

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

System monitor

В открывшемся меню можно выбрать то, что нас интересует:

Завершить процесс, убить его совсем и так далее.

Так же на вкладке ресурсы мы увидим загруженность нашей системы

System monitor

На вкладке файловые системы вы можете посмотреть всю информацию о ваших накопителях

System monitor

Вот такая очень полезная маленькая программка.

Закрыть программу утилитой из терминала

Если вы привыкли работать в терминале или вам это ближе, то есть и вариант для завершения процесса, программы в терминале.

Открываем терминал и ставим маленькую утилиту htop стандартной командой

После установки набираем команду

перед вами откроется аналог диспетчера задач, только в терминале

терминал

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

Выбираем нажатием клавиш, что мы хотим с этим процессом сделать.

Нужные клавиши от F1 до F10 с действиями подписаны в нижней строке

терминал

Если закрываем программу, то выбираем F9

Затем нас спросят подтвердить наше действие (send) или отказаться, если передумали (Cancel). Нажимаем Enter для завершения начатого или Esc если передумали.

терминал

Закрыть программу командой из терминала

Можно закрыть программу или приложение просто командой из терминала.

Для этого нам нужно узнать идентификационный номер процесса.

Набираем команду в терминале

ps aux | grep имя_приложения

Нужный нам номер — вторая колонка.

терминал

Теперь завершаем процесс командой

sudo kill -TERM pid-приложения

Где pid — приложения — уникальный номер запущенного процесса, приложения

терминал

Если у кого есть, что добавить, оставляйте комментарии, делитесь информацией.

Источник

Оцените статью
Adblock
detector