首页 帮助中心 新加坡高防服务器 断开连接后保持远程SSH会话和进程运行的常见方法
断开连接后保持远程SSH会话和进程运行的常见方法
时间 : 2025-01-06 15:41:15 编辑 : 华纳云 阅读量 : 73

SSH/Shell都属于支持远程访问其他系统上其他用户的方法,在专业术语中,通过SSH连接到远程系统并执行命令时,会创建一个伪终端(pseudo-terminal),将其附加到远程用户的登录shell。当SSH会话结束或超时,伪终端会发送SIGHUP信号,导致所有相关作业被终止。为了在断开连接后保持SSH会话活跃,可以采用五种方法来避免SIGHUP信号的发送,从而保持作业运行。

当配置忽略这个信号的作业才会在会话终止后继续存在。Linux系统中,可以通过多种方式让这些作业在用户注销/会话终止后仍在远程服务器/任意机器中继续运行。

Linux上进程有类型有正常进程,孤儿进程、守护进程。正常进程就是那些有会话生命周期的进程,在会话期间作为前台进程启动,在特定时间跨度/会话注销时结束。这些进程的所有者属于系统任何有效用户,如root。

孤儿进程是指那些原本由父进程创建,但后来因为父进程终止而失去父进程的进程。在这种情况下,系统的init进程(进程ID为1)会成为孤儿进程的新父进程。Init进程负责监控这些孤儿进程,直到它们结束执行。

这些是被设计为独立运行的进程,称为守护进程。它们被特意配置为在启动后与控制终端断开连接,以便在后台持续运行,直到任务完成或出现错误。这些进程的父进程会故意结束,让子进程继续在后台执行。

想要断开连接后还可以实现SSH会话运行的方法较多,如可以通过screen。screen属于Linux的一个文本窗口管理器,支持用户同时管理多个终端会话,在会话之间切换,记录下屏幕正在运行的会话,还可以实现任意时间恢复会话,不会出现会话注销/终端关闭的情况。

screen会话启动后可以从控制终端分离在后台中运行,也可以随时甚至在任意地方恢复。只要screen中启动会话,在需要时把其从伪终端/控制终端中分离并注销。当需要时候再重新登录和恢复会话。

输入“screen”命令会新启动一个screen会话,用户可以创建新窗口、在窗口之间相互移动、锁定屏幕及执行在普通终端上执行更多操作:

$ screen

当屏幕会话启动,可以运行任何命令并通过分离会话来保持会话运行。如果想退出远程会话,但又想保持在该机器中创建的会话处于活动状态,可以把屏幕和终端分离,实现不被中断控制。用“Ctrl+a”立即按下“d”,看屏幕出现分离消息就可以安全注销保持会话。

如果需要恢复注销前离开的独立屏幕会话,只要重新登录远程,再输入screen r打开一个屏幕,如果需要打开多个屏幕运行:

$ 屏幕 -r <pid.tty.host>

Tmux可以用来替代screen软件,Tmux具备大部分screen功能还额外增加了其他强大附加功能,比如支持多个窗口之间水平或垂直分割窗格、调整窗格大小、会话活动监视、使用命令行模式编辑脚本等。可以在Linux中新打开一个窗口执行:

$ tmux

在终端上执行操作后就可以把该会话和控制终端分离。便于进入后台后可以安全注销。 tmux 会话上运行“tmux detach”,也可以使用快捷方式(Ctrl+b then d)。此后,您的当前会话将被分离,您将返回到终端,然后可以安全地注销。

$ tmux detach

 

华纳云 推荐文章
Linux中安装进度查看器的一般流程 2025年Linux媒体服务器软件Top3 Linux SSH免密登录设置教程 2025年Linux免费磁盘工具八大推荐 Linux中的权限管理中su与sudo的比较 Linux中检查内存使用情况free命令的用法 当CentOS正式停产后推荐替代发行版有哪些 Linux系统中禁用root帐户常用方法 Linux服务器中阻止USB存储设备的常用方法 监控 Linux 网络磁盘运行时间负载及RAM 的 Shell 脚本
客服咨询
7*24小时技术支持
技术支持
渠道支持