Поиск по сайту:
Все прекрасное редко (Цицерон).

Многозадачность в Linux с помощью командной строки

25.10.2018

Один из самых раздражающих моментов при переходе от среды на базе Windows к использованию командной строки – потеря легкой многозадачности. Даже в Linux, если вы используете X Window system, вы можете использовать мышь, чтобы просто нажать на новую программу и открыть ее. В командной строке, однако, вы в значительной степени застряли с монозадачеостью. В этой статье мы покажем вам как перейти к многозадачности в Linux с помощью командной строки.

Фоновое и приоритетное управление процессами

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

Незащищенный

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

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

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

Из-за этих недостатков возникают огромные проблемы с управлением процессом фона и переднего плана. Лучшее решение – использовать утилиту командной строки «screen», как показано ниже.

Но сначала – вы откроете новый сеанс SSH

Не забывайте, что вы просто открываете новый сеанс SSH.

Это может быть неудобно, чтобы открыть новые сессии все время. И именно тогда вам нужен “screen”

Утилита screen позволяет создавать несколько рабочих процессов, открытых в то же время – ближайший аналог “windows”. По умолчанию он доступен в обычных репозиториях Linux. Установите его в CentOS/RHEL с помощью следующей команды:

sudo yum install screen
Многозадачность в Linux с помощью командной строки

Открытие нового экрана

Теперь начните сеанс, набрав “screen”.

Это создаст пустое окно в рамках существующего сеанса SSH и даст ему номер, который показан в заголовке, как это:

Многозадачность в Linux с помощью командной строки

 

Наш экран здесь имеет номер “0”, как показано. На этом скриншоте мы используем фиктивную команду” read”, чтобы заблокировать терминал и заставить его ждать ввода. Теперь скажем, мы хотим сделать что-то еще, пока мы ждем.

Чтобы открыть новый экран и сделать что-то другое, мы печатаем:

ctrl+a c

 

“ctrl+a” является комбинацией клавиш по умолчанию для управления экранами в программе экрана. То, что вы вводите после него, определяет действие. Так например:

  • ctrl+a c – C активирует новый экран
  • ctrl+a [число] – переход к определенному номеру экрана
  • ctrl+a k – K отключает текущий экран
  • ctrl+a n – Переход к экрану n
  • ctrl+a “- отображает все активные экраны в сеансе

Если мы нажмем “ctrl+a c”, мы получим новый экран с новым номером.

Вы можете использовать клавиши курсора для навигации по списку и перейти к экрану, который вы хотите.
Экраны – это самое близкое, что вы получите к “windows”, как система в командной строке Linux. Конечно, это не так просто, как щелчок мышью, но графическая подсистема очень ресурсоемкая. С экранами, вы можете получить почти такую же функциональность и включить полную многозадачность!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

Спасибо!

Теперь редакторы в курсе.