Использование команд ps, kill и nice для управления процессами в Linux

На сервере Linux, как и на любой другой машине, можно запускать приложения.  Компьютер рассматривает их как так называемые «процессы».

Что такое коды завершения

В Linux и других Unix-подобных операционных системах программы во время завершения могут передавать значение родительскому процессу. Это значение называется кодом завершения или состоянием завершения. В POSIX по соглашению действует стандарт: программа передаёт 0 при успешном исполнении и 1 или большее число при неудачном исполнении.

Почему это важно? Если смотреть на коды завершения в контексте скриптов для командной строки, ответ очевиден. Любой полезный Bash-скрипт неизбежно будет использоваться в других скриптах или его обернут в однострочник Bash. Это особенно актуально при использовании инструментов автоматизации типа SaltStack или инструментов мониторинга типа Nagios. Эти программы исполняют скрипт и проверяют статус завершения, чтобы определить, было ли исполнение успешным.

Кроме того, даже если вы не определяете коды завершения, они всё равно есть в ваших скриптах. Но без корректного определения кодов выхода можно столкнуться с проблемами: ложными сообщениями об успешном исполнении, которые могут повлиять на работу скрипта.

Как просматривать запущенные процессы в Linux top

Самый простой способ узнать, какие процессы запущены на сервере в данный момент, — использовать команду top:

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

Можно увидеть, что 1 процесс запущен, а 55 процессов  находятся в режиме ожидания (иначе говоря, простаивают, не используя ресурсы процессора).

Как просматривать запущенные процессы в Linux top

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

Усовершенствованная версия команды top под названием htop доступна в хранилищах. Чтобы установить ее, используйте данную  команду:

sudo apt-get install htop

Примечание — Для установки htop на centos необходимо использовать следующие команды:

yum install epel-release

После установки репозитория Epel установим htop:

Как просматривать запущенные процессы в Linux top

yum install htop

Запустив команду htop, можно увидеть более удобное для пользователя отображение информации:

htop

Читайте также:  Как перевести страницу на русский?

Linux Shell или «Терминал»

Linux Shell — это программа, которая получает команды от пользователя и передает их ОС для обработки и показывает выходные данные. Shell Linux является его основной частью. Большинство дистрибутивов поставляются с графическим интерфейсом пользователя (GUI), но в основном в серверных Linux используется CLI (интерфейс командной строки).

В этом руководстве мы рассмотрим основные команды, которые мы используем в оболочке Linux.

Чтобы открыть терминал, нажмите Ctrl + Alt + T в Ubuntu или нажмите Alt + F2, введите gnome-терминал и нажмите ввод. В Raspberry Pi введите lxterminal.

Завершаем процессы в Linux

Горячие клавиши терминала linux

Существуют разные системные средства, позволяющие «убить» какой-либо процесс. Иногда для этого приходится узнавать его идентификатор, а в других ситуациях достаточно только названия. Далее мы предлагаем детально изучить все представленные методы, чтобы найти оптимальный для себя и выполнять его при необходимости, учитывая описанные ранее сигналы.

Способ 1: «Системный монитор»

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

  1. Перейдите в меню «Показать приложения», где отыщите «Системный монитор» и запустите его, кликнув по значку левой кнопкой мыши.

В появившемся окне вы увидите список процессов. Найдите имя необходимой для завершения задачи.

Дополнительно вы можете переместиться в свойства объекта через контекстное меню, чтобы посмотреть всю информацию о нем.

Щелкните правой кнопкой мыши по строке и выберите пункт «Завершить». Это же действие выполняется через горячую клавиш Ctrl + E. Еще внизу имеется кнопка, позволяющая завершить процесс без вызова контекстного меню.

Читайте также:  Какой Linux выбрать? Лучшие дистрибутивы Linux

Если же операция не завершилась по каким-либо причинам, задействуйте опцию «Убить».

Ознакомьтесь с информацией в предупреждении и подтвердите свои намерения.

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

Способ 2: Команда kill

Для применения команды kill потребуется знание PID (идентификатора процесса), поскольку именно так осуществляется применение аргументов. В статье ниже мы детально описали операцию просмотра списка процессов для получения различной информации. Обязательно ознакомьтесь с ней перед выполнением следующей инструкции.

Подробнее: Просмотр списка процессов в Linux

Далее остается только запустить «Терминал» и задействовать упомянутую команду. Для начала изучите ее простой синтаксис: . Теперь давайте рассмотрим пример «убийства».

  1. Откройте меню приложений и запустите «Терминал».

Введите простую команду для получения информации об указанном процессе, где name — имя желаемой программы.

В отобразившемся результате отыщите главный PID и запомните его.

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

Теперь вы можете снова использовать , чтобы проверить, была ли завершена операция.

То же самое действие по «убийству» осуществляется и через другой аргумент путем ввода .

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

Учтите, что некоторые процессы запускаются от имени суперпользователя, соответственно, для их завершения требуются привилегии. Если при попытке ввода kill вы получаете информацию «Отказано в доступе», вводите перед основной командой sudo, чтобы получилось .

Способ 3: Команда pkill

Следующая консольная утилита называется pkill и является модернизированной версией предыдущей команды. Здесь все реализовано точно по такому же образу, но вместо PID от пользователя требуется вводить название процесса.

  1. Для отправки сигнала SIGTERM используйте .
Читайте также:  Секреты Терминала. Часть 4: Операции над объектами

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

Задайте вручную тип сигнала, введя такую форму , где -TERM — необходимый сигнал.

Используйте для определения того, что процесс больше не выполняется, если вы не хотите задействовать ps

Способ 4: Команда killall

В качестве последнего способа мы рассмотрим команду под названием killall. Ее функционирование и синтаксис выглядят точно так же, как у всех предыдущих утилит, поэтому останавливаться на этом мы не будем. Только уточним, что эта команда позволяет завершить все процессы с указанным названием разом и может быть использована в разных случаях.

Теперь вы знаете все о завершении процессов в Linux. Перед выполнением методов убедитесь, что принудительное «убийство» не приведет к системным сбоям. Если же ни один вариант не позволил полностью избавиться от процесса, попробуйте просто перезагрузить компьютер или удалить софт, связанный с этой опцией.

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.