博客
关于我
linux 技巧:使用 screen 管理你的远程会话
阅读量:790 次
发布时间:2023-02-01

本文共 1940 字,大约阅读时间需要 6 分钟。

在Linux/Unix环境中,关闭SSH终端窗口或断开网络连接会导致正在运行的程序或会话被终止的原因在于SIGHUP(挂断信号)。这种信号默认的行为是终止当前会话的前台进程组,从而导致远程会话被中断。在许多场景中,尤其是在执行长时间运行的任务(如系统备份、文件传输等)时,这种行为会造成不小的麻烦。要避免这种问题,我们可以通过使用screen或者类似的终端多路复用工具来管理远程会话,确保程序能够继续运行且不会因信号而被终止。

SIGHUP信号的作用

在POSIX.1规范下,当终端接口检测到网络连接断开或控制终端关闭时,会向会话期的控制进程发送SIGHUP信号。控制进程是会话的首进程,其关注的是与终端交互的前台进程组。默认情况下,SIGHUP信号会导致控制进程终止,从而终止整个会话期。这个机制可能导致正在运行的程序或会话被立即终止,尤其是在长时间运行的任务中,这种中断可能会带来不稳定性或数据丢失。

screen:终端多路复用的强大工具

为了避免因SIGHUP信号中的断开而导致的程序中断,我们可以使用screen(GNU Screen)这个强大的终端多路复用工具。screen允许我们在一个物理终端或用户界面上创建多个独立的窗口,就像在使用多个SSH终端窗口一样,但又可以管理在后台运行的会话。screen提供了多种功能,可以满足我们在远程环境中管理长时间运行任务的需求。

使用screen管理远程会话

方法一:直接使用screen启动新窗口

screen创建一个全屏的终端窗口,然后在其中执行所需的任务。例如:

screen

这将打开一个全屏的 bash shell窗口。你可以在其中使用任何命令或脚本,如:

screen ftp files.example.com

如果你想将窗口切换到另一个任务(如编辑文档),你可以在任何时候键入 C-a c(Ctrl+a,a)切换到新窗口。

方法二:指定命令并后台运行

也可以通过screen直接指定要执行的命令并后台运行:

screen mycommand &

这将启动mycommand命令,并将其输出重定向到屏幕上。你可以在同一时间继续执行其他任务。

方法三:配置screen以启动多个窗口

如果你需要在同一个screen会话中管理多个任务,可以在screen窗口中使用快捷键切换至新的窗口。例如:

  • 创建一个窗口并运行ftp:

    screen ftp files.example.com
  • 进入ftp窗口后,按下 C-a c(Ctrl+a,a)创建一个新窗口,并运行top:

    C-a cscreen top
  • 退出ftp窗口后,键入 C-a c切换回top窗口,再键入 C-a d暂时断开screen会话。

  • Screen的高级功能

    screen提供了强大的定制能力,可以满足更复杂的需求:

  • 定义命令字符和转义字符:可以通过-e选项设置自己的命令字符和转义字符,例如:

    screen -e^t

    这会将Ctrl+t视为命令字符,t为转义字符。

  • 输入加密:可以选择是否启用输入加密,确保远程会话的安全性。

  • 多用户模式:screen默认是单用户模式,但可以通过配置文件开启多用户模式,以支持多个用户同时连接到同一会话。

  • 会话保存和恢复:可以将screen会话暂时断开,而不终止运行中的程序。断开后,可以通过screen -r重新连接会话。

  • ###.screen的常用命令

    • screen -ls:列出所有可用的screen会话。
    • screen -r [pid].tty.host:重新连接特定的screen会话。
    • screen -d:断开当前screen会话。
    • screen -m:启动一个以断开模式开始的screen会话,可以后续重新连接。
    • screen -w:启动一个全屏的screen窗口。

    作用范围

    screen最主要的作用是为我们提供一个能够在多个进程之间切换的终端窗口管理器。这类似于传统的SSH终端,但带有更多功能。特别是在远程备份、文件传输等任务中,screen能够帮助我们避免因网络中断而中断任务的烦恼。

    screen的配置和优化

    为了充分利用screen的功能,可以参考其文档进行配置。screen的默认配置通常已经足够,即$HOME/.screenrc,但你可以根据需求进行定制。例如,可以配置screen以自动启动特定的窗口或设置默认的显示选项。

    结论

    使用screen来管理远程会话可以有效避免因SIGHUP信号而导致的程序终止问题。无论是需要长时间运行的批处理任务,还是需要同时管理多个远程任务的交互式工作,screen都可以提供灵活而强大的解决方案。仅仅需要记住screen的快捷键和命令,就能充分发挥其潜力。

    转载地址:http://elwfk.baihongyu.com/

    你可能感兴趣的文章
    linux 的 最大10个文件
    查看>>
    Linux 的NFS服务的配置
    查看>>
    linux 的sh脚本中的-p、2>&1 &、$!、[]、-f、grep、awk、-z 相关的操作
    查看>>
    linux 的vi vim 的常用的基本命令
    查看>>
    Linux 的性能调优的思路
    查看>>
    Linux 的性能调优的思路
    查看>>
    Linux 的文本搜索命令 grep
    查看>>
    Linux 的账号与群组管理
    查看>>
    linux 目录&基础命令
    查看>>
    Linux 目录简介
    查看>>
    Linux 目录结构
    查看>>
    Linux 硬链接和软链接到底是什么?怎么理解?
    查看>>
    Linux 磁盘分区详解
    查看>>
    Linux 磁盘划分(3分钟看懂)
    查看>>
    Linux 磁盘和文件系统管理1
    查看>>
    Linux 磁盘和文件系统管理2
    查看>>
    Linux 磁盘满了不用慌,这几个命令在手不断梭哈就好
    查看>>
    Linux 磁盘爆满【解决办法】
    查看>>
    Linux 磁盘管理
    查看>>
    Linux 磁盘管理及监控与性能评估
    查看>>