websec80

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理

当谈到在Linux终端中管理会话时,screen是一个非常有用的工具。它允许你在单个终端会话中创建多个虚拟终端,从而可以同时运行多个任务,即使在断开与服务器的连接后也可以保持这些会话。下面是关于screen命令的详细介绍:

1. 安装和启动screen 通常,screen已经预装在大多数Linux发行版中。如果未安装,你可以使用适用于你的包管理器的命令进行安装。例如,在Debian或Ubuntu上,你可以使用以下命令安装:

sudo apt-get install screen

启动screen很简单,只需在终端中输入screen并按Enter键即可启动一个新的会话。

在 CentOS 系统中源码安装操作命令如下:

wget https://ftp.gnu.org/gnu/screen/screen-4.8.0.tar.gz
mkdir build && cd build
../configure
make
make install

2. 基本screen用法: 在启动screen后,你将进入一个新的终端会话。在这个会话中,你可以执行所有常规的终端命令。以下是一些常用的screen命令:

  • 分离会话:你可以使用快捷键Ctrl + A,然后按d键,来分离当前的screen会话,这样你可以暂时离开终端而不中断正在运行的任务。

  • 查看会话列表:使用以下命令可以列出所有正在运行的screen会话:

screen -ls

screen --list
  • 重新连接会话:当你重新连接服务器时,可以使用以下命令重新连接到之前分离的screen会话:

screen -r <会话ID>

其中<会话ID>是之前分离会话的ID,你可以从screen -ls命令中获取。

  • 新建窗口:在screen会话中,你可以通过按Ctrl + A,然后按c键来创建一个新的虚拟终端窗口。

  • 切换窗口:使用Ctrl + A,然后按n(下一个窗口)或p(上一个窗口)来在多个窗口间切换。

  • 关闭窗口:在窗口内执行exit命令来关闭窗口。

3. 高级screen用法: 除了基本用法之外,screen还提供了一些更高级的功能:

  • 多窗口滚动:按Ctrl + A,然后按Esc键,即可进入复制模式,然后你可以使用方向键或Vi编辑器风格的快捷键来滚动查看终端输出。

  • 窗口命名:你可以为每个screen窗口设置自定义名称,这样更容易识别它们。在窗口内,使用Ctrl + A,然后按A键来为当前窗口重命名。

  • 配置screenscreen可以通过一个配置文件(~/.screenrc)进行自定义设置,包括定义快捷键、默认窗口、状态栏等等。

4. 退出screen会话: 要完全退出screen会话并关闭所有窗口,可以执行以下命令:

exit

如果只想关闭当前窗口,可以使用Ctrl + D键。

5. 暂时禁用会话: 有时,你可能想临时暂停screen会话,而不是完全分离它。你可以按Ctrl + A,然后按z键来暂时禁用screen会话。要恢复会话,可以使用fg命令。

6. 多用户共享会话: screen支持多用户共享会话的功能。这在团队协作或技术支持方面非常有用。一个用户可以启动一个screen会话,并允许其他用户加入和参与该会话。其他用户可以使用以下命令加入一个已经运行的会话:

screen -x <会话ID>

7. 设置状态栏: screen允许你在状态栏中显示有用的信息,如当前时间、主机名、窗口列表等等。你可以编辑~/.screenrc配置文件来自定义状态栏。例如,要在状态栏中显示窗口号和标题,你可以添加以下行:

hardstatus alwayslastline
hardstatus string '%{= kw}[ %{= kb}%H%{= kw} ][ %{= kw}%?%-Lw%?%{= kW}%n*%f %t%?%?%{= kw}%?%+Lw%?%?%= %{= kw} ][ %{= kc}%Y-%m-%d %c %{= kw}]'

8. screen命令参数: screen命令还支持一些有用的参数,可以根据需求使用:

  • -S <会话名称>:指定会话名称,用于标识和重连。

  • -dmS <会话名称>:以后台模式启动一个新会话,无需立即连接。

  • -r <会话名称>:重连到指定名称的会话。

9. screen快捷键列表: 以下是一些常用的screen快捷键列表,它们可以在screen会话中使用:

  • Ctrl + A, c:创建新窗口

  • Ctrl + A, n:切换到下一个窗口

  • Ctrl + A, p:切换到上一个窗口

  • Ctrl + A, A:为当前窗口重命名

  • Ctrl + A, d:分离会话

  • Ctrl + A, k:关闭当前窗口

  • Ctrl + A, [Enter]:进入复制/滚动模式

  • Ctrl + A, Esc:进入复制/滚动模式(Vi编辑器风格)

  • Ctrl + A, z:暂时禁用会话

  • Ctrl + A, S:水平拆分当前窗口

  • Ctrl + A, |:垂直

拆分当前窗口

  • Ctrl + A, Tab:在拆分窗口之间切换

screen是一种非常强大且灵活的工具,特别适合在终端中进行长时间的任务和多任务管理。

补充:

  • Screen 命令的常见用途:

  1. 多窗口操作:通过 Screen 命令,你可以在同一个终端窗口中创建多个窗口,并在这些窗口中同时运行不同的应用程序,而不需要打开多个终端窗口。

  2. 多任务操作:在一个窗口中使用 Screen 命令可以实现多任务操作,比如同时运行多个进程或命令等。

  3. 断线恢复:如果你在使用远程连接时突然断开连接,那么在 Screen 命令下运行的任务仍然可以继续执行,并且在重新连接后可以通过 Screen 命令重新打开之前的会话,恢复之前的工作状态。

  4. 后台运行:Screen 命令可以将一个命令或脚本放到后台运行,而不需要打开一个新的终端窗口或使用 nohup 命令。

  5. 共享会话:使用 Screen 命令可以与其他用户共享一个会话,这对于协同工作或者远程技术支持非常有用。

  • screen 创建的虚拟终端,有2种工作状态:

     

    • Attached:表示当前screen正在作为主终端使用,为活跃状态。

    • Detached:表示当前screen正在后台使用,为非激发状态。

  • screen 命令格式与常见参数:

    screen [OPTIONS] [ CMD [ ARGS ] ]
    screen -r [[PID.]TTY[.HOST]]
    screen -r SESSIONOWNER/[[PID.]TTY[.HOST]]

    -A
    将所有窗口都调整为目前终端机的大小
    -d, -D [PID.TTY.HOST]
    分离指定的 screen 会话
    -h NUM
    将历史记录回滚缓冲区指定为 NUM 行
    -m
    即使目前处于 screen 会话,仍强制建立新的 screen 会话
    -r [PID.TTY.HOST]
    -r SESSIONOWNER/[PID.TTY.HOST]
    恢复离线的 screen 会话
    -R
    先试图恢复离线的会话,若找不到离线的会话,再建立新的 screen 会话
    -s PROGRAM
    指定建立新窗口时所要执行的 Shell,用以取代环境变量 SHELL 表示的 Shell
    -S SESSIONNAME
    创建一个指定名称的新 session
    -v
    显示版本信息
    -x
    恢复之前离线的 screen 会话
    -ls, --list
    显示目前所有的 screen 会话
    -wipe [MATCH]
    检查目前所有的 screen 会话,并删除已经无法使用的 screen 会话
posted on 2024-03-01 17:16  websec80  阅读(24)  评论(0编辑  收藏  举报