Команда экрана Linux: поддерживать работу процессов, несмотря на разрыв соединения
На этой странице
- 1 Установка команды screen
- 2 Использование экранной команды
- 3 У меня прервалось соединение. Что делать?
- 4 ссылки
Я думаю, вы все это знаете: вы подключены к своему серверу с помощью SSH и находитесь в процессе компиляции некоторого программного обеспечения (например, нового ядра) или выполнения какой-либо другой задачи, которая занимает много времени, и вдруг ваше соединение по какой-то причине обрывается, и вы теряете незаконченную работу. Это может быть очень раздражающим, но, к счастью, есть небольшая утилита screen, которая позволяет вам повторно подключиться к предыдущему сеансу, чтобы завершить свою задачу. В этом кратком руководстве показано, как использовать screen именно для этой цели.
1 Установка команды экрана
Установка экрана очень проста. В Debian запустите:
apt-get install screen
Для Ubuntu используйте команду с sudo:
sudo apt-get install screen
А для Fedora, CentOS, SuSE и Mandriva также есть пакеты экранов, которые можно установить с помощью yum/yast/urpmi/...
Федора и CentOS
yum install screen
2 Использование экранной команды
С помощью экрана вы можете создать один или несколько сеансов в вашем текущем SSH-терминале. Просто беги
screen
чтобы начать это. Это создает сеанс экрана или окно (хотя вы его как таковое не видите) в вашем текущем SSH-терминале:
Нажмите «Пробел» или «Return», чтобы перейти к командной строке:
Похоже на обычный SSH-терминал, не так ли?
Теперь я собираюсь описать самые важные экранные команды, которые вам нужны для управления экраном. Эти команды начинаются с CTRL a, чтобы отличить их от обычных команд оболочки.
- Ctrl a c — создает новый сеанс экрана, чтобы можно было использовать несколько сеансов экрана одновременно.
- Ctrl и n — переключение на сеанс next screen (если вы используете более одного).
- Ctrl a p — переключение на pпредыдущий сеанс экрана (если вы используете более одного сеанса).
- Ctrl a d — Отключение сеанса экрана (не убивая процессы в нем — они продолжаются).
Чтобы закрыть сеанс экрана, когда все задачи завершены, вы можете ввести
exit
Теперь давайте немного поиграем с ним. В нашем окне экрана мы запускаем команду
top
Это должно выглядеть так:
Теперь давайте создадим еще один сеанс экрана, набрав
Ctrl a c
Откроется новый сеанс с пустым экраном, и там мы запустим
tail -f /var/log/mail.log
чтобы постоянно просматривать наш почтовый журнал:
Теперь вы можете просматривать сеансы двух экранов, запустив
Ctrl a n
или
Ctrl a p
Чтобы отключить сеанс экрана и вернуться к обычному SSH-терминалу, введите
Ctrl a d
Вернувшись на свой обычный SSH-терминал, вы можете запустить
screen -ls
чтобы получить список ваших текущих сеансов экрана:
There are screens on:
2477.pts-0.server1 (Detached)
2522.pts-0.server1 (Detached)
2 Sockets in /var/run/screen/S-root.
Чтобы повторно подключиться к одному из этих сеансов, запустите
screen -r 2477.pts-0.server1
где 2477.pts-0.server1 — имя одной из сессий из вывода экрана -ls.
Чтобы выйти и завершить сеанс экрана, завершите все текущие задачи в нем (top можно завершить, набрав q, tail -f /var/log/mail.log можно завершить, набрав CTRL c), а затем введите
exit
Затем вы вернетесь к другому сеансу экрана (если вы используете более одного) или к обычному терминалу SSH, если больше сеансов экрана не открыто.
Если вы хотите узнать больше об экране, запустите
man screen
3 У меня пропало соединение – что делать?
Теперь давайте предположим, что вы компилируете ядро в сеансе экрана, что обычно занимает много времени, и вдруг ваше соединение обрывается. Благодаря экрану ваша работа не потеряется. Как только ваше соединение восстановится, снова войдите в свою систему с помощью SSH и запустите
screen -ls
как показано в главе 2. Из результатов выберите одну сессию (например, 2477.pts-0.server1) и повторно подключитесь к ней:
screen -r 2477.pts-0.server1
Если вы выбрали правильный сеанс, вы должны обнаружить, что ваше ядро все еще компилируется (если оно еще не завершено за это время), чтобы вы могли продолжить свою работу.
4 ссылки
- экран: http://www.gnu.org/software/screen