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

webmaster

Опубликован:  2021-05-08T05:23:05.912079Z
Отредактирован:  2021-05-08T05:18:37.248959Z
0
0
0
Вы неавторизованы, рекомендую зарегистрироваться и авторизоваться.

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

zBc0ACwjcl.png

Замечание: эта статья впервые была опубликована в блоге debianeach в списках auriz.ru 24 сентября 2019 года и набрала с тех пор 733 просмотра, поскольку тема статьи будет актуальна всегда, принято решение восстановить статью из архива.

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

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

xXiDQvhikk.png

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

wu5TDmZyOv.png

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

gpWkB1gbZv.png

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

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

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

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

kfkLZO2n8N.png

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

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

geany newbie.cpp

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

3LqvtF4QJM.png

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

qPfCl2SOOG.png

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

xjeFA5WWiL.png

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

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

screengrab &

186g60VmVS.png

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

iNKg2PUNAi.png

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

PTSSPtugTx.png

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

fg 1

5fXbQl0QfJ.png

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

GE93cQ5WBv.png

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

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

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

2. Важная информация для постоянных читателей

Уважаемый читатель, списки auriz.ru не имеет спонсоров и финансирования, и чтобы выжить мы можем рассчитывать только на поддержку своих постоянных читателей и их пожертвования. Если вам оказалась полезна эта или другая статья этого сайта, и вы хотите больше интересных материалов на auriz.ru, поддержите нас рублём, ваша поддержка даст нам шанс выжить, оплатить продление домена и VDS, написать и опубликовать для вас другие интересные материалы.

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

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

Метки:  debian, terminal, desktop, linux, fg, bg, jobs
Комментарии: