Управляем процессами в терминале Linux, часть вторая

debianeach

Опубликован:  2019-09-26T06:50:04.752009Z
Отредактирован:  2019-09-26T08:03:11.458989Z

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

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

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

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

B3q7oWQAQS.png

kD0TWK3nPC.png

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

gBH5JM6qip.png

Рассмотрим ситуацию, когда одна из программ (geany или screengrab) зависла и перестала реагировать на управляющие действия, её невозможно закрыть, свернуть или развернуть её окно, получить доступ к меню. Что делать? В этом случае нужно зайти в терминал и определить PID процесса. PID - это специальный числовой идентификатор, который присваивается системой каждому процессу, каждый процесс в системе имеет уникальный PID. Определить PID процесса можно при помощи консольной программы ps. Так как процессы geany и screengrab принадлежат одному и тому же текущему пользователю, то увидеть данные этих процессов можно такой командой:

ps ux

4CpUfr2z8W.png

Запущенная с этими ключами, ps выдаёт на терминал все процессы текущего пользователя, процессы запущенных из системного меню программ следует искать в самом конце выдачи ps по имени.

vKpJbCszpe.png

Как видно на снимке экрана выше, процесс geany имеет PID 1090, а процесс screegrab имеет PID 1098. Зная PID процесса, ему можно послать сигнал командой kill. Как правило, к подобным действиями прибегают, когда процесс завис и окно программы не отвечает на действия оператора. В этих случаях обычно процесс просто напросто убивают. Все доступные kill сигналы можно увидеть при помощи ключей -l или -L.

BLppyBgLen.png

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

kill -9 1090

7wuzohuW0B.png

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

Важно осознать, что в данном случае я убил процесс принадлежащий текущему пользователю системы. Если необходимо убить процесс другого пользователя, тогда потребуется получить привилегии суперпользователя с помощью sudo или su -, но это тема отдельного разговора. И в этом случае для определения PID процесса можно будет вывести на терминал все процессы системы, это можно сделать так:

ps aux

В качестве вывода... Рассмотренный приём довольно полезен и намного удобней других вариантов действий при зависании оконных программ, например разнообразных оконных системных мониторов. Более подробную информацию о программах ps и kill можно получить на страницах соответствующих мануалов - man ps и man kill.

Метки:  linux, terminal, ps, kill
Комментарии: