Один из самых раздражающих моментов при переходе от среды на базе Windows к использованию командной строки – потеря легкой многозадачности. Даже в Linux, если вы используете X Window system, вы можете использовать мышь, чтобы просто нажать на новую программу и открыть ее. В командной строке, однако, вы в значительной степени застряли с монозадачеостью. В этой статье мы покажем вам как перейти к многозадачности в Linux с помощью командной строки.
Тем не менее, в Linux все еще есть способы многозадачности, и некоторые из них являются более всеобъемлющими, чем другие. Один встроенный способ, который не требует какого-либо дополнительного программного обеспечения, – это просто перемещение процессов в фоновом режиме и на переднем плане. Мы написали статью об этом. Однако она имеет некоторые недостатки.
Во-первых, чтобы отправить процесс в фоновом режиме, сначала его нужно приостановить. Невозможно отправить уже запущенную программу в фоновый режим и поддерживать ее в одно время.
Во-вторых, вам нужно разбить рабочий процесс, чтобы начать новую команду. Вам нужно выйти из того, что вы сейчас делаете, и набрать больше команд в оболочку. Это работает, но это неудобно.
В-третьих, вы должны следить за выводами из фоновых процессов. Любой вывод из них появится в командной строке и будет мешать тому, что вы делаете в текущий момент. Таким образом, фоновые задачи должны либо перенаправить свой вывод в отдельный файл, либо их нужно полностью отключить.
Из-за этих недостатков возникают огромные проблемы с управлением процессом фона и переднего плана. Лучшее решение – использовать утилиту командной строки «screen», как показано ниже.
Не забывайте, что вы просто открываете новый сеанс SSH.
Это может быть неудобно, чтобы открыть новые сессии все время. И именно тогда вам нужен “screen”
Утилита screen позволяет создавать несколько рабочих процессов, открытых в то же время – ближайший аналог “windows”. По умолчанию он доступен в обычных репозиториях Linux. Установите его в CentOS/RHEL с помощью следующей команды:
sudo yum install screen
Теперь начните сеанс, набрав “screen”.
Это создаст пустое окно в рамках существующего сеанса SSH и даст ему номер, который показан в заголовке, как это:
Наш экран здесь имеет номер “0”, как показано. На этом скриншоте мы используем фиктивную команду” read”, чтобы заблокировать терминал и заставить его ждать ввода. Теперь скажем, мы хотим сделать что-то еще, пока мы ждем.
Чтобы открыть новый экран и сделать что-то другое, мы печатаем:
ctrl+a c
“ctrl+a” является комбинацией клавиш по умолчанию для управления экранами в программе экрана. То, что вы вводите после него, определяет действие. Так например:
Если мы нажмем “ctrl+a c”, мы получим новый экран с новым номером.
Вы можете использовать клавиши курсора для навигации по списку и перейти к экрану, который вы хотите.
Экраны – это самое близкое, что вы получите к “windows”, как система в командной строке Linux. Конечно, это не так просто, как щелчок мышью, но графическая подсистема очень ресурсоемкая. С экранами, вы можете получить почти такую же функциональность и включить полную многозадачность!