Linux команды · 3 min read · Sep 15, 2025
Команда Linux screen: поддерживайте процессы в работе, несмотря на разрыв соединения

Я думаю, вы все это знаете: вы подключены к своему серверу по SSH и в процессе компиляции какого-то программного обеспечения (например, нового ядра) или выполнения другой задачи, которая занимает много времени, и вдруг ваше соединение обрывается по какой-то причине, и вы теряете свою незавершенную работу. Это может быть очень неприятно, но, к счастью, есть небольшая утилита под названием screen, которая позволяет вам повторно подключиться к предыдущей сессии, чтобы вы могли завершить свою задачу. Этот короткий учебник показывает, как использовать screen именно для этой цели.
1 Установка команды screen
Установка screen очень проста. На Debian выполните:
apt-get install screenДля Ubuntu используйте команду с sudo:
sudo apt-get install screenА для Fedora, CentOS, SuSE и Mandriva также есть пакеты screen, которые вы можете установить с помощью yum / yast / urpmi /…
Fedora и CentOS
yum install screen2 Использование команды screen
С помощью screen вы можете создать одну или несколько сессий в вашем текущем SSH терминале. Просто выполните
screenчтобы начать. Это создаст сессию или окно screen (хотя вы не увидите его как таковой) в вашем текущем SSH терминале:

Нажмите пробел или Enter, чтобы перейти к командной строке:

Похоже на ваш обычный SSH терминал, не так ли?
Теперь я собираюсь описать самые важные команды screen, которые вам нужно знать для управления screen. Эти команды начинаются с CTRL a, чтобы отличать их от обычных команд оболочки.
- Ctrl a c - Создает новую сессию screen, чтобы вы могли использовать более одной сессии одновременно.
- Ctrl a n - Переключается на n-ю сессию экрана (если вы используете более одной).
- Ctrl a p - Переключается на p-редыдущую сессию экрана (если вы используете более одной).
- Ctrl a d - Отключает сессию экрана (без завершения процессов в ней - они продолжают работать).
Чтобы закрыть сессию экрана, в которой все задачи завершены, вы можете ввести
exitТеперь давайте немного поиграем с этим. В нашем окне screen мы выполняем команду
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 - это имя одной из сессий из вывода screen -ls.
Чтобы выйти и завершить сессию экрана, завершите все текущие задачи в ней (top можно завершить, введя q, tail -f /var/log/mail.log можно завершить, введя CTRL c) и затем введите
exitВы вернетесь к другой сессии экрана (если вы используете более одной) или к обычному SSH терминалу, если больше нет открытых сессий экрана.
Если вы хотите узнать больше о screen, выполните
man screen3 Мое соединение обрывалось - что я могу сделать?
Теперь предположим, что вы компилируете ядро в сессии экрана, что обычно занимает много времени, и вдруг ваше соединение обрывается. Благодаря screen ваша работа не потеряна. Как только ваше соединение восстановится, войдите в свою систему по SSH снова и выполните
screen -lsкак показано в главе 2. Из результатов выберите одну сессию (например, 2477.pts-0.server1) и повторно подключитесь к ней:
screen -r 2477.pts-0.server1Если вы выбрали правильную сессию, вы должны обнаружить, что ваше ядро все еще компилируется (если оно не завершилось за это время), чтобы вы могли продолжить свою работу.
4 Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.