Linux screen
命令详解与使用指南
在Linux系统中,screen
是允许用户在单个终端会话中运行多个进程,并能在会话之间切换。
适用情况:screen
特别适用于远程登录(如通过SSH)时,确保即使网络连接断开,正在运行的任务也不会中断。本文将详细介绍 screen
的安装、基本用法和常见技巧。
1. 安装 screen
在大多数Linux发行版中,screen
都包含在默认的软件库中。可以通过包管理器安装它:
Debian/Ubuntu
sudo apt-get install screen
Red Hat/CentOS
sudo yum install screen
Fedora
sudo dnf install screen
Arch Linux
sudo pacman -S screen
2. 用法
2.1、screen
创建会话
创建一个具有指定名称的 screen
会话,方便管理和识别,启动后,你会看到一个新的终端会话,并且可以在其中运行任何命令。
screen -S my_session
2.2、离开会话 (Detach状态)
在 screen
会话中,可以使用快捷键 Ctrl+A+D
离开当前会话。分离会话后,可以安全地退出SSH或关闭终端,正在运行的任务不会中断。
2.3、连接会话
2.3.1、连接会话 【Reattach状态的screen】
列出所有会话:screen -ls
输出示例:
There is a screen on:3969263.fastapi (2024年09月27日 08时43分52秒) (Detached)
1 Socket in /run/screen/S-username.
使用 screen -r
命令重新连接到指定的会话:screen -r 3969263 或者 screen -r fastapi
2.3.2、连接会话状【Attached状态的screen】
screen -D -r your_screen_name # 解释:-D -r 先踢掉前一用户,再登陆
2.4、切换会话
在一个 screen
会话中,可以创建多个窗口,并在它们之间切换:
- 创建新窗口:
Ctrl-a c
- 切换到下一个窗口:
Ctrl-a n
- 切换到上一个窗口:
Ctrl-a p
- 列出所有窗口:
Ctrl-a "
2.5、共享会话
screen
允许多个用户共享一个会话,这对于协作调试和教学非常有用:
-
启动共享会话:
screen -S shared_session
-
启用多用户模式:
Ctrl-a :multiuser on
-
添加用户权限:
Ctrl-a :acladd username
另一个用户可以通过以下命令加入共享会话:
screen -x username/shared_session
2.6、日志记录
screen
可以将会话中的输出记录到文件:
-
启动日志记录:
Ctrl-a H
-
停止日志记录:
Ctrl-a H
日志文件将保存在当前用户的主目录下,默认文件名为 screenlog.0
。
2.7、删除screen
2.7.1、在screen中执行Ctrl+D删除
Ctrl+D # 在当前screen下,输入Ctrl+D,删除该screen
Ctrl+A,Ctrl+D # 在当前screen下,输入先后Ctrl+A,Ctrl+D,退出该screen
2.7.2、未进入screen的执行删除
# 删除指定screen, your_screen_name为待删除的screen name
screen -S your_screen_name -X quit
2.8、判断当前是否在screen下
# 判断当前是否在screen中断下,Ubuntu系统,可以这样:
sudo vim /etc/screenrc
# 文件末尾追加一行即可允许设置screen标题
caption always "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%H %Y/%m/%d "
2.9、快捷键
screen
提供了一系列快捷键,使得在会话中的操作更加便捷:
Ctrl-a c
:创建新窗口Ctrl-a n
:切换到下一个窗口Ctrl-a p
:切换到上一个窗口Ctrl-a d
:分离会话Ctrl-a "
:列出所有窗口Ctrl-a 0-9
:切换到指定编号的窗口Ctrl-a k
:关闭当前窗口Ctrl-a A
:重命名当前窗口