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

debianeach

Опубликован:  2019-09-24T05:31:30.844546Z

Терминал Linux у рядовых пользователей компьютера, особенно у начинающих осваивать мир Linux, чаще всего ассоциируется с чем-то магическим, непознаваемым и чрезвычайно сложным в освоении. Тем не менее, ничего сложного в этой области компьютерных задач нет. В этом обзоре я покажу основные принципы взаимодействия с терминальной программой и методы управления процессами. Поможет мне в этом, как всегда, мой тестовый десктоп Debian buster c LXDE на борту.

hvcKpKV8cU.png

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

O0Tpy144oy.png

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

ChMYxxjl4x.png

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

dGeUQ7V90S.png

Для пользователей, привыкших к благам цивилизации и программам с графическим пользовательским интерфейсом, терминал является чужеродным отталкивающим элементом, такие пользователи чаще всего сразу вспоминают про DOS и его крайнюю недружелюбность, у них сразу начинает болеть голова, что, в сущности, совершенно естественно. Работа в терминале требует начальной теоретической подготовки, знания программ, их ключей и способов управления процессами. В терминале нет менюшек, кнопочек с надписью "Сделай мне хорошо" и прочих рюшечек. Здесь нужно вводить команды, знать к командам соответствующие задаче ключи и анализировать выхлоп этих команд.

Команды в текстовом терминале - это в сути имена соответствующих программ. Как известно, программы в Linux делятся на два вида:

  • CLI-программы (CLI - Command Line Interface);
  • GUI-программы (GUI - General User Interface).

CLI-программы принято называть консольными, а GUI-программы - оконными. Работая в терминале Linux, можно запускать программы обоих видов. Запущенную в терминале программу принято называть процессом. Как правило процессы делятся на долгоиграющие и отдающие выхлоп мгновенно. Многие CLI-программы, как правило, относятся ко второму типу, они отдают свой текстовый выхлоп на терминал сразу, после чего процесс тут же завершается. В качестве примера можно рассмотреть программу ls, которая выдаёт на терминал оглавление текущего каталога.

A8x0O0ZPoe.png

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

Оконные программы тоже можно запустить в терминале, и их процессы, как правило, тоже занимают терминал на время своего исполнения, продемонстрировать работу с процессами проще всего на их примере. В своём терминале я буду запускать geany - минималистичную IDE для программистов и screengrab - программу для захвата снимков экрана. Любую оконную программу можно запустить в терминале, для этого достаточно знать имя программы. Запускаю geany.

geany newbie.cpp

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

ve7u9b7S5K.png

Как видно на снимке экрана выше, на рабочем столе появилось окно программы geany, в этом окне имеется вкладка с именем созданного файла. Всё прекрасно, но в результате запуска geany терминал оказался занятым этим процессом, и у пользователя нет возможности ввести и исполнить следующую команду. Что делать? Ответ прост. Процесс geany можно перевести в фоновый режим. Для этого достаточно выполнить два элементарных действия. Нажать магическое сочетание клавиш ctrl+z.

aCeHD4eaif.png

В результате процесс geany приостанавливается, на экране терминала появляется приглашение командной строки и появляется возможность вводить новые команды. Чтобы процесс geany не повис, его нужно перевести в фоновый режим командой bg (BackGround).

QGwScI1si6.png

Здесь следует обратить внимание, что система при переводе процесса geany в фоновый режим присвоила этому процессу номер - единичка в квадратных скобках. Теперь можно работать в окне geany и, когда это необходимо, вводить новые команды в окне терминала.

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

screengrab &

Hyjd0iK9sX.png

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

yKGrovrTXl.png

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

eIxYjlp8Ov.png

Как видно, в результате ввода команды jobs на терминале появился список фоновых процессов, в моём случае это два процесса: geany и screengrab, каждому из них присвоен порядковый номер. Любой из фоновых процессов можно вернуть на терминал при помощи команды fg (ForeGround), в качестве аргумента этой программе нужно ввести порядковый номер фонового процесса. Давайте вернём в терминал процесс geany.

fg 1

vbvqQ3JWKE.png

Теперь geany снова на переднем плане, а возможность ввода команд в терминале отсутствует. Завершить процесс geany теперь можно с помощью клавиатурного сочетания ctrl+c.

XQs2V2bk4v.png

Процесс geany завершен. Следует быть внимательным при завершении процессов и заранее, перед завершением процесса сохранять свои данные в файлы.

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

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

Комментарии: