LINUX远程断开连接处理方法分享 (linux 远程断开)

Linux操作系统在网络管理中的表现非常出色,因此在企业、云计算这些领域得到广泛应用。但是,在远程连接Linux服务器时,有时会遇到突然断开连接的情况,如果不能及时处理,可能会造成不可预测的后果。本文将介绍几种处理Linux远程断开连接的方法,旨在帮助广大管理员更好的管理和维护服务器。

一、SSH超时断开连接

SSH连接是Linux系统中最常用的远程连接方式,但是经常会出现远程连接突然断开的情况,这种现象多半是因为超时问题导致的。针对这种问题,可以通过修改SSH服务端的配置文件/etc/ssh/sshd_config来解决。

1. 打开/etc/ssh/sshd_config配置文件

vim /etc/ssh/sshd_config

2. 修改ClientAliveInterval和ClientAliveCountMax参数值

ClientAliveInterval参数表示客户端发送心跳包的间隔时间,单位为秒。如果一段时间内没有收到任何响应,就会断开连接。通常情况下,这个值默认为0表示不发送心跳包。修改此参数值可以让服务器检测到客户端是否在活动状态,防止连接因为长时间没有活动而被主动断开。

ClientAliveCountMax参数表示SSH服务器发送心跳消息的次数。如果次数达到设定值就会主动断开连接。如果你只修改了ClientAliveInterval值,而没有修改ClientAliveCountMax值,那么就会出现SSH连接虽然没超时,但是连接已经被断开了的情况。

3.重启SSH服务

修改配置文件后,需要重新启动SSH服务使之生效。

systemctl restart sshd

二、使用Tmux断开连接

Tmux是一个终端多会话管理工具,它可以在一个终端窗口或多个终端窗口中创建多个会话。如果在tmux会话中,连接突然中断了,你可以用tmux中的detach命令来让你的终端会话在后台运行,以避免中断。

1. 使用Tmux创建一个终端窗口

在Linux中使用tmux命令创建一个新的终端窗口,非常简单:

tmux new -s

也可以使用以下的命令,指定一个会话名字:

tmux new-session -s

2. 分离tmux会话

当您的tmux会话在运行时断开连接时,您需要分离这个会话以保持其在后台运行。可以按Ctrl+b和d键组合分离tmux会话。

3. 重新连接到tmux会话

当您的tmux会话分离时,您可以使用以下命令重新连接会话:

tmux attach-session -t

三、使用Screen断开连接

Screen与tmux有些相似,它也是一个终端管理工具,可以将多个命令行会话连接在一起,从而将它们作为单个程序运行。如果您在使用Screen时,连接突然中断了,您仍然可以重新连接到它。

1. 使用Screen创建一个新的终端窗口

在Linux中使用screen命令创建一个新的终端窗口,非常简单:

screen -S

2. 退出Screen会话

当您的Screen会话运行时,您可以键入Ctrl-a和d键组合来分离终端,并在后台运行。

3. 重新连接到Screen会话

当您的Screen会话分离时,您仍然可以重新连接到它。使用以下命令恢复之前的Screen会话:

screen -r

四、使用nohup持续运行命令

如果你需要在Linux服务器上长时间运行一个命令,例如备份或迁移文件,可以使用nohup来实现,nohup命令的作用是使命令进程长时间在后台运行,即使关闭了终端也不会终止命令。

1. 使用nohup命令运行一个命令

例如,如果您想在Linux服务器上运行一个脚本,您可以使用以下命令:

nohup ./backup.sh &

nohup命令会将执行的内容发送到文件nohup.out中,保留后台运行状态。

2. 使用”jobs”命令查看运行状态

使用”jobs”命令可以查看当前运行的进程的状态。如果nohup命令创建的进程正在运行,你就可以直接在后台操作了。

3. 使用”disown”命令长期运行命令

如果您需要使nohup进程在后台执行并且尝试关闭shell(如通过SSH远程终端)时不会被关闭,您需要使用disown &命令,这会话解除nohup命令与shell的联系使它可以独立执行。

nohup ./backup.sh &

disown %

相关问题拓展阅读:

linux 远程主机后台运行任务 挂起脚本

背景

:工作需要,需要远程控制主机使其断开Xshell后也能一直运行。

关键字

:& ,nohup,脚本挂起。

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。

键入Ctrl + C,发出SIGINT信号陵世,程序会继续运行

方法一缺斗、输入命令:jobs

方法二:输入命令:ps

fg、bg、jobs、&、nohup、ctrl+z、ctrl+c

命令

加在一个命令的最后,可以把这个命令放到后台执行,如

可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

查看当前有多少在后台运行的命令

jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。

将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。

法子1:通过jobs命令查看job号(假设为num),然后执行kill %num

法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid

前台进程的终止:Ctrl+c

如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需伏汪磨要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

如上所示:

nohup 和 & 组合了后台运行程序。

可以输出到 out.log保存程序输出,也可以输出到/dev/null 即空设备,不保存输出。

上面三种方式无论在nohup.out 或test.out都看不到数据结果,这是因为python执行有缓存输出

解决

新的接口接入查看程序

使用&后台运行程序:

结果会输出到终端

使用Ctrl + C发送SIGINT信号,

程序免疫

关闭session发送SIGHUP信号,

程序关闭

使用nohup运行程序:

结果默认会输出到nohup.out

使用Ctrl + C发送SIGINT信号,

程序关闭

关闭session发送SIGHUP信号,

程序免疫

平日线上经常使用nohup和&配合来启动程序:

同时免疫SIGINT和SIGHUP信号

同时,还有一个更佳实践:

不要将信息输出到终端标准输出,标准错误输出,而要用日志组件将信息记录到日志里

nohup和&究竟有啥区别

关于linux 远程断开的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » LINUX远程断开连接处理方法分享 (linux 远程断开)